經過一個多小時的尋找答案(嘗試Munshi的「OpenGL ES 2.0編程指南」中的東西,搜索Apple的文檔,搜索StackOverflow),我仍然無法讓glReadPixels工作。我嘗試了很多不同的方式,而我得到的最好的結果是波動的(因此是錯誤的)結果。解釋glReadPixels()
我已經設置了一個簡單的情況,使用着色器渲染到屏幕上,我手動將gl_FragColor分配給純紅色,所以屏幕上應該沒有任何波動。然後,我嘗試類似下面的代碼之前presentRenderbuffer:
GLubyte *pixels = (GLubyte *)malloc(3);
glReadPixels(100, 100, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixels);
NSLog(@"%d", (int)pixels[0]);
free(pixels);
基本上,試圖閱讀(100,100)的單個像素讀它的紅色值,這是我希望是1或255相反我獲得了像1522775,3587和65536這樣的值,但屏幕上的圖像始終不變。我在Mac上做了這樣的事情,它運行良好,但出於某種原因,我無法在iOS上使用它。在撥打glDrawArrays()
之後和撥打presentBuffer:
之前,我有上面的說明(並嘗試了一些我在互聯網上遇到的變化)。我甚至嘗試了通過查詢glGetIntegerv()獲取幀緩衝區信息來處理所有讀取類型和讀取格式的「OpenGL ES 2.0編程指南」中的方法。
任何想法?我相信有人會說,「使用搜索功能」,但我認真幹起來,無法進一步。謝謝你的幫助!
沒辦法!我以前認真地嘗試過,並沒有奏效。突然它有效。我完全不知道我現在做什麼(哪些工作)與我之前做的不同(當我嘗試GL_RGBA時)。但是,謝謝! – Mike 2013-03-14 09:40:36
@Mike,我無法在iOS上使用GL_RGB。你能分享你的代碼嗎? – grisevg 2016-12-06 23:37:28