#include <GL/glut.h>
#include <stdio.h>
#define TEXTURE_HEIGHT 16
#define TEXTURE_WIDTH 16
unsigned char image[TEXTURE_HEIGHT][TEXTURE_WIDTH][4];
void initTexture(void)
{
int i, j;
int color;
for (i = 0; i < TEXTURE_HEIGHT; i++) {
for (j = 0; j < TEXTURE_WIDTH; j++) {
color = (((i & 0x01) == 0) ^ ((j & 0x01) == 0) );
image[i][j][0] = color * 255;
image[i][j][1] = color * 255;
image[i][j][2] = color * 255;
image[i][j][3] = 255;
}
}
}
void dispalyTexture(void)
{
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex3f(-5.0,-5.0, 0.0);
glTexCoord2f(0.0, 1.0); glVertex3f(-5.0, 5.0, 0.0);
glTexCoord2f(1.0, 1.0); glVertex3f( 5.0, 5.0, 0.0);
glTexCoord2f(1.0, 0.0); glVertex3f( 5.0,-5.0, 0.0);
glEnd();
glDisable(GL_TEXTURE_2D);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glTranslatef(0.0, 0.0,-10.0);
dispalyTexture();
glFlush();
}
void init(char *name)
{
int width = 300, height = 300;
glutInitWindowSize (width, height);
glutCreateWindow (name);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.0, (double)width / (double)height, 0.1, 18);
glClearColor(0.0, 0.0, 0.0, 0.0);
glEnable(GL_DEPTH_TEST);
initTexture();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TEXTURE_WIDTH, TEXTURE_HEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, image);
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);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DEPTH|GLUT_RGBA);
init(argv[0]);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}