這是關於iPhone上的一些openGLES鬼的問題。爲什麼我的像素顏色會在設備v模擬器上發生變化?
我已經注意到,在設備中的像素顏色和模擬器像素的顏色略有不同。例如,模擬器中的綠色像素可能爲(0,241,0),設備上可能爲(0,239,0)。這通常不是一個大問題(肉眼看起來他們看起來完全一樣),但我使用像素數據來編碼一些信息和顏色匹配需要準確。
我以爲我可以俯瞰GLES實現...我的幀緩衝區接收渲染設置使用下列命令的一些限制:
//生成一個屏幕外幀緩存/渲染渲染命中檢測多邊形 //創建幀緩衝 glGenFramebuffersOES(1,& hitDetectionFbo); glBindFramebufferOES(GL_FRAMEBUFFER_OES,hitDetectionFbo); //創建顏色緩衝區 glGenRenderbuffersOES(1,& colorBuffer); glBindRenderbufferOES(GL_RENDERBUFFER_OES,colorBuffer); glRenderbufferStorageOES(GL_RENDERBUFFER_OES,GL_RGBA8_OES,SCREEN_WIDTH,SCREEN_HEIGHT); glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES,GL_COLOR_ATTACHMENT0_OES,GL_RENDERBUFFER_OES,colorBuffer); //創建深度緩衝區 glGenRenderbuffersOES(1,& depthBuffer); glBindRenderbufferOES(GL_RENDERBUFFER_OES,depthBuffer); glRenderbufferStorageOES(GL_RENDERBUFFER_OES,GL_DEPTH_COMPONENT24_OES,SCREEN_WIDTH,SCREEN_HEIGHT); glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES,GL_DEPTH_ATTACHMENT_OES,GL_RENDERBUFFER_OES,depthBuffer); (glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES)== GL_FRAMEBUFFER_COMPLETE_OES,@「Framebuffer尚未準備好呈現」);
我會很感激任何幫助或想法,一切完美的模擬器(顏色搭配如預期),但我開始失去了設備精度。
感謝, -S
你正在繪製質感原始?如果是這樣,您是否使用Core Graphics解碼圖像文件來加載紋理數據? 如果是這樣,實現的不同可能在於Core Graphics解碼圖像數據的方式。解決這個問題的方法之一是將原始RGBA值存儲在外部文件中。 – prideout