[英]OpenGL textures into AHardwareBuffer
我在 Android 中遇到了AHardwareBuffer
。 我想使用 AHardwareBuffer 來存儲紋理,以便我可以在沒有 OpenGL 上下文的不同線程上使用它們。 目前,我正在做以下事情:
GL_TEXTURE_2D
。EGLClientBuffer
創建EGLClientBuffer
和EGLImageKHR
。 附加 EGLImage 作為紋理目標。glFramebufferTexture2D
將其綁定到紋理。tex
),我使用着色器將它渲染到AHardwareBuffer
但是,我想離開,這樣我就不需要將它重新渲染到硬件緩沖區,而是直接將紋理數據存儲到硬件緩沖區。
我正在考慮使用glCopyTexImage2d
來做這件事。 這很好嗎,它會起作用嗎?
同時,(一個愚蠢的問題,但我不能克服它),如果我附上我EGLImage
這是從Hardwarebuffer到GL_TEXTURE_2D
,並確定使用glTexImage2D,豈不存儲紋理這是一個參數的數據紋理glTexImage2D
到hardwarebuffer?
我使用glSubTexImage2D
解決了這個問題。
首先創建一個 opengl 紋理並將其綁定到GL_TEXTURE_2D
。 然后使用glEGLImageTargetTexture2DOES
綁定紋理EGLImageKHR
從EGLClientBuffer創建。 這類似於glTexImage2D
。 任何對glTexImage2D
后續調用都會破壞紋理和 EGLClientBuffer 之間的關系。
參考: https : //www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt
但是glSubTexImage2D
保留了這種關系。 因此,我們可以使用此 API 加載數據並將其存儲在AHardwareBuffer
。
PS:這可能是我的一種方式,如果還有其他方式,我會接受答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.