代码之家  ›  专栏  ›  技术社区  ›  Shai UI

iPhone和iPad:一个OpenGL ES通用应用程序对于多个设备来说是不是很难编写?

  •  3
  • Shai UI  · 技术社区  · 14 年前

    我有过将cocoa touch应用程序作为通用应用程序(适用于ipad、iphone)编写的经验,这并不难。我只需要为每个设备使用不同的.XIB,但至少是相同的二进制文件。

    有可能也有一个通用的opengl es应用程序吗?如果每个设备(iphone 3gs、iphone 4、ipad)的分辨率都不一样,这有困难吗?所以很可能我的代码对每个设备都是不同的???

    2 回复  |  直到 14 年前
        1
  •  6
  •   Brad Larson    14 年前

    虽然难度是一个主观的衡量标准,但我认为,为各种设备开发以OpenGL ES为中心的应用程序比基于更多标准用户界面元素的应用程序更简单。在标准iPhone应用程序的iPad版本可能需要完全不同的界面布局的地方,如果您正在进行全屏幕OpenGL-ES绘图,只需将渲染层缩放到适当的屏幕大小即可。

    例如,查看 Molecules 应用程序(根据BSD许可证提供)。它是一个通用的iPhone/iPad应用程序,在两个接口之间共享大量代码。事实上,几乎没有一个OpenGL ES部分是基于这个平台进行更改的。

    当涉及到类似Retina显示的内容时,只需在CAEAGLLayer宿主视图的初始化中添加一点代码,就可以解释新的比例因子:

    if ([self respondsToSelector:@selector(setContentScaleFactor:)])
    {
        self.contentScaleFactor = [[UIScreen mainScreen] scale];
    }
    

    无需更改其他内容,OpenGL ES内容现在将以更高的分辨率呈现。

    你可能会遇到的最大问题是,如果你使用更高分辨率的显示屏,你可能会发现自己在旧款iPhone上的填充率是有限的。如果您在OpenGL ES工具中看到渲染器的使用率接近100%,就会发生这种情况。对于视网膜显示,您可能不想以完全的2X比例因子进行渲染,而希望以稍低的比例因子进行渲染。

        2
  •  0
  •   westsider    14 年前

    我不能说你的细节,但我有一个通用的应用程序,它使用OpenGL ES。出于我的目的,glViewport()调用负责处理事情。