src/shader.c

changeset 225
c42c7d1a3c34
parent 224
f72b80448413
equal deleted inserted replaced
224:f72b80448413 225:c42c7d1a3c34
188 } 188 }
189 #ifndef NDEBUG 189 #ifndef NDEBUG
190 // in debug mode, exit early when a shader compilation failed 190 // in debug mode, exit early when a shader compilation failed
191 for (unsigned i = 0 ; i < n ; i++) { 191 for (unsigned i = 0 ; i < n ; i++) {
192 if (shader[i] == 0) { 192 if (shader[i] == 0) {
193 asc_error("Shader %u compilation failed.", i);
194 for (unsigned j = 0; j < n; j++) { 193 for (unsigned j = 0; j < n; j++) {
195 if (shader[j] > 0) { 194 if (shader[j] > 0) {
196 asc_dprintf("Delete shader: %u", shader[j]); 195 asc_dprintf("Delete shader: %u", shader[j]);
197 glDeleteShader(shader[j]); 196 glDeleteShader(shader[j]);
198 } 197 }
249 return prog; 248 return prog;
250 } 249 }
251 } 250 }
252 #endif 251 #endif
253 AscShaderProgram *prog = create_func(create_flags); 252 AscShaderProgram *prog = create_func(create_flags);
254 if (prog == NULL) return NULL; 253 if (prog == NULL) {
254 // create an empty program to prevent future loading attempts
255 prog = cxZallocDefault(sizeof(AscShaderProgram));
256 }
255 prog->id = id; 257 prog->id = id;
256 cxListAdd(glctx->shaders, prog); 258 cxListAdd(glctx->shaders, prog);
257 return prog; 259 return prog;
258 } 260 }
259 261

mercurial