我试图找出如何从所选像素中提取RGB值。每次我点击它,它给我一个值0,即使我点击一个彩色三角形。
void mouse(int button, int state, int x, int y) {
if(state == GLUT_DOWN) {
float mx = p2w_x(x); // pixel to world coordinates
float my = p2w_y(y);
float rgb[3];
glReadPixels(mx, my, 1, 1, GL_RGB, GL_FLOAT, rgb);
std::cout << rgb[0] << std::endl; // prints 0 for red always
}
}
答案 0 :(得分:4)
我认为您不应该将像素坐标转换为世界坐标。我不知道GL,但它看起来不对我。你从鼠标得到像素坐标吗?你想要一个像素颜色值from the framebuffer。
也许你也可以使用整数类型作为颜色值,而GL_UNSIGNED_BYTE和数组unsigned char rgb[3];
代替。并且使用GL_RGB8作为格式,而不仅仅是普通的GL_RGB。
另请参阅如何设置帧缓冲区的pixel format (store)。这会影响后续glReadPixels次来电。