我有以下代码:
import pyglet
from OpenGL.GL import *
from OpenGL.GLU import *
class Window(pyglet.window.Window):
def __init__(self,width,height):
super(Window,self).__init__(width,height)
glClearDepth(1.0)
glDepthFunc(GL_LESS)
glEnable(GL_DEPTH_TEST)
glShadeModel(GL_SMOOTH)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
def on_draw(self):
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
#I know this is deprecated
glTranslatef(0.0,0.0,-5.0)
glColor3f(1.0,1.0,1.0)
glBegin(GL_TRIANGLES)
glVertex3f(0.0,0.0,0.0)
glVertex3f(0.0,1.0,0.0)
glVertex3f(1.0,0.0,0.0)
glEnd()
def on_resize(self,width,height):
glViewport(0,0,width,height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45.0,float(width)/float(height),0.1,100.0)
glMatrixMode(GL_MODELVIEW)
当我使用pyglet的opengl绑定时,它按预期工作。但是,当我使用pyopengl时,我只能看到乱七八糟的混乱。
答案 0 :(得分:2)
每个工具包都认为OpenGL窗口属于自己。只有其中一个是正确的,因此只有其中一个能够正确渲染。
由于它们都暴露了OpenGL,因此没有理由尝试在同一个程序中使用它们。
答案 1 :(得分:1)
我必须同意Nicol。
每个人都认为窗口属于它,所以只有一个能够正确渲染,为什么不尝试使用PyOpenGL创建窗口,哦,并获取Escape的密钥代码:
逃脱= chr(27)
祝你好运!
答案 2 :(得分:1)
我可以确认PyOpenGL和Pyglet一起工作。 由于python opengl调用只是地址空间中相同GL头/ dll的包装器,因此它们都重定向到相同的函数。
我还可以确认您的代码呈现。
我正在使用源代码中的Pyglet,请尝试以下命令直接从存储库HEAD安装。
pip install hg+https://pyglet.googlecode.com/hg/
您需要安装mercurial。如果你正在使用virtualenv,你可以简单地使用:
pip install mercurial