关于OpenGLES中的纹理切换

Shi*_*iva 2 c c++ iphone opengl-es

切换纹理时,为什么速度慢?


代码 - 1

 glBindTexture(GL_TEXTURE_2D,texId01);

 glDrawArray(glDrawArrays(GL_TRIANGLES,0,4);

 glBindTexture(GL_TEXTURE_2D,texId02);

 glDrawArray(glDrawArrays(GL_TRIANGLES,0,4);


代码 - 2

 glBindTexture(GL_TEXTURE_2D,texId01);

 glDrawArray(GL_TRIANGLES,0,4);

 glDrawArray(GL_TRIANGLES,0,4);


为什么这些速度不同?

zmi*_*pie 7

对于PowerVR硬件上的OpenGLES,appraranty以及其他人来说,上述答案是错误的.我已经偶尔发现过这种"纹理绑定很慢"的神话,但是没有一个性能文档(Apple或Imagination Technologies)提到这一点.

所以我直接用Imagination Technologies检查了这个,他们的答案是:

除了我们在文档中提到的内容之外,使用glBindTexture不会对性能产生任何影响,但是开销很小但不是很大.有些信息似乎提到纹理切换时使用glTexture2D重新加载纹理,这是一个缓慢的调用,应该只在首次初始化应用程序时完成