gpt4 book ai didi

c++ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINES) 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:10 26 4
gpt4 key购买 nike

我正在尝试以正常填充模式渲染图元,然后将其渲染为线框。

渲染代码:

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 上使用 SDLMSVC++ 2010。我没有对 glEnable 进行任何 调用,因此我没有启用会弄乱它或解决问题的奇怪设置。我唯一的 OpenGL 设置代码设置投影和模型 View 矩阵,然后创建显示列表。

显然我的问题是为什么我第二次绘制显示列表时是填充图元而不是创建线?我该如何解决这个问题?

最佳答案

根据 glPolygonMode 的文档在 OpenGL 4.0 中,第二个参数 mode 只能是 GL_FILLGL_POINTGL_LINE 之一。在您的示例中,您传递的是 GL_LINES,这是一个完全不同的枚举值。

我怀疑传递的 GL_LINES 是由 OpenGL 处理的,如果接收到的模式不是它所期望的,它默认返回到 GL_FILL

另请注意:glPolygonMode 的规范与 OpenGL 2.1 相同。

关于c++ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINES) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13262525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com