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