我在寻求建议之前,深入了解我的下一个项目。我想支持所有现在由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);
谢谢你的样子。我希望这可以帮助别人。
与设置conten任何运气tScale = 2在iPad3上支持视网膜? http://stackoverflow.com/questions/11276027/where-to-start-with-an-opengl-painter-for-the-retina-display –
我还没有尝试iPad的视网膜显示呢。当我这样做时,我会再次触及。 –