textures, lightmaps, hardcoded texture hack for testing
[laserbrain_demo] / src / mesh.cc
index beb5b49..e17b909 100644 (file)
@@ -9,15 +9,7 @@
 #define USE_OLDGL
 
 bool Mesh::use_custom_sdr_attr = true;
-int Mesh::global_sdr_loc[NUM_MESH_ATTR] = { 0, 1, 2, 3, 4, 5, 6 };
-/*
-       (int)SDR_ATTR_VERTEX,
-       (int)SDR_ATTR_NORMAL,
-       (int)SDR_ATTR_TANGENT,
-       (int)SDR_ATTR_TEXCOORD,
-       (int)SDR_ATTR_COLOR,
-       -1, -1};
-*/
+int Mesh::global_sdr_loc[NUM_MESH_ATTR] = { 0, 1, 2, 3, 4, 5, 6, 7 };
 unsigned int Mesh::intersect_mode = ISECT_DEFAULT;
 float Mesh::vertex_sel_dist = 0.01;
 float Mesh::vis_vecsize = 1.0;
@@ -680,6 +672,13 @@ bool Mesh::pre_draw() const
                        glColorPointer(vattr[MESH_ATTR_COLOR].nelem, GL_FLOAT, 0, 0);
                        glEnableClientState(GL_COLOR_ARRAY);
                }
+               if(vattr[MESH_ATTR_TEXCOORD2].vbo_valid) {
+                       glClientActiveTexture(GL_TEXTURE1);
+                       glBindBuffer(GL_ARRAY_BUFFER, vattr[MESH_ATTR_TEXCOORD2].vbo);
+                       glTexCoordPointer(vattr[MESH_ATTR_TEXCOORD2].nelem, GL_FLOAT, 0, 0);
+                       glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+                       glClientActiveTexture(GL_TEXTURE0);
+               }
 #endif
        }
        glBindBuffer(GL_ARRAY_BUFFER, 0);
@@ -725,6 +724,11 @@ void Mesh::post_draw() const
                if(vattr[MESH_ATTR_COLOR].vbo_valid) {
                        glDisableClientState(GL_COLOR_ARRAY);
                }
+               if(vattr[MESH_ATTR_TEXCOORD2].vbo_valid) {
+                       glClientActiveTexture(GL_TEXTURE1);
+                       glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+                       glClientActiveTexture(GL_TEXTURE0);
+               }
 #endif
        }
 }
@@ -1087,7 +1091,7 @@ bool Mesh::dump(FILE *fp) const
        }
 
        fprintf(fp, "VERTEX ATTRIBUTES\n");
-       static const char *label[] = { "pos", "nor", "tan", "tex", "col", "bw", "bid" };
+       static const char *label[] = { "pos", "nor", "tan", "tex", "col", "bw", "bid", "tex2" };
        static const char *elemfmt[] = { 0, " %s(%g)", " %s(%g, %g)", " %s(%g, %g, %g)", " %s(%g, %g, %g, %g)", 0 };
 
        for(int i=0; i<(int)nverts; i++) {