#include GLsizei winWidth = 400, winHeight = 300; GLubyte texArray [32][32][4]; void init(void) { GLint k, j; glClearColor (0, .0, .5, 0.0); glMatrixMode (GL_PROJECTION); gluOrtho2D (0.0, winWidth, 0.0, winHeight); glMatrixMode (GL_MODELVIEW); for (k = 0; k <= 31; k+=1) { for (j = 0; j <= 31; j+=1) { texArray[k][j][0] = 0; texArray[k][j][1] = 0; texArray[k][j][2] = 0; texArray[k][j][3] = 0; } } for (k = 0; k <= 7; k+=2) { for (j = 0; j <= 31; j+=1) { texArray[4*k][j][0] = 255; texArray[4*k+1][j][0] = 255; texArray[4*k+2][j][0] = 255; texArray[4*k+3][j][0] = 255; } } glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); } void displayFcn (void) { glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, texArray); glEnable (GL_TEXTURE_2D); glClear (GL_COLOR_BUFFER_BIT); glBegin (GL_POLYGON); glTexCoord2f (0.0, 0.0); glVertex2i (150,50); glTexCoord2f (1.0, 0.0); glVertex2i (200,50); glTexCoord2f (1.0, 1.0); glVertex2i (200,100); glTexCoord2f (0.0, 1.0); glVertex2i (150,100); glEnd (); glBegin (GL_POLYGON); glTexCoord2f (0.0, 0.0); glVertex2i (50,50); glTexCoord2f (1.0, 0.0); glVertex2i (100,50); glTexCoord2f (0.5, 0.5); glVertex2i (75,100); glEnd (); glDisable (GL_TEXTURE_2D); glFlush ( ); } void main (int argc, char** argv) { glutInit (&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowPosition (400, 0); glutInitWindowSize (winWidth, winHeight); glutCreateWindow ("Triangle Program"); init(); glutDisplayFunc (displayFcn); glutMainLoop ( ); }