получить и установить цвет пикселя

0

Мне нужно установить цвет для пикселя.

Когда я пытаюсь установить цвет определенного пикселя (щелкнув левой кнопкой мыши). Моя функция мыши.

void mouse(int button, int state, int x, int y) {

if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
    pixel *p = new pixel();
    p->x = x;
    p->y = HEIGHT - y;
    stack.push(p);

    float arr[3];
    readPixel(p->x, p->y, arr);

    std::cout<<"pixel color: ";
    std::cout<<arr[0]<<" "<<arr[1]<<" "<<arr[2]<<std::endl;

    drawPixel(p->x, p->y);
}
}

Здесь метод readPixel

void readPixel(int x, int y, float (&a)[3]) {

GLubyte arr[3];
glReadPixels(x, y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, arr);

a[0] = (float)arr[0] / 255.0f;
a[1] = (float)arr[1] / 255.0f;
a[2] = (float)arr[2] / 255.0f;
};

Проблема заключается в настройке цвета для пикселя. Я создаю структурный pixel с полями x и y. Когда я нажимаю левую кнопку, в стек добавляется pixel объекта. Когда я пытаюсь установить цвет для пикселя (нарисуйте его) - пиксель не меняет свой цвет в методе drawPixel

void draw() {

glBegin(GL_POINTS);
if (!stack.empty()) {
    drawPixel(stack.top()->x, stack.top()->y);
    stack.pop();
}
glEnd();

glFlush();
};

void drawPixel(int x, int y) {

glRasterPos2i(x, y); 
glDrawPixels(1, 1, GL_RGB, GL_UNSIGNED_BYTE, &val);

};

Где &val - float val[3] = { 1.0, 1.0, 0.0 }; Итак, вопрос в том, как установить цвет для пикселя с координатами x и y?

Теги:
opengl

1 ответ

0
Лучший ответ

Решение заключается в изменении GL_UNSIGNED_BYTE на GL_FLOAT а не на pop элементы из стека

Ещё вопросы

Сообщество Overcoder
Наверх
Меню