簡體   English   中英

Android:使用OpenGL雙重渲染到SurfaceTexture

[英]Android: Dual Pass Render To SurfaceTexture Using OpenGL

為了在SurfaceTexture上執行高斯模糊,我正在執行兩次通過渲染,這意味着我將紋理通過一個着色器(水平模糊),然后通過另一個着色器(垂直模糊)。

我了解這背后的理論:將第一個紋理渲染到FBO,然后將第二個紋理渲染到SurfaceTexture本身。

有一些示例,但是似乎都不適用,因為SurfaceTexture在glBindTexture中使用GL_TEXTURE_EXTERNAL_OES作為目標,而不是GL_TEXTURE_2D。 因此,在對glFramebufferTexture2D的調用中,GL_TEXTURE_2D不能用作textarget,並且我認為GL_TEXTURE_EXTERNAL_OES不能在此調用中使用。

誰能建議一種方法兩次渲染紋理,最終渲染到SurfaceTexture?

重要更新:我正在使用SurfaceTexture,因為這是在表面上播放的視頻的動態模糊。

編輯:這個問題被我誤解了。 SurfaceTexture不是顯示元素。 相反,它從表面接收數據,並附加到GL_TEXTURE_EXTERNAL_OES。

謝謝。

渲染到SurfaceTexture在這里看起來很奇怪。 SurfaceTexture的重點是將發送到Surface的所有內容轉換為GLES“外部”紋理。 由於使用GLES進行渲染,因此可以使用FBO進行第二遍渲染到GL_TEXTURE_2D中。

從攝像機或視頻解碼器接收幀時,將使用SurfaceTexture,因為其來源通常是YUV。 “外部”紋理格式允許更大范圍的像素格式,但是限制了紋理的使用。 如果您的目標是創建GLES紋理,則使用GLES渲染為SurfaceTexture沒有任何價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM