0

我有以下代码:

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 时,我只看到一团糟。

4

3 回答 3

2

每个工具包都认为 OpenGL 窗口属于自己。只有其中一个是正确的,因此只有其中一个能够正确渲染。

由于它们都公开了 OpenGL,因此没有理由尝试在同一个程序中同时使用它们。

于 2011-07-07T06:57:20.510 回答
1

我可以确认 PyOpenGL 和 Pyglet 确实可以一起工作。由于 python opengl 调用只是地址空间中相同 GL 标头/dll 的包装器,它们都重定向到相同的函数。

我还可以确认您的代码呈现。

我从源代码使用 Pyglet,尝试以下直接从存储库 HEAD 安装。

pip install hg+https://pyglet.googlecode.com/hg/

您将需要安装 mercurial。如果您使用的是 virtualenv,您可以简单地使用:

pip install mercurial
于 2013-02-19T07:48:16.427 回答
1

我必须同意尼科尔的观点。每个人都认为窗口是自己的,所以只有一个人才能正确渲染,不如试试用PyOpenGL创建窗口,哦,得到Escape的关键代码:
escape = chr(27)
祝你好运!

于 2012-12-08T20:58:04.563 回答