comparison render_sdl.c @ 800:ec23202df6a6

Minor cleanup
author Michael Pavone <pavone@retrodev.com>
date Sun, 26 Jul 2015 13:33:48 -0700
parents 0b692b5d154b
children 7ed55a361e79
comparison
equal deleted inserted replaced
799:0b692b5d154b 800:ec23202df6a6
124 parts[1] = "/shaders/"; 124 parts[1] = "/shaders/";
125 shader_path = alloc_concat_m(3, parts); 125 shader_path = alloc_concat_m(3, parts);
126 f = fopen(shader_path, "r"); 126 f = fopen(shader_path, "r");
127 free(shader_path); 127 free(shader_path);
128 if (!f) { 128 if (!f) {
129 fprintf(stderr, "Failed to open shader file %s for reading\n", fname); 129 warning("Failed to open shader file %s for reading\n", fname);
130 return 0; 130 return 0;
131 } 131 }
132 } 132 }
133 long fsize = file_size(f); 133 long fsize = file_size(f);
134 GLchar * text = malloc(fsize); 134 GLchar * text = malloc(fsize);
135 if (fread(text, 1, fsize, f) != fsize) { 135 if (fread(text, 1, fsize, f) != fsize) {
136 fprintf(stderr, "Error reading from shader file %s\n", fname); 136 warning("Error reading from shader file %s\n", fname);
137 free(text); 137 free(text);
138 return 0; 138 return 0;
139 } 139 }
140 GLuint ret = glCreateShader(shader_type); 140 GLuint ret = glCreateShader(shader_type);
141 glShaderSource(ret, 1, (const GLchar **)&text, (const GLint *)&fsize); 141 glShaderSource(ret, 1, (const GLchar **)&text, (const GLint *)&fsize);
142 free(text); 142 free(text);
143 glCompileShader(ret); 143 glCompileShader(ret);
144 GLint compile_status, loglen; 144 GLint compile_status, loglen;
145 glGetShaderiv(ret, GL_COMPILE_STATUS, &compile_status); 145 glGetShaderiv(ret, GL_COMPILE_STATUS, &compile_status);
146 if (!compile_status) { 146 if (!compile_status) {
147 fprintf(stderr, "Shader %s failed to compile\n", fname);
148 glGetShaderiv(ret, GL_INFO_LOG_LENGTH, &loglen); 147 glGetShaderiv(ret, GL_INFO_LOG_LENGTH, &loglen);
149 text = malloc(loglen); 148 text = malloc(loglen);
150 glGetShaderInfoLog(ret, loglen, NULL, text); 149 glGetShaderInfoLog(ret, loglen, NULL, text);
151 fputs(text, stderr); 150 warning("Shader %s failed to compile:\n%s\n", fname, text);
152 free(text); 151 free(text);
153 glDeleteShader(ret); 152 glDeleteShader(ret);
154 return 0; 153 return 0;
155 } 154 }
156 return ret; 155 return ret;
257 fatal_error("Unable to create SDL window: %s\n", SDL_GetError()); 256 fatal_error("Unable to create SDL window: %s\n", SDL_GetError());
258 } 257 }
259 main_context = SDL_GL_CreateContext(main_window); 258 main_context = SDL_GL_CreateContext(main_window);
260 GLenum res = glewInit(); 259 GLenum res = glewInit();
261 if (res != GLEW_OK) { 260 if (res != GLEW_OK) {
262 fprintf(stderr, "Initialization of GLEW failed with code %d\n", res); 261 warning("Initialization of GLEW failed with code %d\n", res);
263 } 262 }
264 263
265 if (GLEW_VERSION_2_0) { 264 if (res == GLEW_OK && GLEW_VERSION_2_0) {
266 render_gl = 1; 265 render_gl = 1;
267 } 266 } else {
268 else {
269 SDL_DestroyWindow(main_window); 267 SDL_DestroyWindow(main_window);
270 fputs("OpenGL 2.0 is unavailable, falling back to SDL2 renderer\n", stderr); 268 warning("OpenGL 2.0 is unavailable, falling back to SDL2 renderer\n", stderr);
271 #endif 269 #endif
272 SDL_CreateWindowAndRenderer(width, height, flags, &main_window, &main_renderer); 270 SDL_CreateWindowAndRenderer(width, height, flags, &main_window, &main_renderer);
273 271
274 if (!main_window || !main_renderer) { 272 if (!main_window || !main_renderer) {
275 fprintf(stderr, "unable to create SDL window: %s\n", SDL_GetError()); 273 fatal_error("unable to create SDL window: %s\n", SDL_GetError());
276 SDL_Quit();
277 exit(1);
278 } 274 }
279 main_clip.x = main_clip.y = 0; 275 main_clip.x = main_clip.y = 0;
280 main_clip.w = width; 276 main_clip.w = width;
281 main_clip.h = height; 277 main_clip.h = height;
282 #ifndef DISABLE_OPENGL 278 #ifndef DISABLE_OPENGL