我想通过第三方应用程序(这不是我的游戏)读取游戏中给定位置的像素颜色(例如 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/