Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone&;iPad:一个OpenGL ES通用应用程序对于多个设备来说是一种痛苦吗?_Iphone_Objective C_Ipad_Opengl Es - Fatal编程技术网

iPhone&;iPad:一个OpenGL ES通用应用程序对于多个设备来说是一种痛苦吗?

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()调用可以解决问题。虽然难度是

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


有可能有一个通用的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比例因子进行渲染,而希望以稍低的比例因子进行渲染