【发布时间】:2010-12-14 09:07:50
【问题描述】:
我正在尝试为网页游戏制作一个简单的机器人,因此我希望能够读取屏幕上像素的颜色。我已经在 Windows 上使用 GetPixel() 完成了此操作,但在 OS X 上似乎无法弄清楚。我一直在网上查找并遇到了 glReadPixel。当我在 XCode 中制作一个简单的命令行工具时,我输入了以下代码。但是,我似乎无法让它发挥作用。我不断收到 EXC_BAD_ACCESS 错误:
GLfloat r;
glReadPixels(0, 0, 1, 1, GL_RED, GL_FLOAT, &r);
我认为上面的代码会将 (0,0) 处像素的红色值存储到 r 中。哦,我想避免采用屏幕截图的方法,因为那很慢。有什么帮助吗?
附:使用命令行工具,我的最终目标是制作一个 bash 脚本或一个 applescript,因为我已经有了一个可以点击屏幕的命令行工具。
【问题讨论】:
-
当你调用
glReadPixels()时你有一个活跃的OpenGL上下文吗? -
不。你能指出我正确的方向吗?
-
我希望活动的 OpenGL 上下文成为主屏幕。
-
在大多数操作系统中,您无法获取整个屏幕的 OpenGL 上下文。有一些解决方法,但我不建议使用它们。不过,大多数操作系统都会为您提供屏幕抓取功能。您已经知道 Windows 变体(屏幕 DC 上的 GetPixel)。这是高度特定于操作系统的,因此您必须为要支持的每个操作系统重写代码。 OpenGL 主要专注于在屏幕上显示内容。
-
哦,我明白了。屏幕 DC 上是否有等同于 GetPixel 的 OSX?
标签: macos opengl screen-scraping pixel