OK, I’ve tried everything to get texturing working in my 3D engine, and it won’t texture anything, so I am left with a bunch of solid white triangles! Here is my source thus far (note that until I get basic texturing up, I am trying to make a simple purple square surrounded by a green box for the image).
//Global Vars
GLubyte image[32][32][3];//Initialize OpenGL!
BOOL InitGL(GLvoid)
{
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glClearColor(0.5f, 0.5f, 0.5f, 0.5f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);return TRUE;
}//Create Our Texture
void LoadBMP()
{
for(short int loop = 0; loop < 32; loop++)
{
for(short int h_loop = 0; h_loop < 32; h_loop++)
{
image[loop][h_loop][0] = 255;
image[loop][h_loop][1] = 0;
image[loop][h_loop][2] = 255;
}
image[loop][0][0] = 0;
image[loop][0][1] = 255;
image[loop][0][2] = 0;
image[loop][31][0] = 0;
image[loop][31][1] = 255;
image[loop][31][2] = 0;
image[0][loop][0] = 0;
image[0][loop][1] = 255;
image[0][loop][2] = 0;
image[31][loop][0] = 0;
image[31][loop][1] = 255;
image[31][loop][2] = 0;
}glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
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_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, image);return;
}//Here’s Where I Draw The Screen
BOOL DrawGLScene(GLvoid)
{
player.lx = player.xpos + cos(player.heading * (pi / 180)) * 2;
player.ly = player.ypos + sin(player.lookup * (pi / 180)) * 2;
player.lz = player.zpos + sin(player.heading * (pi / 180)) * 2;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(player.xpos, player.ypos, player.zpos, player.lx, player.ly, player.lz, 0.0, 1.0, 0.0);
glBindTexture(GL_TEXTURE_2D, texture[0]);for(unsigned long o_loop = 0; o_loop < area.numObjects; o_loop++)
{
for(int t_loop = 0; t_loop < area.object[o_loop].numTriangles; t_loop++)
{
glBegin(GL_TRIANGLES);
glNormal3f(0.0f, 0.0f, 1.0f);glVertex3f(area.object[o_loop].triangle[t_loop].vertex[0].x, area.object[o_loop].triangle[t_loop].vertex[0].y, area.object[o_loop].triangle[t_loop].vertex[0].z); glTexCoord2f(area.object[o_loop].triangle[t_loop].vertex[0].u, area.object[o_loop].triangle[t_loop].vertex[0].v); glVertex3f(area.object[o_loop].triangle[t_loop].vertex[1].x, area.object[o_loop].triangle[t_loop].vertex[1].y, area.object[o_loop].triangle[t_loop].vertex[1].z); glTexCoord2f(area.object[o_loop].triangle[t_loop].vertex[1].u, area.object[o_loop].triangle[t_loop].vertex[1].v); glVertex3f(area.object[o_loop].triangle[t_loop].vertex[2].x, area.object[o_loop].triangle[t_loop].vertex[2].y, area.object[o_loop].triangle[t_loop].vertex[2].z); glTexCoord2f(area.object[o_loop].triangle[t_loop].vertex[2].u, area.object[o_loop].triangle[t_loop].vertex[2].v); glEnd(); } }
return TRUE;
}
Now the level is loaded into “area” and properly displays all polygons, so I have marked that off the problem list. I also tried commenting my norml code and drawing a single triangle manually, and it didn’t texture either. Does anybody know what’s wrong here? All I need to do is finish texturing and add collision detection and the engine will work. I can add lighting and all the fancy doo-dads later :P.