iPhone&;iPad:一个OpenGL ES通用应用程序对于多个设备来说是一种痛苦吗?
我曾经有过编写cocoa touch应用程序作为通用应用程序(适用于ipad、iphone)的经验,这并不难。我只需要为每个设备使用不同的.xib,但至少它是相同的二进制文件iPhone&;iPad:一个OpenGL ES通用应用程序对于多个设备来说是一种痛苦吗?,iphone,objective-c,ipad,opengl-es,Iphone,Objective C,Ipad,Opengl Es,我曾经有过编写cocoa touch应用程序作为通用应用程序(适用于ipad、iphone)的经验,这并不难。我只需要为每个设备使用不同的.xib,但至少它是相同的二进制文件 有可能有一个通用的opengl es应用程序吗?考虑到每个设备(iPhone3GS、iPhone4、ipad)的分辨率都不一样,这有困难吗?所以很可能我的代码对于每个设备都是不同的???我不能说出你的具体情况,但我有一个通用的应用程序,它使用OpenGL ES。就我而言,glViewport()调用可以解决问题。虽然难度是
有可能有一个通用的opengl es应用程序吗?考虑到每个设备(iPhone3GS、iPhone4、ipad)的分辨率都不一样,这有困难吗?所以很可能我的代码对于每个设备都是不同的???我不能说出你的具体情况,但我有一个通用的应用程序,它使用OpenGL ES。就我而言,glViewport()调用可以解决问题。虽然难度是主观的衡量标准,但我认为为各种设备开发以OpenGL ES为中心的应用程序比基于更多标准用户界面元素的应用程序更简单。标准iPhone应用程序的iPad版本可能需要完全不同的界面布局,如果您正在进行全屏OpenGL ES绘图,只需将渲染层缩放到适当的屏幕大小即可 例如,查看我的应用程序的代码(它在BSD许可证下可用)。它是一款通用的iPhone/iPad应用程序,在两个界面之间共享大量代码。事实上,OpenGL ES部分几乎没有一个是基于平台而改变的 当涉及到视网膜显示之类的内容时,您只需要在CaeAglayer宿主视图的初始化中添加一点代码,以说明新的比例因子:
if ([self respondsToSelector:@selector(setContentScaleFactor:)])
{
self.contentScaleFactor = [[UIScreen mainScreen] scale];
}
没有其他需要更改的内容,您的OpenGL ES内容现在将以更高的分辨率呈现
您可能会遇到的最大问题是,如果使用更高分辨率的显示器,您可能会发现自己的填充率受到限制,而以前在较旧的iPhone上是没有的。如果您看到OpenGL ES工具中的渲染器利用率接近100%,这就是正在发生的情况。对于视网膜显示,您可能不希望以完整的2X比例因子进行渲染,而希望以稍低的比例因子进行渲染