如何检查OpenGL ES中是否绑定了纹理

时间:2010-04-23 09:49:25

标签: iphone opengl-es

在OpenGL ES中,有没有办法检查当前是否绑定了纹理,以避免glBindTexture()中状态更改的开销? glAreTexturesResident()似乎是我想要的,但它没有在iPhone的ES1 / ES2实现中定义。

2 个答案:

答案 0 :(得分:0)

GLES2提供了glActiveTexture(),但是确定你之前是否绑定了特定纹理的最简单方法是简单地跟踪你最近绑定的纹理,如果要渲染纹理,则只调用glBindTexture是不同的。

您可以考虑的另一件事是通过纹理句柄对对象进行排序,这将进一步最小化您的状态更改,因为您可以确保在匹配纹理状态的连续块中渲染所有基元。

答案 1 :(得分:0)

    GLint textureBinding;
    glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding);

glActiveTexture()返回活动纹理单元而不是绑定。