diff options
author | taw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-07-24 16:40:35 +0000 |
---|---|---|
committer | taw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-07-24 16:40:35 +0000 |
commit | 103a64f376c03711cc641c08ec968245586320c5 (patch) | |
tree | 3ba104c0a52fddfbc4f49778aeb2509e5abe9da3 | |
parent | 629c0e0b26f739dba68b103fcfb37b42fe2c8666 (diff) |
Wrap render.c to 120 columns
Introduce convenience functions
git-svn-id: svn://cook.msm.cam.ac.uk:745/thrust3d/thrust3d@167 84d2e878-0bd5-11dd-ad15-13eda11d74c5
-rw-r--r-- | src/render.c | 85 |
1 files changed, 55 insertions, 30 deletions
diff --git a/src/render.c b/src/render.c index 06c12a7..3995c74 100644 --- a/src/render.c +++ b/src/render.c @@ -28,6 +28,24 @@ #define PANEL_ALPHA 0.3 +static void render_setunf(GLuint program, const char *name, GLfloat val) { + GLint loc; + loc = glGetUniformLocation(program, name); + glUniform1f(loc, val); +} + +static void render_setun2f(GLuint program, const char *name, GLfloat val1, GLfloat val2) { + GLint loc; + loc = glGetUniformLocation(program, name); + glUniform2f(loc, val1, val2); +} + +static void render_setuni(GLuint program, const char *name, GLint val) { + GLint loc; + loc = glGetUniformLocation(program, name); + glUniform1i(loc, val); +} + /* Utility function to load and compile a shader, checking the info log */ static GLuint render_load_shader(const char *filename, GLenum type) { @@ -147,7 +165,8 @@ RenderContext *render_setup(int width, int height, int disable_vbos, int disable r->vbos = 1; } else { r->vbos = 0; - fprintf(stderr, "Vertex buffer objects are not supported by your graphics card (or maybe just by its driver).\n"); + fprintf(stderr, "Vertex buffer objects are not supported by your graphics card " + "(or maybe just by its driver).\n"); fprintf(stderr, " -> Geometry performance may be less than optimal.\n"); } } else { @@ -163,7 +182,8 @@ RenderContext *render_setup(int width, int height, int disable_vbos, int disable r->fbos = 1; } else { r->fbos = 0; - fprintf(stderr, "Framebuffer objects are not supported by your graphics card (or maybe just by its driver).\n"); + fprintf(stderr, "Framebuffer objects are not supported by your graphics card" + "(or maybe just by its driver).\n"); } } else { printf("The use of framebuffer objects has been disabled at your request.\n"); @@ -179,7 +199,8 @@ RenderContext *render_setup(int width, int height, int disable_vbos, int disable r->shaders = 1; } else { r->shaders = 0; - fprintf(stderr, "Shaders are not supported by your graphics card (or maybe just by its driver).\n"); + fprintf(stderr, "Shaders are not supported by your graphics card" + "(or maybe just by its driver).\n"); } } else { printf("The use of shaders has been disabled at your request.\n"); @@ -217,7 +238,8 @@ RenderContext *render_setup(int width, int height, int disable_vbos, int disable glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, r->swirly_texture, 0); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + GL_TEXTURE_2D, r->swirly_texture, 0); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); } @@ -294,7 +316,7 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC GLfloat black[] = {0.0, 0.0, 0.0, 1.0}; int wibble; - if ( r->shaders ) glUniform1f(glGetUniformLocation(r->lighting_program, "alpha"), alpha); + if ( r->shaders ) render_setunf(r->lighting_program, "alpha", alpha); if ( nvert == NULL ) nvert = &wibble; @@ -310,7 +332,8 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC p = m->primitives[j]; - if ( ((p->attribs & ATTRIB_PULSE) && !(p->attribs & ATTRIB_SWIRLY)) || ((p->attribs & ATTRIB_SWIRLY) && !(r->fbos && r->shaders)) ) { + if ( ((p->attribs & ATTRIB_PULSE) && !(p->attribs & ATTRIB_SWIRLY)) + || ((p->attribs & ATTRIB_SWIRLY) && !(r->fbos && r->shaders)) ) { float s; s = fabsf(0.4*cosf(t * 0.001)); GLfloat c[] = {s*p->col_r, s*p->col_g, s*p->col_b, 1.0}; @@ -338,7 +361,7 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC /* Location and orientation */ glPushMatrix(); glTranslatef(x, y, z); - glRotatef(rad2deg(instance->yaw), 0.0, 0.0, -1.0); /* Minus sign defines +yaw as "right" */ + glRotatef(rad2deg(instance->yaw), 0.0, 0.0, -1.0); /* Minus sign defines +yaw as "right" */ /* Texture */ if ( p->attribs & ATTRIB_SWIRLY ) { @@ -347,10 +370,10 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC glEnable(GL_TEXTURE_2D); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glUniform1i(glGetUniformLocation(r->lighting_program, "texture_emits"), 1); + render_setuni(r->lighting_program, "texture_emits", 1); } else { if ( r->shaders ) { - glUniform1i(glGetUniformLocation(r->lighting_program, "texture_enabled"), 0); + render_setuni(r->lighting_program, "texture_enabled", 0); } /* else don't enable texturing */ } } else if ( p->texture != NULL ) { @@ -360,12 +383,12 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC glBindTexture(GL_TEXTURE_2D, texture->texname); glEnable(GL_TEXTURE_2D); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - if ( r->shaders ) glUniform1i(glGetUniformLocation(r->lighting_program, "texture_enabled"), 1); + if ( r->shaders ) render_setuni(r->lighting_program, "texture_enabled", 1); } else { - if ( r->shaders ) glUniform1i(glGetUniformLocation(r->lighting_program, "texture_enabled"), 0); + if ( r->shaders ) render_setuni(r->lighting_program, "texture_enabled", 0); } } else { - if ( r->shaders ) glUniform1i(glGetUniformLocation(r->lighting_program, "texture_enabled"), 0); + if ( r->shaders ) render_setuni(r->lighting_program, "texture_enabled", 0); } if ( r->vbos ) { glBindBuffer(GL_ARRAY_BUFFER, p->vertices_buffer); @@ -386,7 +409,7 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC glPopMatrix(); if ( p->attribs & ATTRIB_SWIRLY ) { - if ( r->shaders ) glUniform1i(glGetUniformLocation(r->lighting_program, "texture_emits"), 0); + if ( r->shaders ) render_setuni(r->lighting_program, "texture_emits", 0); } } else { @@ -404,7 +427,7 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC glDrawArrays(GL_QUADS, 0, HEMI_NUM_VERTICES); *nvert += HEMI_NUM_VERTICES; - if ( r->shaders ) glUniform1i(glGetUniformLocation(r->lighting_program, "texture_emits"), 0); + if ( r->shaders ) if ( r->shaders ) render_setuni(r->lighting_program, "texture_emits", 0); glDisable(GL_RESCALE_NORMAL); @@ -647,21 +670,22 @@ void render_draw(Game *game, Uint32 t) { GLfloat rrb = 0.0; glUseProgram(r->swirly_program); - glUniform1f(glGetUniformLocation(game->render->swirly_program, "time"), t); - glUniform1i(glGetUniformLocation(game->render->swirly_program, "landed"), game->lander->recharging); + render_setunf(game->render->swirly_program, "time", t); + render_setuni(game->render->swirly_program, "landed", game->lander->recharging); if ( game->lander->recharging ) { /* Fade in */ rrb = fminf(((GLfloat)t-game->time_of_landing_event)/1500.0, 1.0); - glUniform1i(glGetUniformLocation(game->render->swirly_program, "rechargeripple"), 1); + render_setuni(game->render->swirly_program, "rechargeripple", 1); } else if ( game->time_of_landing_event - t < 750 ) { /* Fade out */ rrb = fmaxf(1.0 - ((GLfloat)t-game->time_of_landing_event)/750.0, 0.0); - glUniform1i(glGetUniformLocation(game->render->swirly_program, "rechargeripple"), 1); + render_setuni(game->render->swirly_program, "rechargeripple", 1); } else { - glUniform1i(glGetUniformLocation(game->render->swirly_program, "rechargeripple"), 0); + render_setuni(game->render->swirly_program, "rechargeripple", 0); } - glUniform1f(glGetUniformLocation(game->render->swirly_program, "rrb"), rrb); - glUniform2f(glGetUniformLocation(game->render->swirly_program, "lander"), game->platform_rel_x, game->platform_rel_y); + render_setunf(game->render->swirly_program, "rrb", rrb); + render_setun2f(game->render->swirly_program, "lander", + game->platform_rel_x, game->platform_rel_y); } /* else this is all a little pointless... */ glMatrixMode(GL_PROJECTION); @@ -694,10 +718,10 @@ void render_draw(Game *game, Uint32 t) { sqrtf(2.0)*sinf(game->lander->yaw)*sinf(game->view_angle), sqrtf(2.0)*cosf(game->lander->yaw)*sinf(game->view_angle), sqrtf(2.0)*cosf(game->view_angle)); if ( r->shaders ) glUseProgram(r->lighting_program); - if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "texture"), 0); /* Using GL_TEXTURE0 */ - if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "texture_only"), 0); - if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "texture_enabled"), 1); - if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "fill_light_enabled"), 0); + if ( r->shaders ) render_setuni(game->render->lighting_program, "texture", 0); /* GL_TEXTURE0 */ + if ( r->shaders ) render_setuni(game->render->lighting_program, "texture_only", 0); + if ( r->shaders ) render_setuni(game->render->lighting_program, "texture_enabled", 1); + if ( r->shaders ) render_setuni(game->render->lighting_program, "fill_light_enabled", 0); render_setup_lighting(game); amb[0] = 0.02; amb[1] = 0.02; amb[2] = 0.02; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, amb); @@ -711,16 +735,17 @@ void render_draw(Game *game, Uint32 t) { glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); - if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "fill_light_enabled"), 1); + if ( r->shaders ) render_setuni(game->render->lighting_program, "fill_light_enabled", 1); render_model_instance_draw(game->lander, t, r, NULL, 1.0); - if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "fill_light_enabled"), 0); + if ( r->shaders ) render_setuni(game->render->lighting_program, "fill_light_enabled", 0); glPopClientAttrib(); - if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "texture_enabled"), 0); - render_draw_line(game->lander->x, game->lander->y, game->lander->z, game->lander->x, game->lander->y, game->lander->z-200.0); + if ( r->shaders ) render_setuni(game->render->lighting_program, "texture_enabled", 0); + render_draw_line(game->lander->x, game->lander->y, game->lander->z, + game->lander->x, game->lander->y, game->lander->z-200.0); glDisable(GL_LIGHT2); /* Back faces (done last to make blending work properly) */ - if ( r->shaders ) glUseProgram(0); /* Speed things up a bit by not using per-fragment lighting for back faces */ + if ( r->shaders ) glUseProgram(0); /* Speed things up a bit by not using per-fragment lighting */ glFrontFace(GL_CW); glPolygonOffset(1.0, 1.0); glEnable(GL_POLYGON_OFFSET_FILL); |