[英]About the texture switch in OpenGLES
切换纹理时,为什么速度慢?
代码 - 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);
为什么这些速度不同?
对于PowerVR硬件上的OpenGLES,appraranty以及其他人来说,上述答案是错误的。 我已经偶尔发现过这种“纹理绑定很慢”的神话,但是没有一个性能文档(Apple或Imagination Technologies)提到这一点。
所以我直接用Imagination Technologies检查了这个,他们的答案是:
除了我们在文档中提到的内容之外,使用glBindTexture不会对性能产生任何影响,但是开销很小但不是很大。 有些信息似乎提到纹理切换时使用glTexture2D重新加载纹理,这是一个缓慢的调用,应该只在首次初始化应用程序时完成
因为驱动程序必须进行一些内部验证,以检查一切是否符合预期,所以绑定纹理是一项昂贵的操作。
考虑到这一点,您应该最小化纹理绑定操作。 执行此操作的常用方法是在绘制时按纹理(以及着色器,如果GL ES 2.0)对基元进行排序。
湿婆,bhai太阳..我知道你在一些游戏中有所收获
为什么你要提出这样的问题,...如果它真的很慢,你会能够优化吗,比如因为司机等而缓慢..?
尝试使用单个大纹理使用单独的缓冲对象来存储你想要在这个纹理中使用的每个图像的坐标,就是它...即使纹理切换很慢,你仍然领先,因为你使用单一纹理和事实你使用缓冲区......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.