opengl - OpenGL 中的多边形

标签 opengl

有人可以向我解释为什么下面的代码没有绘制任何东西,但如果我使用 GL_LINE_LOOP 它确实形成了一个闭环吗?

glBegin(GL_POLYGON);

for(int i = 0; i <= Ncircle; i++) { 
    tempAngle = angle + i*(2*M_PI - 2*angle)/Ncircle;
    glVertex3f(r*cos(tempAngle), r*sin(tempAngle), 0.0);
}
glVertex3f(l, 0, 0.0);
//glVertex3f(r*cos(angle), r*sin(angle), 0.0);

glEnd();

(这基本上是一个半径为 r 且 Θ 在 [-angle,angle] 中的圆,上面有一个高度为 l 的三角形,这样离开圆的角度就是三角形的角度:

result using GL_LINE_LOOP

最佳答案

多边形不可见,因为多边形背面可见,背面默认不渲染(被剔除)。

多边形面由投影顶点的屏幕位置决定:如果顶点是逆时针方向,则正面可见,否则背面可见。

要控制多边形面剔除,请参阅 glCullFace。

我建议保留默认的面部剔除预设,并按逆时针顺序发出多边形顶点。当相同的几何图形同时显示两个面(正面和背面,即一个 jar )时,应禁用背面剔除

关于opengl - OpenGL 中的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711907/

相关文章:

opengl - 是否可以在 uint32 格式纹理上累积片段编号?

c++ - Qt 和 OpenGL,为多个小部件使用一个上下文

java - 相同的 openGL 调用在 LWJGL 中产生不同的结果

c++ - 在opengl中获取相机位置

opengl - 计算 AABB 碰撞

c - OpenGL usampler2d值不能被除

c++ - 为什么在使用 OpenGL 核心配置文件时会崩溃?

c++ - GLEW 链接问题找不到 __imp_glGetIntegerv

c++ - 返回 stbi_load 函数的结果并将其用于 glTexImage2D 会导致内存冲突

linux - glUseProgram() GL_INVALID_OPERATION 1282 在 Ubuntu Gnome 17.04 Intel HD4000 上