一起使用pyglet和pyopengl的问题

时间:2011-07-07 05:46:19

标签: python opengl pyglet pyopengl

我有以下代码:

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时,我只能看到乱七八糟的混乱。

3 个答案:

答案 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