-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshader_program.py
25 lines (19 loc) · 996 Bytes
/
shader_program.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class ShaderProgram:
def __init__(self, ctx):
self.ctx = ctx
self.programs = {}
self.programs['default'] = self.get_program('default')
self.programs['skybox'] = self.get_program('skybox')
self.programs['advanced_skybox'] = self.get_program('advanced_skybox')
self.programs['shadow_map'] = self.get_program('shadow_map')
self.programs['cube_mapping1'] = self.get_program('cube_mapping')
self.programs['cube_mapping'] = self.get_program('cube_mapping')
def get_program(self, shader_program_name):
with open(f'shaders/{shader_program_name}.vert') as file:
vertex_shader = file.read()
with open(f'shaders/{shader_program_name}.frag') as file:
fragment_shader = file.read()
program = self.ctx.program(vertex_shader=vertex_shader, fragment_shader=fragment_shader)
return program
def destroy(self):
[program.release() for program in self.programs.values()]