刚开始使用 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 -混合,我相信这意味着像素由 3 个字节(R、G、B 但没有 alpha)表示。我假设 GL_RGB 是与此相对应的格式。