124 glDeleteProgram(program.id); |
124 glDeleteProgram(program.id); |
125 } |
125 } |
126 program.id = 0; |
126 program.id = 0; |
127 } |
127 } |
128 |
128 |
129 static AscShaderProgram asc_shader_compile_link_discard( |
129 AscShaderProgram asc_shader_easy_compile_and_link( |
130 char const *vtxName, char const *fragName) { |
130 char const *vtxName, char const *fragName) { |
131 AscShader font_vtx = asc_shader_compilef(GL_VERTEX_SHADER, vtxName); |
131 AscShader font_vtx = asc_shader_compilef(GL_VERTEX_SHADER, vtxName); |
132 AscShader font_frag = asc_shader_compilef(GL_FRAGMENT_SHADER, fragName); |
132 AscShader font_frag = asc_shader_compilef(GL_FRAGMENT_SHADER, fragName); |
133 AscShaderProgram prog = asc_shader_link(font_vtx, font_frag); |
133 AscShaderProgram prog = asc_shader_link(font_vtx, font_frag); |
134 asc_shader_destroy(font_vtx); |
134 asc_shader_destroy(font_vtx); |
135 asc_shader_destroy(font_frag); |
135 asc_shader_destroy(font_frag); |
136 return prog; |
136 return prog; |
137 } |
137 } |
138 |
|
139 void asc_shader_initialize_predefined(void) { |
|
140 ASC_SHADER_SPRITE.base = asc_shader_compile_link_discard("shader/sprite_vtx.glsl", "shader/sprite_frag.glsl"); |
|
141 ASC_SHADER_SPRITE.surface = glGetUniformLocation(ASC_SHADER_SPRITE.base.id, "surface"); |
|
142 ASC_SHADER_SPRITE.depth = glGetUniformLocation(ASC_SHADER_SPRITE.base.id, "depth"); |
|
143 } |
|
144 |
|
145 void asc_shader_destroy_predefined(void) { |
|
146 asc_shader_program_destroy(ASC_SHADER_SPRITE.base); |
|
147 } |
|