这是一个示例: http: //pyopengl.sourceforge.net/context/tutorials/shader_1.xhtml
它正在创建一个 vbo,对其进行绑定,并使用着色器运行它,但在此过程中,某些地方无法正常工作。:\
from OpenGLContext import testingcontext
BaseContext = testingcontext.getInteractive()
from OpenGL.GL import *
from OpenGL.arrays import vbo
from OpenGLContext.arrays import *
from OpenGL.GL import shaders
class TestContext( BaseContext ):
def OnInit( self ):
VERTEX_SHADER = shaders.compileShader("""#version 330
void main() {
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}""", GL_VERTEX_SHADER)
FRAGMENT_SHADER = shaders.compileShader("""#version 330
void main() {
gl_FragColor = vec4( 0, 3, 6, 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):
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()
在普通 py 2.7 交互式终端中运行此示例会产生以下结果:
OpenGLContext.scenegraph.basenodes:Unable to load node implementation for
MMImageTexture: 'module' object has no attribute 'MMImageTexture'
在这两种情况下,都会生成一个窗口,但没有显示几何图形。
basenodes 问题是否表明 MMImageTexture 是自定义 basenode 并且没有正确创建?据我所知,我遵循了所有内容。:\ 太烦人了……太烦人了。Prease 对我有帮助!:P
我的系统规格是 win7、4gb ram、corei5、630m GeForce GT,使用 python 2.7 和 python 便携版。