我正在尝试遵循OpenGL编程指南(AKA红皮书)
但我正在使用pyglet 1.2(因为我必须使用Python进行HighSchool项目,我更喜欢python 3.4)
所以我试图让the first example of the chapter 3正常工作
我试图让我的代码与示例最接近:
import pyglet
from pyglet.gl import *
def cube(x, y, z, size):
vertices = (GLfloat * 24) (*[x, y, z,
x, y + size, z,
x, y + size, z + size,
x, y, z + size,
x + size, y, z,
x + size, y + size, z,
x + size, y + size, z + size,
x + size, y, z + size])
glEnableClientState(GL_VERTEX_ARRAY)
glVertexPointer(3, GL_FLOAT, 0, vertices)
indices = (GLubyte * 24) (*[0, 1, 2, 3,
4, 5, 6, 7,
0, 1, 5, 4,
7, 6, 2, 3,
0, 4, 7, 3,
1, 5, 6, 2])
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, indices)
glDisableClientState(GL_VERTEX_ARRAY)
window = pyglet.window.Window(resizable=True)
@window.event
def on_draw():
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(1, 1, 1)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
glLoadIdentity()
gluLookAt(0, 0, 5, 0, 0, 0, 0, 1, 0)
glScalef(1, 2, 1)
cube(50, 50, 0, 100)
glFlush()
@window.event
def on_resize(width, height):
glViewport(0, 0, (GLsizei) (width), (GLsizei) (height) )
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glFrustum(-1, 1, -1, 1, 1.5, 20)
glMatrixMode(GL_MODELVIEW)
glClearColor(0, 0, 0, 0)
glShadeModel(GL_FLAT)
pyglet.app.run()
正如你所看到的,由于没有过剩,我不得不制作自己的立方体功能
所以这里的问题是只应用了ModelView Matrix
只有在其上显示glScalef
方法的正方形才显示
我尝试在on_draw
方法中移动Projection Matric的更改
它只是方形消失
我还尝试使用glFrustum
更改模型视图matric,
这并没有改变什么
如果有人知道这个错误来自哪里, 我很高兴听到它。