Mercurial > repos > blastem
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 |