最快的方式渲染480 x 320背景作为iPhone OpenGL ES纹理

Kar*_*arl 4 iphone graphics performance textures opengl-es

我需要在OpenGL ES中显示480 x 320背景图像.事情是,当我使用512 x 512纹理大小时,我在iPhone中经历了一点慢.所以我找到了在OpenGL ES中渲染iPhone分辨率大小背景的最佳案例.在这种情况下,我应该如何切片背景以获得最佳性能?我主要担心的是速度.我应该在这里使用256 x 256或其他纹理尺寸吗?

小智 7

首先,您是否在模拟器上测试性能?如果是这样,请立即停止并在实际硬件上进行尝试.模拟器上的性能测试毫无价值.

有了这个,我不确定你已经实施了多少这些,所以如果我给你你已经知道的东西,我道歉:

  • 如果您每帧都在绘制全屏不透明背景,则可能不需要GL_CLEAR呼叫
    • gmaclachlan指出,出于性能原因,每次运行都应清除缓冲区,但这与其他一些用户体验相反.这可能因硬件和iOS修订版而异; 但是,只需通过注释掉线就可以测试性能.检查前后.
    • 如果你完全使用Z轴(即:2D背景上的3D物体,想想新超级马里奥兄弟),你会想要清除深度缓冲
  • 如果压缩工件不是问题,则使用纹理压缩(PVRTC),它是硬件加速的
  • 如果不能使用PVRTC,请使用16位纹理作为背景
  • 如果没有任何内容,请确保您没有尝试深度测试/ alpha混合背景
  • 如果您使用的是固定功能,请使用OES_Draw_Texture扩展名

    int rect[4] = {0, 0, 480, 320};
    glBindTexture(GL_TEXTURE_2D, texBackground);
    glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, rect);
    glDrawTexiOES(0, 0, z, 480, 320);

除此之外,尝试抓住代码的这一部分,看看它每秒能够吐出多少背景.