繁体   English   中英

在iPhone的opengles上优化纹理交换

[英]Optimizing texture swapping on opengles for the iPhone

我有2个1024x1024的Sprite工作表,其中一个包含多个480x320背景图像,另一个包含各种较小的元素作为实体和接口。 每当我进入一个必须显示两种纹理的子画面(迫使我每帧重新绑定两次,界面纹理-> bg纹理->界面纹理)时,帧速率都会像岩石一样下降。

- (void)setCurrentTexture:(int)texID{
 if(currentTex == texID)
  return;
 else
  currentTex = texID;

 // Bind the texture name. 
 glBindTexture(GL_TEXTURE_2D, [Graphics getTexture:texID]);
 // Speidfy a 2D texture image, provideing the a pointer to the image data in memory
 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, [Graphics getTexWidth:texID], [Graphics getTexHeight:texID], 0, GL_RGBA, GL_UNSIGNED_BYTE, [Graphics getTexData:texID]);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}

我交换纹理的方式有问题吗?

编辑:我已经删除了一半的状态更改。 删除以上3个中的任何一个都会导致我的多边形没有任何纹理(即显示为白色)。 最大的打击因素是glTexImage2D ...但是试图一次将其设置在其他地方(例如在初始化时)最终导致我的模型/四元组根本没有纹理。

除非要更新纹理中的数据,否则在应用程序启动时,每个纹理仅应调用一次glTexImage2D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM