我会尝试以普通填充模式渲染基元,然后再以线框模式渲染。
渲染代码:
我希望能够绘制一个青色的飞机,并在周围画上黑色的框架,但出现的情况是第二次渲染显示列表时,它只是填充并绘制整个图像,覆盖其他基元素的像素。最终绘制出了所需的飞机,但只有黑色(我为线条“版本”指定的颜色)。
可能有用的其他信息是,我在Windows 7上使用SDL和MSVC++ 2010。我没有调用glEnable,因此没有启用任何会混淆或解决问题的奇怪设置。我的OpenGL设置代码仅设置投影和模型视图矩阵,然后创建显示列表。
显然,我的问题是为什么第二次绘制显示列表时它会填充原始图形而不是创建线条?我该如何解决这个问题?
渲染代码:
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)
我希望能够绘制一个青色的飞机,并在周围画上黑色的框架,但出现的情况是第二次渲染显示列表时,它只是填充并绘制整个图像,覆盖其他基元素的像素。最终绘制出了所需的飞机,但只有黑色(我为线条“版本”指定的颜色)。
可能有用的其他信息是,我在Windows 7上使用SDL和MSVC++ 2010。我没有调用glEnable,因此没有启用任何会混淆或解决问题的奇怪设置。我的OpenGL设置代码仅设置投影和模型视图矩阵,然后创建显示列表。
显然,我的问题是为什么第二次绘制显示列表时它会填充原始图形而不是创建线条?我该如何解决这个问题?
glColor3ub()
有什么问题吗? - genpfault