`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()