rendered paste bodyvoid GLCameraDraw(GLvoid){ IplImage *tframe; if (!frame) return; tframe = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, frame->nChannels); if (!tframe) return; cvCopy(frame, tframe, 0); if ((tframe->width > 0) && (tframe->height > 0)) { // clear the buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glDisable(GL_DEPTH_TEST); glDisable(GL_LIGHTING); glEnable(GL_TEXTURE_RECTANGLE_ARB); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, (GLdouble)tframe->width, 0.0, (GLdouble)tframe->height); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // Reset The Current Modelview Matrix// glTranslatef(0.0f, 0.0f, -6.0f); // Move glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture[1]); if (tframe->nChannels == 3) glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGB, tframe->width, tframe->height, 0, GL_BGR, GL_UNSIGNED_BYTE, tframe->imageData); else if (tframe->nChannels == 4) glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, tframe->width, tframe->height, 0, GL_BGRA, GL_UNSIGNED_BYTE, tframe->imageData); glBegin(GL_QUADS); // Draw A Quad glTexCoord2i(0, 0); glVertex2i(0, 0); // Bottom Left Of The Texture and Quad glTexCoord2i(tframe->width, 0); glVertex2i(tframe->width, 0); // Bottom Right Of The Texture and Quad glTexCoord2i(tframe->width, tframe->height); glVertex2i(tframe->width, tframe->height); // Top Right Of The Texture and Quad glTexCoord2i(0, tframe->height); glVertex2i(0, tframe->height); // Top Left Of The Texture and Quad glEnd(); // Done Drawing The Compass } glDisable(GL_TEXTURE_RECTANGLE_ARB);}