opengl - 读取游戏(OpenGL 或 DirectX)屏幕上的像素

标签 opengl colors directx screen

我想通过第三方应用程序(这不是我的游戏)读取游戏中给定位置的像素颜色(例如 OpenGL 或 DirectX)。

我尝试在 C# 中使用它,该代码非常适合读取桌面、窗口等的颜色,但是当我启动游戏时,我只得到 #000000,一个黑色像素。我认为这是因为我没有在正确的“位置”或类似的地方阅读。

有人知道该怎么做吗?我提到了 C#,但 C/C++ 也可以。

最佳答案

在基本步骤中:如果游戏是全屏的,则使用适当的 OpenGL 或 Directx 命令抓取渲染屏幕的纹理。
例如 glReadPixels您可以从当前绑定(bind)的帧缓冲区中获取窗口相对像素坐标处的像素值。
如果不是全屏,则必须将窗口位置与窗口相对像素坐标结合起来。

一些松散的例子:

glBindFramebuffer(GL_FRAMEBUFFER, yourScreenFramebuffer);
glReadPixels(/* your pixel X, your pixel Y, GLsizei width, 1 pixel wide, 1 pixel tall, GL_RGBA or GL_RGB, GL_UNSIGNED_BYTE, *where to store your pixel value */);

关于opengl - 读取游戏(OpenGL 或 DirectX)屏幕上的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159025/

相关文章:

c++ - 使用点积计算两个 vector 之间的角度

时间:2018-03-08 标签:c++opengl: sleep() does not affect glutPostRedisplay() during an animation

c++ - glxCreateContextAttribsARB 和 Linux 上 OpenGL 函数的动态加载

php - PHP 中的渐变贴图效果,无需额外的包?

colors - 如何在数据库字段中存储颜色?

c++ - 调用 ID2D1RenderTarget::DrawTextLayout() 不工作

c++ - 在 Optimus 笔记本电脑中以编程方式强制使用 NVIDIA GPU

c - OpenGL 3+ 渲染凹多边形(无 GLU)

opengl - 将我的场景渲染到帧缓冲区对象(FBO)然后将该 FBO 渲染到屏幕所需的步骤是什么?

matlab - 在 Matlab 中设置绘图函数的颜色