绑定GLES纹理从GL_TEXTURE_EXTERNAL_OES
问题描述:
我有一个质地GL_TEXTURE_2D,势必GL_TEXTURE_EXTERNAL_OES目标绑定GLES纹理从GL_TEXTURE_EXTERNAL_OES
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textures[0]);
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
怎样才能重新绑定到GL_TEXTURE_2D目标? GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
提供了错误
答
你不能。纹理目标是纹理对象的基本部分。如果你有一个external texture,你不能对待它像一个GL_TEXTURE_2D
。完全一样。
这意味着如果要绑定它,则必须将其绑定为GL_TEXTURE_EXTERNAL_OES
纹理。如果您想在采样器中使用它,则该采样器必须是samplerExternalOES
而不是sampler2D
(并且着色器必须启用适当的扩展名)。等等。
如何使用该纹理的内容?也许我可以将内容复制到另一个纹理,即GL_TEXTURE2D? – Fr0stDev1
因此,没有任何方法将纹理的内容绑定到2D上?也许我可以以某种方式复制它? – Fr0stDev1
@ Fr0stDev1:“*我怎样才能使用那个纹理的内容?*”你在我的帖子中看过“你不能”之后的任何内容吗?除非特别需要* 2D纹理,否则可以像使用其他纹理目标一样使用外部纹理。它甚至有一个伴随纹理访问函数的相关采样器,以便您可以在着色器中读取它。同样,你可以将它附加到一个FBO。它仍然是一种质地;它只是不是目标'GL_TEXTURE_2D'的纹理。唯一的困难是你的着色器需要专门编写才能读取。 –