2012-05-02 114 views
7

我在寻求建议之前,深入了解我的下一个项目。我想支持所有现在由iOS支持的各种解决方案(视网膜,非视网膜iPhone和全部3个iPad)。开发视网膜和非视网膜显示器OpenGL ES

开发人员最常用的方法是什么?我看到了类似的问题,但具体性质。我正在寻找完整的软件包。 IE浏览器。我想支持不同分辨率的位图字体,图像等。

是设备专用开关,还是if语句标准?

感谢您的高级帮助。

Ë

编辑:我发现这个苹果:

块引用 如果应用程序使用的OpenGL ES渲染,现有的图形码应继续无需任何修改工作。然而,当在高分辨率屏幕上绘制时,您的内容会相应地缩放并显得更加块状。块状外观的原因是,用于支持OpenGL ES渲染缓冲区的CAEAGLLayer类的默认行为与其他Core Animation图层对象相同。换句话说,它的缩放因子最初设置为1.0,这将导致Core Animation合成器在高分辨率屏幕上缩放图层的内容。为了避免这种块状外观,您需要增加OpenGL ES渲染缓冲区的大小以匹配屏幕的大小。 (随着像素数量的增加,您可以增加为内容提供的细节数量。)因为向渲染缓冲区添加更多像素会有性能影响,但您必须明确选择支持高分辨率屏幕。

Blockquote 要启用高分辨率绘图,您必须更改用于呈现OpenGL ES内容的视图的比例因子。将视图的contentScaleFactor属性从1.0更改为2.0会触发底层CAEAGLLayer对象的比例因子的匹配更改。 renderbufferStorage:fromDrawable:方法,用于将图层对象绑定到渲染缓冲区,通过将图层的边界乘以其比例因子来计算渲染缓冲区的大小。因此,缩放倍数倍增了渲染缓冲区的宽度和高度,为您的内容提供更多像素。之后,您可以为这些附加像素提供内容。

所以我想我更新的问题是如何加倍上述比例因子?

编辑2:

我几乎没有...

我用这对我EAGLView内规模:

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

现在仍然是唯一的问题是原产地是莫名其妙弄乱。显示图像现在根据分辨率进行缩放,但在较大的分辨率下,图像从屏幕中间开始。

请帮忙!

编辑3:解决!!!!我的方向遇到了问题。

您需要确保您的翻译已更新。我用这个:

glTranslatef(width/2, height /2, 0); 
glRotatef(-90, 0, 0, 1); 
glTranslatef(-1 * (height/2),-1 * (width/2),0); 

谢谢你的样子。我希望这可以帮助别人。

+0

与设置conten任何运气tScale = 2在iPad3上支持视网膜? http://stackoverflow.com/questions/11276027/where-to-start-with-an-opengl-painter-for-the-retina-display –

+0

我还没有尝试iPad的视网膜显示呢。当我这样做时,我会再次触及。 –

回答

2

看的见编程指南:视图几何和坐标系

http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html

坐标值是使用浮点数来表示,这 允许精确布局和内容的定位而不管 底层屏幕分辨率的

临屋t表示该点指定(GCRect等)是不是像素 - 它是被调整为视网膜/非视网膜

最后可可牧师指出,你可以保持PNG图像和* @ 2个点。 PNG版本的图片:

Retina Display Images on iPhone

What is the point of the @2x for Retina display apps?

而且,这里的一对视网膜设计的文章: http://globalmoxie.com/blog/designing-for-iphone4-retina-display.shtml

+2

我很欣赏这种回应。我将定义阅读该指南。我认为这不会对我有用(可能会误解)。正如我应该首先提到的,我所有的图像都来自OpenGL ES,而不是UIKit。 –

-2

你只需要在你的软件包中有@ 2x版本的图像。 iOS的自动对@ 2个版本,如果它运行在视网膜硬件

相关问题