1
大多數到目前爲止我已知道使用MediaCodec
生成視頻代碼或者使用純OpenGL
或鎖定從MediaCodec生成表面畫布和編輯它應用片段着色器。我可以混合使用嗎?上)用於lockCanvas(MediaCodec生成的表面
例如,如果我生成後者的方式我的框架,是有可能在之前或編輯表面的帆布後MediaCodec產生表面施加一個片段着色器?
大多數到目前爲止我已知道使用MediaCodec
生成視頻代碼或者使用純OpenGL
或鎖定從MediaCodec生成表面畫布和編輯它應用片段着色器。我可以混合使用嗎?上)用於lockCanvas(MediaCodec生成的表面
例如,如果我生成後者的方式我的框架,是有可能在之前或編輯表面的帆布後MediaCodec產生表面施加一個片段着色器?
表面是生產者 - 消費者對的生產者端。一次只能連接一個製作人,因此您不能在同一個Surface上使用GLES和Canvas,而無需斷開連接並連接另一個。
最後我檢查了(棒棒糖)沒有辦法斷開Canvas。所以來回切換是不可能的。
你需要做的是:
glTexImage2D()
將渲染的位圖上傳到GLES。與上傳相關的開銷是不可避免的,但請記住,您可以以較小的分辨率繪製位圖並讓GLES將其擴展。由於您使用的是位圖而不是Surface,因此無需爲每次更新重新繪製整個屏幕,因此有機會減少Canvas渲染開銷。可能是MediaCodec,SurfaceView,表面紋理等
感謝您的答覆 - 不管什麼表面被連接到
上述所有持有。但是,只有一個問題:我怎樣才能用GLES來實現位圖?用所述位圖紋理矩形並在表面上繪製矩形? – Gensoukyou1337
是的。您可以在Grafika中找到示例(https://github.com/google/grafika);只需查找FullFrameRect的用法。 – fadden