Exemplo n.º 1
0
    def __new__(cls, *args, **kwargs):
        global _TMP_VAO
        if _TMP_VAO is None:
            _TMP_VAO = GL.glGenVertexArrays(1)
        GL.glBindVertexArray(_TMP_VAO)

        self = shaders.ShaderProgram.__new__( cls, GL.glCreateProgram() )
        self.uniforms = {}

        if kwargs.get('separable'):
            GL.glProgramParameteri( self, separate_shader_objects.GL_PROGRAM_SEPARABLE, GL.GL_TRUE )
        if kwargs.get('retrievable'):
            GL.glProgramParameteri( self, get_program_binary.GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL.GL_TRUE )
        for shader in args:
            GL.glAttachShader(self, shader)
        GL.glLinkProgram(self)
        self.check_validate()
        self.check_linked()

        return self