+#ifdef HAVE_PPM
+
+/* load pnm from stdin using pnm libs */
+void loadTexture(void)
+{
+ FILE *file = stdin;
+ gflux->image = ppm_readppm( file,
+ &(gflux->imageHeight), &(gflux->imageWidth), &(gflux->imageMax) );
+}
+
+/* creates an image for texture mapping */
+void createTexture(void)
+{
+ int i,j,c;
+ pixel **result;
+
+ gflux->imageHeight = gflux->imageWidth = 8;
+
+ result = ppm_allocarray(gflux->imageHeight,gflux->imageWidth);
+ for(i=0;i<gflux->imageHeight;i++) {
+ for(j=0;j<gflux->imageWidth;j++) {
+ c = (((i)%2 ^ (j)%2) ? 100 : 200 );
+ PPM_ASSIGN( result[i][j] , c, c, c );
+ }
+ }
+ gflux->image = result;
+}
+
+/* specifies image as texture */
+void initTexture(void)
+{
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ glGenTextures(1, &gflux->texName);
+ glBindTexture(GL_TEXTURE_2D, gflux->texName);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, gflux->imageWidth,
+ gflux->imageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, *(gflux->image));
+
+}
+
+#else /* HAVE_PPM FALSE */
+