C++ glPolygonMode(GL#U前、后、GL#U线)不是';行不通
我试图以正常填充模式渲染基本体,然后以线框的形式渲染 渲染代码:C++ glPolygonMode(GL#U前、后、GL#U线)不是';行不通,c++,opengl,rasterizing,C++,Opengl,Rasterizing,我试图以正常填充模式渲染基本体,然后以线框的形式渲染 渲染代码: 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); glLin
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)
我希望得到一个青色的平面,周围有一个黑色的框架,但现在发生的是,第二次渲染显示列表时,它只是填充和绘制整个内容,覆盖另一个基本体的像素。我最终得到了我想要绘制的平面,但它只是黑色(我为线条“版本”指定的颜色)
任何其他可能有用的信息是,我在Windows7上使用SDL
MSVC++2010。我没有给glEnable打任何电话,所以我没有启用任何会把事情搞砸的奇怪设置,或者,也许可以解决问题。我唯一的OpenGL设置代码设置投影和modelview矩阵,然后创建显示列表
显然,我的问题是,为什么我第二次绘制显示列表是填充基本体而不是创建线?如何解决此问题?根据OpenGL 4.0中的文档,第二个参数,模式
,只能是GL\u填充
、GL\u点
或GL\u线
中的一个。在您的示例中,您正在传递GL_行
,这是一个完全不同的枚举值
我怀疑传递GL\u行
是由OpenGL处理的,因此如果接收到的模式不是它期望的模式,它会默认返回到GL\u FILL
另请注意:
glPolygonMode
的规范与OpenGL 2.1中的规范相同。为什么使用宏?glColor3ub()
有什么问题吗?哇,我从来都不知道这一点(我还是OpenGL的新手),谢谢,从现在起我将使用它!我庆幸自己犯了迄今为止我最愚蠢的编程错误;虽然这两个宏如此相似让人恼火,但是w/e,谢谢@如果我每次犯同样的错误都有一美元,请原谅我……:)