【问题标题】:OpenGL GL_POLYGON only works when drawing clockwise?OpenGL GL_POLYGON 仅在顺时针绘制时有效?
【发布时间】:2021-03-25 02:36:30
【问题描述】:

我是 OpenGL 新手,我尝试使用以下代码 (GL_POLYGON) 使用 python 绘制一个圆。但似乎它只是在以顺时针方式添加点时才绘制它,否则它什么也不绘制

这样就成功画了一个圆

p = self.pos + Y_VEC * self.height  # center of the circle
dv = self.dir_vec * self.radius  # vector point forward
rv = self.right_vec * self.radius  # vector point to right
sides = 20  # sides of the circle (circle is in fact polygon)
angle = 0
        inc = 2 * math.pi / sides
        glColor3f(0, 1, 0)
        glPointSize(10.0)
        glBegin(GL_POLYGON)  # GL_POLYGON drawn but not shown in top view? GL_LINE_LOOP works
        # glVertex3f(*p)  # used for TRIANGLE_FAN
        for i in range(sides+1):
            pc = p + dv * math.cos(angle) + rv * math.sin(angle)
            glVertex3f(*pc)
            angle -= inc
        glEnd()

没有渲染(唯一的变化是“-=”到“+=”)

angle = 0
        inc = 2 * math.pi / sides
        glColor3f(0, 1, 0)
        glPointSize(10.0)
        glBegin(GL_POLYGON)  # GL_POLYGON drawn but not shown in top view? GL_LINE_LOOP works
        # glVertex3f(*p)  # used for TRIANGLE_FAN
        for i in range(sides+1):
            pc = p + dv * math.cos(angle) + rv * math.sin(angle)
            glVertex3f(*pc)
            angle += inc  # change here
        glEnd()

这正常吗?我做错了什么?

【问题讨论】:

    标签: python opengl


    【解决方案1】:

    确保face cullingglDisable(GL_CULL_FACE) 禁用。

    【讨论】:

    • 非常感谢,以前从不知道这个功能,真的花了我 2 天,但没有找到答案?
    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多