我想使用glReadPixels讀取alpha像素值。我做的第一件事是單獨讀取像素。爲了加快速度,我試着一次讀取所有像素:glReadPixels和GL_ALPHA
GLubyte *pixels = new GLubyte[w*h*4];
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
它工作,但真的很慢。現在,我想只是獲取alpha值,不浪費空間,RGB分量:
GLubyte *pixels = new GLubyte[w*h];
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, pixels);
,但我得到:OpenGL error 0x0500 in -[EAGLView swapBuffers]
。
任何想法爲什麼INVALID_ENUM (0x0500)
被拋出?
謝謝你。關於你的最後一個建議,你有沒有關於如何實現的建議? – sharvey 2010-11-22 14:18:59
@sharvey - 看到我的寫在這裏:http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios。我在那裏的示例應用程序:http://www.sunsetlakesoftware.com/sites/default/files/ColorTracking.zip使用屏幕外幀緩衝區來渲染紋理,但我使用'glReadPixels()'拉入結果,因爲我無法完成我想要的基於GPU的顏色平均。我最終使用了一個較慢的C例程來做到這一點。我會在某個時候完成這個。 – 2010-11-22 15:13:01