create GLSL programs from shader sources
This commit is contained in:
parent
af989f07ee
commit
25082e9b1b
@ -8,6 +8,34 @@ import getopt
|
|||||||
from OpenGL.GL import *
|
from OpenGL.GL import *
|
||||||
from OpenGL.GLU 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):
|
def main(argv):
|
||||||
options, args = getopt.getopt(argv[1:], '')
|
options, args = getopt.getopt(argv[1:], '')
|
||||||
if len(args) == 0:
|
if len(args) == 0:
|
||||||
@ -21,6 +49,16 @@ def main(argv):
|
|||||||
window.UseVerticalSync(True)
|
window.UseVerticalSync(True)
|
||||||
window.SetActive(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)
|
glClearDepth(1)
|
||||||
glClearColor(0, 0, 0, 0)
|
glClearColor(0, 0, 0, 0)
|
||||||
glEnable(GL_LIGHTING)
|
glEnable(GL_LIGHTING)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user