【发布时间】:2017-06-19 15:35:37
【问题描述】:
我正在尝试读取屏幕像素的 RGB 值:
#include "stdafx.h"
#include<windows.h>
#include<stdio.h>
#include <gl\GL.h>
int main(int argc, char** argv)
{
GLubyte color[3];
glReadPixels(800, 800, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, &color);
printf("R:%d G:%d B:%d", color[0], color[1], color[2]);
while (1);
}
但我要求的坐标并不重要。它总是返回我 R:204 G:204 B:204
我做错了什么?
【问题讨论】:
-
你想做什么?您甚至没有创建 OpenGL 上下文...
-
我正在尝试读取 x=800 y=800 位置像素的 RGB 值
-
glReadPixels 只能在具有与之关联的 OpenGL 上下文的屏幕中工作。在 glReadPixels 文档中有一条注释:“位于连接到当前 GL 上下文的窗口之外的像素的值未定义”。换句话说,只有在以下情况下,您才能确定您将获得实际的像素值:1. 有一个窗口,并且 2. 将 GL 上下文连接到它。
标签: c++ windows opengl glreadpixels