OpenGL中是否有办法在VRAM中使用多个独立纹理渲染顶点缓冲区而无需手动绑定它们(即将控制权返回到CPU)?
编辑:所以我正在渲染具有多个纹理的对象,方法是使用单个纹理渲染,绑定新纹理,然后重复,直到完成所有操作。这很慢,需要将控制权返回给CPU并为每个纹理进行系统调用。有没有办法避免这种切换,并使着色器可以使用多个纹理根据顶点数据进行选择?
答案 0 :(得分:1)
正如对问题的评论中所提到的,glActiveTexture
是关键 - GLSL中的采样器绑定到纹理单元(例如GL_TEXTURE0
),而不是特定的纹理目标(例如GL_TEXTURE2D
),因此,您可以在GL_TEXTURE2D
下绑定glActiveTexture(GL_TEXTURE0)
纹理,在glActiveTexture(GL_TEXTURE1)
下绑定另一个纹理,然后将您的GLSL sampler2D
值绑定为0,1等。(注意:执行< strong>不使您的sampler2D
值GL_TEXTURE0
,GL_TEXTURE1
等等 - 来自GL_TEXTURE0
的抵消。