Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ glPolygonMode(GL#U前、后、GL#U线)不是';行不通_C++_Opengl_Rasterizing - Fatal编程技术网

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,谢谢@如果我每次犯同样的错误都有一美元,请原谅我……:)