Проблема с использованием Pyglet и Pyopengl вместе - PullRequest
0 голосов
/ 07 июля 2011

У меня есть следующий код:

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 ]

2 голосов
/ 07 июля 2011

Каждый инструментарий считает, что окно OpenGL принадлежит им.Только один из них является правильным, и поэтому только один из них сможет правильно отображать.

Поскольку оба они предоставляют OpenGL, нет причин пытаться использовать оба в одной и той же программе.

1 голос
/ 19 февраля 2013

Я могу подтвердить, что PyOpenGL и Pyglet работают вместе. Поскольку вызовы python opengl являются просто оболочками к одному и тому же GL-заголовку / dll в адресном пространстве, они все перенаправляют на одни и те же функции.

Я также могу подтвердить, что ваш код отображается.

Я использую Pyglet из исходного кода, попробуйте следующее для установки непосредственно из репозитория HEAD.

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

Вам понадобится установленный Mercurial. Если вы используете virtualenv, вы можете просто использовать:

pip install mercurial
1 голос
/ 09 декабря 2012

Я должен согласиться с Николь. Каждый думает, что окно принадлежит ему, поэтому только один сможет правильно выполнить рендеринг, почему бы вам не попробовать создать окно с помощью PyOpenGL, о, и получить код ключа для Escape:
escape = chr (27)
Удачи!

...