【发布时间】:2014-03-02 14:14:19
【问题描述】:
这可能与我的another unsolved mystery 相关。
我正在使用真实设备和模拟器在 iPhone 上绘制 Orthographic 2d。我正在尝试根据它们与我传入的“A”像素空间中任意点的距离(硬代码)将像素着色为给定的颜色。我在 Retina 960x640 分辨率下做所有事情。我计算从 A 到 gl_FragCoord 的距离,并根据 2 种颜色之间的跳跃进行着色,“最大”距离为 300 像素。
在模拟器上(带有视网膜显示)时,我需要为屏幕中点 X 提供“460”像素的中心点。Y 我给出 160 像素,并寻找“300”像素的距离......以获得 在设备上获得相同的效果 我需要 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];
【问题讨论】:
标签: ios opengl-es shader retina-display