寻找像素颜色

3

我正在尝试找出如何从所选像素中提取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个回答

4
我认为你不应该将像素坐标转换为世界坐标。我不熟悉GL,但这看起来是错误的。你是从鼠标获取像素坐标吗?你想要一个像素颜色值,从帧缓冲区中获取。请参阅此处

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

另外,请查看如何设置帧缓冲区的像素格式(存储)。这将影响随后的glReadPixels调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接