`Testingcontex.getInteractive()` не возвращает тип контекста в OpenGLContext

Я пытаюсь запустить пример шейдера из учебника: http://pyopengl.sourceforge.net/context/tutorials/shader_1.html, но получаю NoneType ошибка. BaseContext Я получил это NoneИтак, первая строка определения TestContext ошибка отчета класса. Я новичок для PyOpenGLпоэтому я не могу понять, что не так, и мне нужна ваша помощь! Спасибо!

Моя версия Python 3.5 и моя система Ubuntu 16.04. Я установил все необходимые пакеты в http://pyopengl.sourceforge.net/context/tutorials/shader_intro.html.

from OpenGLContext import testingcontext
BaseContext = testingcontext.getInteractive()
print(BaseContext)

from OpenGL.GL import *
from OpenGL.arrays import vbo
from OpenGLContext.arrays import * 
from OpenGL.GL import shaders



class TestContext(BaseContext):
    """Create a simple vertex shaders..."""
    def OnInit(self):
        VERTEX_SHADER = shaders.compileShader("""#version 120
                void main() {
                    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
                }""", GL_VERTEX_SHADER)

        FRAGMENT_SHADER = shaders.compileShader("""#version 120
        void main() {
            gl_FragColor = vec4( 0, 1, 0, 1 );
        }""", GL_FRAGMENT_SHADER)

        self.shader = shaders.compileProgram(VERTEX_SHADER,FRAGMENT_SHADER)
        self.vbo = vbo.VBO(
                array( [ 
                    [  0, 1, 0 ],
                    [ -1,-1, 0 ], 
                    [  1,-1, 0 ], 
                    [  2,-1, 0 ], 
                    [  4,-1, 0 ],
                    [  4, 1, 0 ],
                    [  2,-1, 0 ],
                    [  4, 1, 0 ],
                    [  2, 1, 0 ],
                    ],'f')
                )
    def Render(self, mode):
        """Render the geometry for the scene."""
        shaders.glUseProgram(self.shader)
        try:
            self.vbo.bind()
            try:
                glEnableClientState(GL_VERTEX_ARRAY)
                glVertexPointerf( self.vbo )
                glDrawArrays(GL_TRIANGLES, 0, 9)
            finally:
                self.vbo.unbind()
                glDisableClientState(GL_VERTEX_ARRAY)
        finally:
            shaders.glUseProgram(0)

if __name__ == "__main__":
    TestContext.ContextMainLoop()

0 ответов

Другие вопросы по тегам