#include "auxWindow.h" #include "aux.h" void setupGL(); int auxMakeWindow(int xsize, int ysize, int zoom) { auxInitDisplayMode(AUX_SINGLE | AUX_RGBA); auxInitPosition(0,0 ,xsize*zoom,ysize*zoom); auxInitWindow("Vidwin - aux - jedavis@cs.stanford.edu"); //glRasterPos2i(0,0); glLoadIdentity(); glViewport(0, 0, xsize*zoom, ysize*zoom); glOrtho(0, xsize*zoom, 0, ysize*zoom, -1, 1); glRasterPos2f(0, zoom*ysize-1); glPixelZoom(zoom,-zoom); // setupGL(); // Doesnt seem to help speed return 0; } void setupGL() { /* * Is there a 24-bit visual? if not, we want to dither RGB. */ int doDither = 1; //Display * dpy = XtDisplay(getDeviceWidget()); //XVisualInfo vinfo; // XVisualInfo *viList; // int nitems; //vinfo.depth = 24; // viList = XGetVisualInfo(dpy, VisualDepthMask, &vinfo, &nitems); // if (viList) { // XFree(viList); // doDither = 0; // } /* * Disable stuff that's likely to slow down glDrawPixels. * (Omit as much of this as possible, when you know in advance * that the OpenGL state will already be set correctly.) */ glDisable(GL_ALPHA_TEST); glDisable(GL_BLEND); glDisable(GL_DEPTH_TEST); if (!doDither) { glDisable(GL_DITHER); } glDisable(GL_FOG); glDisable(GL_LIGHTING); glDisable(GL_LOGIC_OP); glDisable(GL_STENCIL_TEST); glDisable(GL_TEXTURE_1D); glDisable(GL_TEXTURE_2D); glPixelTransferi(GL_MAP_COLOR, GL_FALSE); glPixelTransferi(GL_RED_SCALE, 1); glPixelTransferi(GL_RED_BIAS, 0); glPixelTransferi(GL_GREEN_SCALE, 1); glPixelTransferi(GL_GREEN_BIAS, 0); glPixelTransferi(GL_BLUE_SCALE, 1); glPixelTransferi(GL_BLUE_BIAS, 0); glPixelTransferi(GL_ALPHA_SCALE, 1); glPixelTransferi(GL_ALPHA_BIAS, 0); /* * Disable extensions that could slow down glDrawPixels. */ const GLubyte* extString = glGetString(GL_EXTENSIONS); if (extString != NULL) { if (strstr((char*) extString, "GL_EXT_convolution") != NULL) { glDisable(GL_CONVOLUTION_1D_EXT); glDisable(GL_CONVOLUTION_2D_EXT); glDisable(GL_SEPARABLE_2D_EXT); } if (strstr((char*) extString, "GL_EXT_histogram") != NULL) { glDisable(GL_HISTOGRAM_EXT); glDisable(GL_MINMAX_EXT); } if (strstr((char*) extString, "GL_EXT_texture3D") != NULL) { glDisable(GL_TEXTURE_3D_EXT); } } } void FastUByteCItoRGBAPixelMap() { GLint i; GLfloat constantAlpha = 1.0; GLfloat map[256]; glPixelTransferf(GL_ALPHA_SCALE, 0.0); glPixelTransferf(GL_ALPHA_BIAS, 1.0); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); /* define accelerated bgr233 to RGBA pixelmaps. */ for(i=0; i<256; i++) map[i] = (i&0x7)/7.0; glPixelMapfv(GL_PIXEL_MAP_I_TO_R, 256, map); for(i=0; i<256; i++) map[i] = ((i&0x38)>>3)/7.0; glPixelMapfv(GL_PIXEL_MAP_I_TO_G, 256, map); for(i=0; i<256; i++) map[i] = ((i&0xc0)>>6)/3.0; glPixelMapfv(GL_PIXEL_MAP_I_TO_B, 256, map); glPixelMapfv(GL_PIXEL_MAP_I_TO_A, 1, &constantAlpha); glPixelTransferi(GL_INDEX_SHIFT, 0); glPixelTransferi(GL_INDEX_OFFSET, 0); glPixelTransferi(GL_MAP_COLOR, GL_TRUE); glDisable(GL_DITHER); } void FastLumPixelMap() { GLint i; GLfloat constantAlpha = 1.0; GLfloat map[256]; glPixelTransferf(GL_ALPHA_SCALE, 0.0); glPixelTransferf(GL_ALPHA_BIAS, 1.0); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); /* define accelerated bgr233 to RGBA pixelmaps. */ for(i=0; i<256; i++) map[i] = i/255.0; glPixelMapfv(GL_PIXEL_MAP_I_TO_R, 256, map); for(i=0; i<256; i++) map[i] = i/255.0; glPixelMapfv(GL_PIXEL_MAP_I_TO_G, 256, map); for(i=0; i<256; i++) map[i] = i/255.0; glPixelMapfv(GL_PIXEL_MAP_I_TO_B, 256, map); glPixelMapfv(GL_PIXEL_MAP_I_TO_A, 1, &constantAlpha); glPixelTransferi(GL_INDEX_SHIFT, 0); glPixelTransferi(GL_INDEX_OFFSET, 0); glPixelTransferi(GL_MAP_COLOR, GL_TRUE); glDisable(GL_DITHER); }