具有多个纹理的OpenGL渲染

时间:2014-08-18 23:34:33

标签: opengl

OpenGL中是否有办法在VRAM中使用多个独立纹理渲染顶点缓冲区而无需手动绑定它们(即将控制权返回到CPU)?

编辑:所以我正在渲染具有多个纹理的对象,方法是使用单个纹理渲染,绑定新纹理,然后重复,直到完成所有操作。这很慢,需要将控制权返回给CPU并为每个纹理进行系统调用。有没有办法避免这种切换,并使着色器可以使用多个纹理根据顶点数据进行选择?

1 个答案:

答案 0 :(得分:1)

正如对问题的评论中所提到的,glActiveTexture是关键 - GLSL中的采样器绑定到纹理单元(例如GL_TEXTURE0),而不是特定的纹理目标(例如GL_TEXTURE2D),因此,您可以在GL_TEXTURE2D下绑定glActiveTexture(GL_TEXTURE0)纹理,在glActiveTexture(GL_TEXTURE1)下绑定另一个纹理,然后将您的GLSL sampler2D值绑定为0,1等。(注意:执行< strong>不使您的sampler2DGL_TEXTURE0GL_TEXTURE1等等 - 来自GL_TEXTURE0抵消