glPolygonMode(GL_FRONT_AND_BACK, GL_LINES) 不起作用
glPolygonMode(GL_FRONT_AND_BACK, GL_LINES) isn't working
我正在尝试以正常的填充模式渲染基元,然后作为线框。
渲染代码:
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设置代码设置投影和模型视图矩阵,然后创建显示列表。
显然,我的问题是为什么我第二次绘制显示列表是填充基元而不是创建线条?我该如何解决这个问题?
根据 OpenGL 4.0 中glPolygonMode
的文档,第二个参数mode
可能只是GL_FILL
、GL_POINT
或GL_LINE
中的一个。 在您的示例中,您传递的是GL_LINES
,这是一个完全不同的枚举值。
我怀疑传递GL_LINES
是由 OpenGL 处理的,因此如果接收模式不是它期望的,它会默认回到GL_FILL
。
另请注意:glPolygonMode
的规范与OpenGL 2.1相同。
相关文章:
- Visual Studio 19-17 库兼容性根据 GL 标志
- glDrawElements GL 错误类型 = 0x824c,严重性 = 0x9146,消息 = GL_INVALID
- 将"Compass"与相机旋转隔离开GL
- 是否有一个版本的glCopyImageSubData在Openg GL中使用混合?
- 计算着色器Open GL ES的多个输入
- Open GL ES 3.1 的计算着色器的最小工作示例
- 致命错误 C1083:无法打开包含文件:"GL/glew.h":没有此类文件或目录
- C++ 致命错误:glad/gl.h:没有这样的文件或目录
- 打开 gl 精灵类不起作用
- Qt 找不到 GL 库
- GCC 相当于 MSVC 中的 /GS、/GL、/Gy、/Oi、/MD
- WebRTC 'goog-remb' 和 'transport-cc' SDP lines
- 失败的 glewInit:缺少 GL 版本
- 何时在OS X上使用OpenGL vs GL
- 识别安卓中意外的 GL 上下文丢失
- Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3
- Glew - 与 GLFW 配对时 gl- 函数符号上出现链接错误
- 打开gl es 2.0为什么我的VBO不起作用
- iOS GL ES exc_bad_access on glDrawElements
- "Missing GL version" 从 glewInit() 使用 EGL?