OpenGL似乎是一个拥有良好社区的好图书馆。在阅读了一些教程并阅读了一些解释后,我感觉我已经掌握了基础知识。
尽管如此,我还是挣扎着相机。我用OpenGL得到了相机是静态的,为了创造相机移动的错觉,你必须移动整个场景。我试图扭转整个场景。物体转动,但前面的物体停留在前面。我读了一些,但感觉我正在做他们告诉我的事情。
以下是我喜欢用相机“轨道”运行的两个正方形的运行示例。
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
def draw():
glBegin(GL_QUADS)
glColor3fv((1,0,0))
glVertex3fv((1,-1,-1))
glVertex3fv((1,1,-1))
glVertex3fv((-1,1,-1))
glVertex3fv((-1,-1,-1))
glColor3fv((0,1,0))
glVertex3fv((1,-1,-2))
glVertex3fv((1,1,-2))
glVertex3fv((-1,1,-2))
glVertex3fv((-1,-1,-2))
glEnd()
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0,0.0, -25.0)
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);
glRotatef(1, 0.0, 1.0, 0.0)
draw()
pygame.display.flip()
pygame.time.wait(10)
现在两个方块都转了,但是绿色方块停留在红色方块的前面。我想看到的是整个场景转动,绿色方块在红色方块后面移动。有人能指出我正确的方向吗?
答案 0 :(得分:1)
您必须使用Traceback (most recent call last):
File "N:\GCSE Computing\Programming CA\Task 3\Task 3 - Solo.py", line 51, in <module>
row[2] = int(row[2])
IndexError: list index out of range
启用GL_DEPTH_TEST
。
此外,不推荐使用旧的固定功能管道(从OpenGL 3.0开始),并已在OpenGL 3.1中删除。我强烈建议你不要用这个旧的固定管道开始一个新项目。