Mercurial > repos > blastem
diff render_sdl.c @ 742:2e1b3b258523
Make Windows port a little less half-assed
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 01 Apr 2014 21:12:00 -0700 |
parents | b7b7a1cab44a |
children | fc68992cf18d |
line wrap: on
line diff
--- a/render_sdl.c Tue Apr 01 19:43:58 2014 -0700 +++ b/render_sdl.c Tue Apr 01 21:12:00 2014 -0700 @@ -113,14 +113,22 @@ GLuint load_shader(char * fname, GLenum shader_type) { - char * parts[] = {getenv("HOME"), "/.config/blastem/shaders/", fname}; + char * parts[] = {get_home_dir(), "/.config/blastem/shaders/", fname}; char * shader_path = alloc_concat_m(3, parts); + printf("Trying to find shader at %s\n", shader_path); FILE * f = fopen(shader_path, "r"); free(shader_path); if (!f) { +#ifdef _WIN32 + parts[0] = "shaders/"; + parts[1] = fname; + shader_path = alloc_concat_m(2, parts); +#else parts[0] = get_exe_dir(); parts[1] = "/shaders/"; shader_path = alloc_concat_m(3, parts); +#endif + printf("Trying to find shader at %s\n", shader_path); f = fopen(shader_path, "r"); free(shader_path); if (!f) { @@ -128,6 +136,7 @@ return 0; } } + puts("reading shader"); long fsize = file_size(f); GLchar * text = malloc(fsize); if (fread(text, 1, fsize, f) != fsize) { @@ -138,6 +147,7 @@ GLuint ret = glCreateShader(shader_type); glShaderSource(ret, 1, (const GLchar **)&text, (const GLint *)&fsize); free(text); + puts("compiling shader"); glCompileShader(ret); GLint compile_status, loglen; glGetShaderiv(ret, GL_COMPILE_STATUS, &compile_status); @@ -162,6 +172,7 @@ context->oddbuf = context->framebuf = malloc(512 * 256 * 4 * 2); memset(context->oddbuf, 0, 512 * 256 * 4 * 2); context->evenbuf = ((char *)context->oddbuf) + 512 * 256 * 4; + puts("generating textures"); glGenTextures(3, textures); for (int i = 0; i < 3; i++) { @@ -182,11 +193,15 @@ glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[1]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(element_data), element_data, GL_STATIC_DRAW); + puts("Loading vertex shader"); vshader = load_shader(tern_find_ptr_default(config, "videovertex_shader", "default.v.glsl"), GL_VERTEX_SHADER); + puts("loading fragment shader"); fshader = load_shader(tern_find_ptr_default(config, "videofragment_shader", "default.f.glsl"), GL_FRAGMENT_SHADER); + puts("creating program"); program = glCreateProgram(); glAttachShader(program, vshader); glAttachShader(program, fshader); + puts("linking program"); glLinkProgram(program); GLint link_status; glGetProgramiv(program, GL_LINK_STATUS, &link_status); @@ -205,6 +220,7 @@ #ifndef DISABLE_OPENGL } #endif + puts("alloc surfaces done"); } uint8_t render_depth()