【问题标题】:OpenGL wont render a square properlyOpenGL不会正确渲染正方形
【发布时间】:2021-08-28 06:16:33
【问题描述】:

我正在尝试使用 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()

【问题讨论】:

    标签: python opengl pygame pyopengl opengl-compat


    【解决方案1】:

    索引顺序错误:

    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)
    

    【讨论】:

    • 谢谢!没想到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多