這可能與我的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