iphone - 将 480 x 320 背景渲染为 iPhone OpenGL ES 纹理的最快方法

标签 iphone performance graphics opengl-es textures

我需要在 OpenGL ES 中显示 480 x 320 背景图像。问题是,当我在 iPhone 中使用 512 x 512 纹理尺寸时,速度有点慢。所以我正在寻找在 OpenGL ES 中渲染 iPhone 分辨率大小背景的最佳案例。在这种情况下,我应该如何分割背景以获得最佳性能?我主要关心的是速度。我应该选择 256 x 256 或其他纹理尺寸吗?

最佳答案

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

既然如此,我不确定您已经实现了多少这些,所以如果我向您提供您已经知道的内容,我深表歉意:

  • 如果您每帧都绘制全屏不透明背景,则可能不需要 GL_CLEAR 调用
    • gmaclachlan 指出,出于性能原因,您应该在每次运行时清除缓冲区,但这与其他一些用户体验相反。这在硬件和 iOS 版本之间可能有所不同;然而,只需注释掉该行即可测试性能。检查之前和之后。
    • 如果您完全使用 Z 轴(即:2D 背景上的 3D 对象,例如新 super 马里奥兄弟),您将需要清除深度缓冲区
  • 如果压缩伪像不是纹理压缩,请使用纹理压缩 (PVRTC) 问题,它是硬件加速的
  • 如果无法使用 PVRTC,请使用 16 位纹理作为背景
  • 确保您不会尝试对背景进行深度测试/Alpha 混合(如果背景下面没有任何内容)
  • 使用OES_Draw_Texture扩展名(如果您正在使用) 固定功能

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

除此之外,尝试抓取代码的那一段,看看它每秒能够吐出多少背景。

关于iphone - 将 480 x 320 背景渲染为 iPhone OpenGL ES 纹理的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2674196/

相关文章:

iphone - 快速比较两个viewControllers

ios - 当我的应用程序处于后台时在 iOS 上捕获硬件按钮

python - (=.at)、(=.loc)、(.drop) 或 (.append) 过滤大型数据帧哪个更快?

sql-server - 聚簇索引

css - 他们是如何制作此博客中的即时贴的?

graphics - MeshLab:使用我自己计算的法线渲染 obj 文件

.net - 如何在运行时使用 VB.NET/C# 在 Windows 窗体中创建圆角矩形?

iphone - 从自定义单元格访问父 View

iphone - 支持自动续订订阅 iOS 版本

python - 我的python代码要花费8个多小时才能遍历大数据