MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / CompileShaderProgram

Function CompileShaderProgram

deps/SDL2/test/testshader.c:150–191  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

148}
149
150static SDL_bool CompileShaderProgram(ShaderData *data)
151{
152 const int num_tmus_bound = 4;
153 int i;
154 GLint location;
155
156 glGetError();
157
158 /* Create one program object to rule them all */
159 data->program = glCreateProgramObjectARB();
160
161 /* Create the vertex shader */
162 data->vert_shader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
163 if (!CompileShader(data->vert_shader, data->vert_source)) {
164 return SDL_FALSE;
165 }
166
167 /* Create the fragment shader */
168 data->frag_shader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
169 if (!CompileShader(data->frag_shader, data->frag_source)) {
170 return SDL_FALSE;
171 }
172
173 /* ... and in the darkness bind them */
174 glAttachObjectARB(data->program, data->vert_shader);
175 glAttachObjectARB(data->program, data->frag_shader);
176 glLinkProgramARB(data->program);
177
178 /* Set up some uniform variables */
179 glUseProgramObjectARB(data->program);
180 for (i = 0; i < num_tmus_bound; ++i) {
181 char tex_name[5];
182 SDL_snprintf(tex_name, SDL_arraysize(tex_name), "tex%d", i);
183 location = glGetUniformLocationARB(data->program, tex_name);
184 if (location >= 0) {
185 glUniform1iARB(location, i);
186 }
187 }
188 glUseProgramObjectARB(0);
189
190 return (glGetError() == GL_NO_ERROR) ? SDL_TRUE : SDL_FALSE;
191}
192
193static void DestroyShaderProgram(ShaderData *data)
194{

Callers 1

InitShadersFunction · 0.70

Calls 2

SDL_snprintfFunction · 0.85
CompileShaderFunction · 0.70

Tested by

no test coverage detected