OpenGL的。测试像素的颜色。有人可以向我解释OpenGl glGet Pixels吗?

时间:2010-11-17 14:35:03

标签: opengl openframeworks

刚开始使用OpenFrameworks,我正在尝试做一些简单的事情:测试屏幕上特定点的像素颜色。

我发现在openFrameworks中没有很好的办法,但我可以直接进入openGL和glReadPixels。但是,我遇到了很多麻烦。

基于http://www.opengl.org/sdk/docs/man/xhtml/glReadPixels.xml,我开始尝试这样做:

glReadPixels(x,y, 1,1, GL_RGB, GL_INT, &an_int);

我认为当我检查单个像素的值(宽度和高度为1)并将GL_INT作为GL_RGB类型作为格式时,单个像素应该占用一个int(4个字节)因此我通过了指向int作为数据参数的指针。

然而,我注意到的第一件事是glReadPixels似乎在我的函数中破坏了一些其他局部变量,所以我改为制作一个10个整数的数组,然后传递它。这已经停止了任何奇怪的副作用,但我仍然不知道如何解释它返回的内容。

那么......我应该传递什么样的格式和类型参数的正确组合才能安全地获得可以轻松解压缩为RGB值的东西? (注意我是通过openFrameworks这样做的,所以我自己并没有明确地设置openGL。我想我只是得到openFramework / openGL的默认值。我知道我正在做的唯一配置是不设置alpha -blending,我认为这意味着像素由3个字节(R,G,B但没有alpha)表示。我假设GL_RGB是与此对应的格式。

1 个答案:

答案 0 :(得分:2)

如果你这样做,你需要三个int:一个用于R,一个用于G,一个用于B.如果认为你应该使用:

unsigned char RGB[3];
glReadPixels(x,y, 1,1, GL_RGB, GL_UNSIGNED_BYTE, rgb);