[Bug]Skia的SK_GL沒有定義,但是GrContext::MakeGL需要使用

正在生成暱稱...發表於2020-12-28

專案場景:

因為無線投屏專案的反向傳屏OPS和Mac端的時候,需要顯示滑鼠,當前方案是在Native層將座標通過反射發到Java層進行繪製,由於這是一個高頻呼叫的方法(雖然我知道JVM對高頻的反射會)。所以,打算編譯個Skia,自己在Native層畫一下簡單圖形。

問題描述:

編譯完Skia的動態連結庫,把標頭檔案CV到專案裡,使用GrContext::MakeGL時發現這個函式用不了。

原因分析:

檢視了下標頭檔案,使用SK_GL巨集定義進行選擇編譯了,這部分程式碼就沒包進來。

解決方案:

還是按解決過程重現下吧:

  1. 在編譯自己的庫的時候,加上這個巨集定義
    —> 這當然不行,這部分的實現程式碼在libskia.so裡(先這麼認為,可能放在其他連結庫裡,但這並不重要),畢竟實際上h只是幫助查詢的,編譯成目標檔案.o,連結進elf的是.c/.cpp
    <不過,話說回來,如果是你自己當前原始碼裡有這種巨集定義操作,保證其在該標頭檔案呼叫前,加上需要的巨集定義是可以解決的>
  2. 看了下BUILD.gn,這不是有個skia_use_gl可以配置的嘛

相關文章