optimized blob exhibit
[laserbrain_demo] / src / blob_exhibit.cc
index 3d13396..58522d9 100644 (file)
@@ -49,10 +49,11 @@ bool BlobExhibit::init()
        }
        msurf_set_threshold(priv->msurf, 8);
        msurf_set_inside(priv->msurf, MSURF_GREATER);
-       msurf_set_bounds(priv->msurf, -3.5, 3.5, -3.5, 3.5, -3.5, 3.5);
+       msurf_set_bounds(priv->msurf, -3.5, -3.5, -3.5, 3.5, 3.5, 3.5);
        msurf_enable(priv->msurf, MSURF_NORMALIZE);
 
        priv->tex = texman.get_texture("data/sphmap.jpg");
+
        return true;
 }
 
@@ -91,11 +92,10 @@ void BlobExhibit::update(float dt)
 
        float max_energy = 0.0f;
 
-//#pragma omp parallel for
+#pragma omp parallel for
        for(int i=0; i<zres; i++) {
                float z = zmin + i * zstep;
                float *voxptr = msurf_slice(priv->msurf, i);
-               if(!voxptr) break;
 
                for(int j=0; j<yres; j++) {
                        float y = ymin + j * ystep;
@@ -141,25 +141,24 @@ void BlobExhibit::draw() const
        glLoadIdentity();
        glScalef(1, -1, 1);
 
-       glFrontFace(GL_CW);
-
-
        int nverts = msurf_vertex_count(priv->msurf);
        float *varr = msurf_vertices(priv->msurf);
        float *narr = msurf_normals(priv->msurf);
 
-       glBegin(GL_TRIANGLES);
        glColor3f(1, 1, 1);
-       for(int i=0; i<nverts; i++) {
-               glNormal3f(narr[0], narr[1], narr[2]);
-               glVertex3f(varr[0], varr[1], varr[2]);
-               varr += 3;
-               narr += 3;
-       }
-       glEnd();
 
-       glFrontFace(GL_CCW);
+       glBindBuffer(GL_ARRAY_BUFFER, 0);
+       glEnableClientState(GL_VERTEX_ARRAY);
+       glEnableClientState(GL_NORMAL_ARRAY);
+       glVertexPointer(3, GL_FLOAT, 0, varr);
+       glNormalPointer(GL_FLOAT, 0, narr);
+
+       glDrawArrays(GL_TRIANGLES, 0, nverts);
+
+       glDisableClientState(GL_VERTEX_ARRAY);
+       glDisableClientState(GL_NORMAL_ARRAY);
 
+       /*
        glDisable(GL_TEXTURE_2D);
        glDisable(GL_LIGHTING);
 
@@ -177,6 +176,7 @@ void BlobExhibit::draw() const
                narr += 3;
        }
        glEnd();
+       */
 
        glLoadIdentity();
        glMatrixMode(GL_MODELVIEW);