我想使用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