OpenGL 无法正确渲染正方形

OpenGL wont render a square properly

我正在尝试使用 glBegin(GL_QUADS) 在 OpenGL 中渲染一个彩色正方形,但由于某种原因,它在渲染正方形时中间有一个额外的顶点。 Screenshot。我是做错了什么还是必须使用不同的方法进行 2d 渲染?

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *

v = ((0, 0), (0, 1), (1, 0), (1, 1))
s = (0, 1, 2, 3)


def c():
    glBegin(GL_QUADS)
    for vertex in s:
        glColor3fv((1, 1, 1))
        glVertex2fv(v[vertex])
    glEnd()


def main():
    pygame.init()
    display = (1500, 1000)
    pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
    gluPerspective(50, (display[0] / display[1]), 0.1, 5000)
    glTranslatef(0, 0, -8.5)
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        c()
        pygame.display.flip()


main()

索引顺序错误:

v = ((0, 0), (0, 1), (1, 0), (1, 1))

s = (0, 1, 2, 3)

s = (0, 1, 3, 2)

您需要围绕四边形排列索引:

2          3
 +<-------+
 .        ^
 .        |
 .        |
 +------->+
0          1

或者您可以更改顶点的顺序:

v = ((0, 0), (0, 1), (1, 1), (1, 0))
s = (0, 1, 2, 3)