如何从屏幕上读取像素?

问题描述:

我想为网页游戏制作一个简单的机器人,所以我希望能够读取屏幕上像素的颜色。我使用GetPixel()在Windows上完成了这个工作,但是我似乎无法在OS X上找到它。我一直在网上查找并且遇到了glReadPixel。当我在XCode中制作一个简单的命令行工具时,我输入了下面的代码。但是,我似乎无法使其工作。我一直从该得到一个EXC_BAD_ACCESS错误:如何从屏幕上读取像素?

GLfloat r; 
glReadPixels(0, 0, 1, 1, GL_RED, GL_FLOAT, &r); 

我想上面的代码将存储像素的(0,0)的红色值成河哦,我想避免采取屏幕截图的方法,因为这很慢。任何帮助?

P.S.使用命令行工具,我的最终目标是创建一个bash脚本或一个applescript,因为我已经有了一个可以点击屏幕的命令行工具。

+0

当你调用'glReadPixels()'时你有一个活动的OpenGL上下文吗? – genpfault 2010-12-13 05:18:02

+0

没有。你能否指点我正确的方向? – hassaanm 2010-12-13 05:27:05

+0

我希望活跃的OpenGL上下文成为主屏幕。 – hassaanm 2010-12-13 05:47:32

glReadPixels只关心从帧缓冲区(图形卡绘制的区域)读取像素。

从“屏幕”读取像素根本与OpenGL无关。你需要系统特定的功能。

+0

谢谢。你会碰巧知道我将如何能够在Mac上获得屏幕像素? – hassaanm 2010-12-15 04:11:55

+0

不,我不唠叨mac。 :) – Kos 2010-12-15 11:29:09