簡體   English   中英

OpenGL 紋理到 AhardwareBuffer

[英]OpenGL textures into AHardwareBuffer

我在 Android 中遇到了AHardwareBuffer 我想使用 AHardwareBuffer 來存儲紋理,以便我可以在沒有 OpenGL 上下文的不同線程上使用它們。 目前,我正在做以下事情:

  • 生成紋理並將其綁定到GL_TEXTURE_2D
  • EGLClientBuffer創建EGLClientBufferEGLImageKHR 附加 EGLImage 作為紋理目標。
  • 生成一個 FBO 並使用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.

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