Exemplo n.º 1
0
def createProgram(vertexShader, fragmentShader):
    program = bgl.glCreateProgram()
    bgl.glAttachShader(program, vertexShader)
    bgl.glAttachShader(program, fragmentShader)
    bgl.glLinkProgram(program)
    success = bgl.Buffer(bgl.GL_INT, [1])
    bgl.glGetProgramiv(program, bgl.GL_LINK_STATUS, success)
    #var success = gl.getProgramParameter(program, gl.LINK_STATUS);
    if (success[0] == bgl.GL_TRUE):
        print("shader link success")
        return program

    print("shader program linking failed")
    
    bgl.glGetProgramiv(program, bgl.GL_INFO_LOG_LENGTH, success)
    start = bgl.Buffer(bgl.GL_INT, [1])
    start[0] =0
    log = bgl.Buffer(bgl.GL_BYTE, [success[0]])
    bgl.glGetProgramInfoLog(program, success[0], start, log)
    py_log = log[:]
    py_log_str = ""
    for c in py_log:
        py_log_str += str(chr(c))
    print(str(py_log_str))
    bgl.glDeleteProgram(program)
Exemplo n.º 2
0
def delete_program(program):
    """
    Delete and OpenGL program and its attached shaders.
    """
    count = bgl.Buffer(bgl.GL_INT, 1)
    shaders = bgl.Buffer(bgl.GL_INT, 10)
    bgl.glGetAttachedShaders(program, 10, count, shaders)
    for i in range(count[0]):
        bgl.glDetachShader(program, shaders[i])
        bgl.glDeleteShader(shaders[i])
    bgl.glDeleteProgram(program)
    gl_error('delete_program')
Exemplo n.º 3
0
 def __del__(self):
     for shad in self.shaders:
         bgl.glDetachShader(self.program, shad)
         bgl.glDeleteShader(shad)
     bgl.glDeleteProgram(self.program)
     print('shader_del')
Exemplo n.º 4
0
 def __del__(self):
     for shad in self.shaders:
         bgl.glDetachShader(self.program, shad)
         bgl.glDeleteShader(shad)
     bgl.glDeleteProgram(self.program)