Jerry wu
Jerry wu

Reputation: 932

OpenGL GL_POLYGON only works when drawing clockwise?

I'm new to OpenGL and I try to use the following code (GL_POLYGON) to draw a circle using python. But it seems like it only draws it when the points are added in a clockwise manner, otherwise, it just draws nothing

This successfully draws a circle

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()

Nothing rendered (only change is "-=" to "+=")

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()

Is this normal? What am I doing wrong?

Upvotes: 1

Views: 215

Answers (1)

genpfault
genpfault

Reputation: 52084

Make sure face culling is disabled with glDisable(GL_CULL_FACE).

Upvotes: 2

Related Questions