diff --git a/progs/SConscript b/progs/SConscript
index 544ea64..1670f97 100644
--- a/progs/SConscript
+++ b/progs/SConscript
@@ -5,5 +5,6 @@
     'samples/SConscript',
     'trivial/SConscript',
     'vp/SConscript',
+    'vpglsl/SConscript',
     'fp/SConscript',
 ])
diff --git a/progs/vpglsl/Makefile b/progs/vpglsl/Makefile
index 313b4df..3982aca 100644
--- a/progs/vpglsl/Makefile
+++ b/progs/vpglsl/Makefile
@@ -7,7 +7,7 @@
 TOP = ../..
 include $(TOP)/configs/current
 
-LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS)
+LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB)  -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS)
 
 SOURCES = \
 	vp-tris.c
diff --git a/progs/vpglsl/vp-tris.c b/progs/vpglsl/vp-tris.c
index 9108d3f..9ae410b 100644
--- a/progs/vpglsl/vp-tris.c
+++ b/progs/vpglsl/vp-tris.c
@@ -4,7 +4,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
-#define GL_GLEXT_PROTOTYPES
+
+#include <GL/glew.h>
 #include <GL/glut.h>
 
 static const char *filename = NULL;
@@ -99,27 +100,29 @@
 
    }
 
-   GLuint loc1f = glGetUniformLocationARB(program, "KernelValue1f");
-   GLuint loc2f = glGetUniformLocationARB(program, "KernelValue2f");
-   GLuint loc4f = glGetUniformLocationARB(program, "KernelValue4f");
-   GLfloat vecKer[] =
-      { 1.0, 0.0, 0.0,  0.25,
-        0.0, 1.0, 0.0,  0.25,
-        0.0, 0.0, 1.0,  0.25,
-        0.0, 0.0, 0.0,  0.25,
-        0.5, 0.0, 0.0,  0.35,
-        0.0, 0.5, 0.0,  0.35,
-        0.0, 0.0, 0.5,  0.35,
-        0.0, 0.0, 0.0,  0.35
-      };
-   if (loc1f >= 0)
-      glUniform1fv(loc1f, 16, vecKer);
+   {
+      GLuint loc1f = glGetUniformLocationARB(program, "KernelValue1f");
+      GLuint loc2f = glGetUniformLocationARB(program, "KernelValue2f");
+      GLuint loc4f = glGetUniformLocationARB(program, "KernelValue4f");
+      GLfloat vecKer[] =
+         { 1.0, 0.0, 0.0,  0.25,
+           0.0, 1.0, 0.0,  0.25,
+           0.0, 0.0, 1.0,  0.25,
+           0.0, 0.0, 0.0,  0.25,
+           0.5, 0.0, 0.0,  0.35,
+           0.0, 0.5, 0.0,  0.35,
+           0.0, 0.0, 0.5,  0.35,
+           0.0, 0.0, 0.0,  0.35
+         };
+      if (loc1f >= 0)
+         glUniform1fv(loc1f, 16, vecKer);
 
-   if (loc2f >= 0)
-      glUniform2fv(loc2f, 8, vecKer);
+      if (loc2f >= 0)
+         glUniform2fv(loc2f, 8, vecKer);
 
-   if (loc4f >= 0)
-      glUniform4fv(loc4f, 4, vecKer);
+      if (loc4f >= 0)
+         glUniform4fv(loc4f, 4, vecKer);
+   }
 }
 
 static void prepare_shaders()
@@ -303,6 +306,7 @@
    glutInitWindowSize( 250, 250 );
    glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH );
    glutCreateWindow(argv[0]);
+   glewInit();
    glutReshapeFunc( Reshape );
    glutKeyboardFunc( Key );
    glutDisplayFunc( Display );
