В поисках цвета пикселя - PullRequest
       2

В поисках цвета пикселя

3 голосов
/ 07 октября 2010

Я пытаюсь выяснить, как извлечь значение 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 голосов
/ 07 октября 2010

Не думаю, что вы должны преобразовывать координаты пикселей в мировые координаты.Я не знаю GL, но это выглядит неправильно для меня.Вы получаете пиксельные координаты от мыши, верно?И вам нужно пиксельное значение цвета из кадрового буфера .

. Возможно, вы могли бы также использовать целочисленный тип для значения цвета с GL_UNSIGNED_BYTE и массивом unsigned char rgb[3];.И используйте GL_RGB8 для формата, а не просто GL_RGB.

Также посмотрите, как настроить формат пикселей (сохранить) буфера кадров.Это повлияет на последующие glReadPixels вызовы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...