create GLSL programs from shader sources

This commit is contained in:
Josh Holtrop 2012-07-22 18:01:16 -04:00
parent af989f07ee
commit 25082e9b1b

View File

@ -8,6 +8,34 @@ import getopt
from OpenGL.GL import *
from OpenGL.GLU import *
def make_program(v_fname, f_fname):
vfh = open(v_fname, 'r')
v_source = vfh.read()
vfh.close()
ffh = open(f_fname, 'r')
f_source = ffh.read()
ffh.close()
v_id = glCreateShader(GL_VERTEX_SHADER)
f_id = glCreateShader(GL_FRAGMENT_SHADER)
glShaderSource(v_id, [v_source])
glShaderSource(f_id, [f_source])
glCompileShader(v_id)
glCompileShader(f_id)
p_id = glCreateProgram()
glAttachShader(p_id, v_id)
glAttachShader(p_id, f_id)
glLinkProgram(p_id)
glDeleteShader(v_id)
glDeleteShader(f_id)
return p_id
def main(argv):
options, args = getopt.getopt(argv[1:], '')
if len(args) == 0:
@ -21,6 +49,16 @@ def main(argv):
window.UseVerticalSync(True)
window.SetActive(True)
plain_program = make_program('v_shader.glsl', 'f_shader.glsl')
tex_program = make_program('v_tex_shader.glsl', 'f_tex_shader.glsl')
if plain_program == 0:
sys.stderr.write('plain_program did not build successfully\n')
return 2
if tex_program == 0:
sys.sterr.write('tex_program did not build successfully\n')
return 2
glClearDepth(1)
glClearColor(0, 0, 0, 0)
glEnable(GL_LIGHTING)