寻找像素颜色

时间:2010-10-07 08:54:39

标签: c++ opengl

我试图找出如何从所选像素中提取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
    }
}

1 个答案:

答案 0 :(得分:4)

我认为您不应该将像素坐标转换为世界坐标。我不知道GL,但它看起来不对我。你从鼠标得到像素坐标吗?你想要一个像素颜色值from the framebuffer

也许你也可以使用整数类型作为颜色值,而GL_UNSIGNED_BYTE和数组unsigned char rgb[3];代替。并且使用GL_RGB8作为格式,而不仅仅是普通的GL_RGB。

另请参阅如何设置帧缓冲区的pixel format (store)。这会影响后续glReadPixels次来电。