为什么是它应该不会显示任何几何着色器的这个教程的例子吗?(Why is this tutorial

2019-10-18 05:04发布

这是从一个示例: 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'

在这两种情况下,产生一个窗口,但没有显示的几何体。

是指示MMImageTexture是一个自定义basenode并没有被正确创建basenodes问题? 我跟着啧啧信的一切,据我可以告诉。 :\那么讨厌......那么讨厌。 Prease帮助我的! :P

我的系统规格是WIN7,4GB内存,corei5,630米的GeForce GT,使用python 2.7和python便携。

文章来源: Why is this tutorial example of a shader not displaying any geometry as it is supposed to?