这可能与我的another unsolved mystery有关。iPhone上的OpenGL ES可能会导致视网膜问题?
我在iPhone上绘制Orthographic 2d,使用真实设备和模拟器。我试图给我的像素着色一个给定的颜色,这取决于它们距'A'的像素空间中的任意点有多远,我通过(硬代码)。我在做Retina 960x640分辨率的一切。我计算从A到gl_FragCoord
的距离,并且我基于两种颜色之间的跳跃着色,'最大'距离为300px。
当在模拟器(有视网膜显示)时,我需要为屏幕中点X给出一个“460”像素的中心点.. YI给出160px,并且我寻找距离'300'px ..得到设备上的相同效果我需要960X的中心和150的距离以获得相同的结果(有趣的是,px 80不会给出与我想要的结果相同的结果,但160可能是原始上的过冲...)
很明显,视网膜问题正在起作用。但是,在哪里以及如何以及如何找到并修复它?
我使用:
glViewport(0, 0, 960.0f, 640.0f);
和:
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &framebufferWidth);
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &framebufferHeight);
和:
[self setView:[[EAGLView alloc] initWithFrame:[UIScreen mainScreen].bounds]];
[(EAGLView *)[self view] setContentScaleFactor:2.0f];
我已经用正确的通用值代替了那些 - 但是我非常清楚地知道问题不在那里。仔细看看我的iPhone 4设备上的Q-retina显示屏和模拟器上的“retina”iPhone设备的行为有所不同 – Nektarios