Using textures with box2D

Ok I know this relates to Box2D, but I asked there, and they said it has to do more with textures, and GLUT, so here I am :p.

Anyways, it really doesn’t have much to do with Box2D, just how it’s set up. My fist plan was to just try and get a texture on the screen. I got this to work. Here are my glut callback functions:

void display(void) {

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	
	glMatrixMode (GL_MODELVIEW);
	glLoadIdentity ();

	glTranslatef (0, 0, -20);
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, 1);

	glBegin(GL_QUADS);
	
	glTexCoord2f(0.0f, 0.0f);
	glVertex3f(-10.0f, -10.0f, 0.0f);
	glTexCoord2f(1.0f, 0.0f);
	glVertex3f(10.0f, -10.0f, 0.0f);
	glTexCoord2f(1.0f, 1.0f);
	glVertex3f(10.0f, 10.0f, 0.0f);
	glTexCoord2f(0.0f, 1.0f);
	glVertex3f(-10.0f, 10.0f, 0.0f);

	glEnd();

	glDisable(GL_TEXTURE_2D);
	glutSwapBuffers();
}

void reshape(int w, int h) {

	if(h == 0)
		h = 1;

	float ratio = 1.0* w / h;

    glViewport (0, 0, w, h);

	glMatrixMode (GL_PROJECTION);
    glLoadIdentity ();

	gluPerspective (90, ratio, 1, 1000);

	glutPostRedisplay ();
}

Then in my main function:

loadTGA("texture.tga", 1);

This all works fine (the loadTGA function is elsewhere, but don’t worry, it works fine).

Now in Box2D, in order to display the bodies correcty, my callback functions are:

void display(void) {
	
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	float32 timeStep = 1.0f / 30.0f;
	int32 vIterations = 10;
	int32 pIterations = 8;
	
	world->Step(timeStep, vIterations, pIterations);
	
	glutSwapBuffers();
}

void reshape(int w, int h) {
	
	GLUI_Master.get_viewport_area(&tx, &ty, &tw, &th);
	glViewport(0, 0, w, h);
	
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	float32 ratio = float32(tw) / float32(th);
	
	b2Vec2 extents(ratio * 25.0f, 25.0f);
	extents *= viewZoom;
	
	b2Vec2 lower = viewCenter - extents;
	b2Vec2 upper = viewCenter + extents;
	
	// L/R/B/T
	gluOrtho2D(lower.x, upper.x, lower.y, upper.y);
}

Some info is:
viewZoom = 1.0.
a b2Vec2 is a simple vector (x, y).

Anyway this works fine. So in order to combine the two, first I add the loadTGA command to my main function.
Then I change the display function to:

void display(void) {
	
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	float32 timeStep = 1.0f / 30.0f;
	int32 vIterations = 10;
	int32 pIterations = 8;
	
	world->Step(timeStep, vIterations, pIterations);

	glTranslatef (0, 0, -20);

	glEnable (GL_TEXTURE_2D); 
    glBindTexture (GL_TEXTURE_2D, 13); 

    /*glBegin (GL_QUADS);
        glTexCoord2f (0.0f,0.0f);
        glVertex3f (-10.0f, -10.0f, 0.0f);
        glTexCoord2f (1.0f, 0.0f); 
        glVertex3f (10.0f, -10.0f, 0.0f);
        glTexCoord2f (1.0f, 1.0f); 
        glVertex3f (10.0f, 10.0f, 0.0f);
        glTexCoord2f (0.0f, 1.0f);
        glVertex3f (-10.0f, 10.0f, 0.0f);
    glEnd (); 

    glDisable (GL_TEXTURE_2D);
	
	glutSwapBuffers();
}

Now for my reshape function, I have absolutely no idea what to do :p. So…what do I have to change in order for texture to appear on the screen?

This is important so I can then track the bodies with the texture, thus adding the texture to the body!

Thanks in advance,
Kcaz

So, can anyone help?