diff --git a/d3/shader.py b/d3/shader.py index c0ba932..e55cc7e 100644 --- a/d3/shader.py +++ b/d3/shader.py @@ -4,16 +4,22 @@ dir_path = os.path.dirname(os.path.realpath(__file__)) import OpenGL.GL as gl import OpenGL.GL.shaders as sh -class DefaultShader: +default_vertex_path = dir_path + '/../assets/shaders/shader.vert' +default_fragment_path = dir_path + '/../assets/shaders/shader.frag' - def __init__(self, vertex_path = None, fragment_path = None): +class Shader: + """Shader - if vertex_path is None: - vertex_path = dir_path + '/../assets/shaders/shader.vert' - if fragment_path is None: - fragment_path = dir_path + '/../assets/shaders/shader.frag' + Loads, compile and binds the shader that are in the assets/shaders + directory + """ + def __init__(self, vertex_path = default_vertex_path, fragment_path = default_fragment_path): + """Creates a shader object, and compile it + :param vertex_path: path to the vertex shader + :param fragment_path: path to the fragment shader + """ with open(vertex_path) as f: self.vertex_src = f.read() @@ -23,17 +29,25 @@ class DefaultShader: self.compile_shaders() self.compile_program() - def compile_shaders(self): + """ Compiles the shader + """ self.vertex_shader = sh.compileShader(self.vertex_src, gl.GL_VERTEX_SHADER) self.fragment_shader = sh.compileShader(self.fragment_src, gl.GL_FRAGMENT_SHADER) def compile_program(self): + """Compile the shader program + + The shaders must be compiled + """ self.program = sh.compileProgram(self.vertex_shader, self.fragment_shader) def bind(self): + """Bind the current shader to the OpenGL context + """ gl.glUseProgram(self.program) def unbind(self): + """Reset OpenGL shader to 0 + """ gl.glUseProgram(0) - pass diff --git a/viewer.py b/viewer.py index b73371d..903bd07 100755 --- a/viewer.py +++ b/viewer.py @@ -37,7 +37,7 @@ from d3.model.tools import load_model from d3.geometry import Vector from d3.controls import TrackBallControls, OrbitControls from d3.camera import Camera -from d3.shader import DefaultShader +from d3.shader import Shader WINDOW_WIDTH = 1024 WINDOW_HEIGHT = 1024 @@ -112,7 +112,7 @@ def main(args): log(' done!\nGenerating vbos...', file=sys.stderr, end='') model.generate_vbos() - shader = DefaultShader() + shader = Shader() log(' Done!\nReady!', file=sys.stderr)