glPolygonMode (GL_FRONT_AND_BACK, GL_LINES) не работает

Я пытаюсь визуализировать примитивы в обычном режиме заполнения, а затем в виде каркаса.

Код рендеринга:

glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0.9f, 0.9f, 0.9f, 1);
// reset matrix
glLoadIdentity();
// fill display list
glColor3c(150, 255, 255);
glCallList(lDList);
// wireframe display list
glColor3f(0, 0, 0);
glLineWidth(10);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINES);
glCallList(lDList);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

Код создания списка отображения:

lDList = glGenLists(1);
glNewList(lDList, GL_COMPILE);
glBegin(GL_QUADS);
glVertex3i(-1, -1, 0);
glVertex3i(1, -1, 0);
glVertex3i(1, -1, -25);
glVertex3i(-1, -1, -25);
glEnd();
glEndList();

glColor3c Макрос:

#define glColor3c(r, g, b) glColor3f(r / 255, g / 255, b / 255)

Я ожидаю нарисовать плоскость голубого цвета с черной рамкой вокруг нее, но все, что происходит, это то, что во второй раз, когда я отображаю список отображения, он просто заполняет и рисует всю вещь, перезаписывая пиксели для другого примитива. Я получаю плоскость, которую хочу нарисовать, но она просто черная (цвет, который я указала для линии «версия»).

Любая другая информация, которая может быть полезна, это то, что я использую SDL в Windows 7 с
MSVC ++ 2010. Я не делаю любой вызывает glEnable, поэтому у меня не включены странные настройки, которые могли бы испортить его или, возможно, решить проблему. Мой единственный установочный код OpenGL устанавливает матрицу проекции и просмотра модели, а затем создает список отображения.

Очевидно, мой вопрос: почему я рисую список отображения во второй раз, когда он заполняет примитив вместо создания линий? Как это исправить?

4

Решение

Согласно документам для glPolygonMode в OpenGL 4.0, второй аргумент, modeможет быть только один из GL_FILL, GL_POINT, или же GL_LINE, В вашем примере вы проходите GL_LINES, что является совершенно другим значением перечисления.

Я подозреваю, что прохождение GL_LINES обрабатывается OpenGL так, что по умолчанию возвращается GL_FILL если принятый режим не то, что он ожидает.

Также обратите внимание: спецификация для glPolygonMode то же самое обратно через OpenGL 2.1.

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]