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

4
在OpenGL ES中,有没有一种方法可以检查纹理是否已经绑定,以避免在glBindTexture()中进行状态更改的开销? glAreTexturesResident()似乎是我想要的,但它在iPhone的ES1 / ES2实现中未定义。
2个回答

2
    GLint textureBinding;
    glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding);

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


0
GLES2提供了glActiveTexture()函数,但是最简单的方法是跟踪最近绑定的纹理,并且仅在要呈现的纹理不同时调用glBindTexture()函数,以此来确定之前是否绑定了特定的纹理。
另一个需要考虑的事情是按纹理句柄对对象进行排序,这将进一步减少状态更改,因为您可以确信以匹配纹理状态的连续块渲染出所有基本图形。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接