aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/render.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/render.c b/src/render.c
index 26d1dcc..84de330 100644
--- a/src/render.c
+++ b/src/render.c
@@ -185,6 +185,7 @@ RenderContext *render_setup(int width, int height, int disable_vbos, int disable
/* Load misc texture bits */
texture_load(r, "radioactive");
texture_load(r, "fuel");
+ texture_load(r, "placeholder");
render_text_setup(r);
@@ -209,6 +210,20 @@ static GLenum render_gltype(PrimitiveType type) {
}
+static void render_placeholder_texture(RenderContext *r) {
+
+ Texture *texture;
+
+ texture = texture_lookup(r, "placeholder");
+ if ( texture != NULL ) {
+ glBindTexture(GL_TEXTURE_2D, texture->texname);
+ glEnable(GL_TEXTURE_2D);
+ } else {
+ fprintf(stderr, "Couldn't find placeholder texture!\n");
+ }
+
+}
+
static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderContext *r, int *nvert, GLfloat alpha) {
int j;
@@ -271,9 +286,8 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
shaderutils_setuni(r->lighting_program, "texture_emits", 1);
} else {
- if ( r->shaders ) {
- shaderutils_setuni(r->lighting_program, "texture_enabled", 0);
- } /* else don't enable texturing */
+ if ( r->shaders ) render_placeholder_texture(r);
+ /* else don't glEnable() texturing */
}
} else if ( p->texture != NULL ) {
Texture *texture;
@@ -282,7 +296,6 @@ 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 ) shaderutils_setuni(r->lighting_program, "texture_enabled", 1);
if ( r->shaders && texture->has_normals ) {
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture->normalmap);
@@ -290,10 +303,10 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC
glActiveTexture(GL_TEXTURE0);
}
} else {
- if ( r->shaders ) shaderutils_setuni(r->lighting_program, "texture_enabled", 0);
+ if ( r->shaders ) render_placeholder_texture(r);
}
} else {
- if ( r->shaders ) shaderutils_setuni(r->lighting_program, "texture_enabled", 0);
+ if ( r->shaders ) render_placeholder_texture(r);
}
if ( r->vbos ) {
glBindBuffer(GL_ARRAY_BUFFER, p->vertices_buffer);
@@ -623,7 +636,6 @@ void render_draw(Game *game, Uint32 t) {
shaderutils_setuni(game->render->lighting_program, "texture", 0); /* GL_TEXTURE0 */
shaderutils_setuni(game->render->lighting_program, "normalmap", 1); /* GL_TEXTURE1 */
shaderutils_setuni(game->render->lighting_program, "texture_only", 0);
- shaderutils_setuni(game->render->lighting_program, "texture_enabled", 1);
shaderutils_setuni(game->render->lighting_program, "has_normals", 0);
}
render_setup_lighting(game);