istereo

annotate src/istereo.c @ 4:14bbdfcb9030

resource path find code
author John Tsiombikas <nuclear@mutantstargoat.com>
date Wed, 07 Sep 2011 06:25:05 +0300
parents 2c5620f0670c
children 76ad575d72d0
rev   line source
nuclear@2 1 #include <stdio.h>
nuclear@2 2 #include <assert.h>
nuclear@3 3 #include <unistd.h>
nuclear@1 4 #include "opengl.h"
nuclear@0 5 #include "istereo.h"
nuclear@2 6 #include "sanegl.h"
nuclear@2 7 #include "sdr.h"
nuclear@4 8 #include "respath.h"
nuclear@4 9
nuclear@4 10 static unsigned int get_shader_program(const char *vfile, const char *pfile);
nuclear@2 11
nuclear@2 12 unsigned int prog;
nuclear@0 13
nuclear@0 14 int init(void)
nuclear@0 15 {
nuclear@4 16 add_resource_path("sdr");
nuclear@3 17
nuclear@4 18 if(!(prog = get_shader_program("test.v.glsl", "test.p.glsl"))) {
nuclear@2 19 fprintf(stderr, "failed to load shader program\n");
nuclear@2 20 return -1;
nuclear@2 21 }
nuclear@2 22
nuclear@0 23 return 0;
nuclear@0 24 }
nuclear@0 25
nuclear@0 26 void cleanup(void)
nuclear@0 27 {
nuclear@2 28 free_program(prog);
nuclear@0 29 }
nuclear@0 30
nuclear@0 31 void redraw(void)
nuclear@0 32 {
nuclear@0 33 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
nuclear@2 34
nuclear@2 35 bind_program(prog);
nuclear@2 36
nuclear@2 37 gl_matrix_mode(GL_MODELVIEW);
nuclear@2 38 gl_load_identity();
nuclear@2 39 gl_translatef(0, 0, -8);
nuclear@2 40
nuclear@2 41 gl_begin(GL_QUADS);
nuclear@2 42 gl_color3f(1, 0, 0);
nuclear@2 43 gl_vertex3f(-1, -1, 0);
nuclear@2 44 gl_color3f(0, 1, 0);
nuclear@2 45 gl_vertex3f(1, -1, 0);
nuclear@2 46 gl_color3f(0, 0, 1);
nuclear@2 47 gl_vertex3f(1, 1, 0);
nuclear@2 48 gl_color3f(1, 1, 0);
nuclear@2 49 gl_vertex3f(-1, 1, 0);
nuclear@2 50 gl_end();
nuclear@2 51
nuclear@2 52 assert(glGetError() == GL_NO_ERROR);
nuclear@0 53 }
nuclear@2 54
nuclear@2 55 void reshape(int x, int y)
nuclear@2 56 {
nuclear@2 57 glViewport(0, 0, x, y);
nuclear@2 58
nuclear@2 59 gl_matrix_mode(GL_PROJECTION);
nuclear@2 60 gl_load_identity();
nuclear@2 61 glu_perspective(45.0, (float)x / (float)y, 1.0, 1000.0);
nuclear@2 62 }
nuclear@4 63
nuclear@4 64 static unsigned int get_shader_program(const char *vfile, const char *pfile)
nuclear@4 65 {
nuclear@4 66 unsigned int prog, vs, ps;
nuclear@4 67
nuclear@4 68 if(!(vs = get_vertex_shader(find_resource(vfile, 0, 0)))) {
nuclear@4 69 return -1;
nuclear@4 70 }
nuclear@4 71 if(!(ps = get_pixel_shader(find_resource(pfile, 0, 0)))) {
nuclear@4 72 return -1;
nuclear@4 73 }
nuclear@4 74
nuclear@4 75 if(!(prog = create_program_link(vs, ps))) {
nuclear@4 76 return -1;
nuclear@4 77 }
nuclear@4 78 return prog;
nuclear@4 79 }