2014-01-12 3 views
0

Я использую glScalef (-1.0, 1.0, 1.0), чтобы перевернуть мою ось изображения OpenGL. Однако это полностью разрушает рендеринг объектов и цветов. Я попытался следующие вещи без толку:Фиксация цветопередачи в openGL с помощью glScalef

glEnable(GL_NORMALIZE); 
glEnable (GL_DEPTH_TEST) ; 
glEnable(GL_COLOR_MATERIAL); 
glCullFace(GL_BACK); 

Если я переворачивать х и у - glScalef (-1.0, -1.0, 1.0) то цвета хорошо, но я не хочу, чтобы перевернуть оба измерения. Перевертывание x и z не фиксирует цвета. Любые идеи?

ответ

1

Вы изменили ручную координату, выполнив это. Эффективно, когда приходит время растеризовать ваши треугольники, фронт становится задним, потому что направление обмотки обращено вспять.

Вы должны знать, как растеризатор определяет переднюю/заднюю поверхность многоугольника. Он использует постпроектированную позицию ваших вершин и проверяет направление намотки. Вы перевернули 1 ось в своей постпроекционной системе координат, которая меняет ручность (более формально, ее chirality). Это создает зеркальное изображение, а обмотка ваших вершин - назад.

Вы можете решить это с помощью glFrontFace (GL_CW) или просто намотать свои вершины в другую сторону вручную.

 Смежные вопросы

  • Нет связанных вопросов^_^