Advertisement

Using Nehe's 3D World Tutorial

Started by March 26, 2002 02:52 PM
10 comments, last by Feblex 22 years, 11 months ago
All I did was load two textures and then modify this:

// Process Each Trianglefor (int loop_m = 0; loop_m < numtriangles; loop_m++){glBegin(GL_TRIANGLES);x_m = sector1.triangle[loop_m].vertex[0].x;y_m = sector1.triangle[loop_m].vertex[0].y;z_m = sector1.triangle[loop_m].vertex[0].z;u_m = sector1.triangle[loop_m].vertex[0].u;v_m = sector1.triangle[loop_m].vertex[0].v;glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);x_m = sector1.triangle[loop_m].vertex[1].x;y_m = sector1.triangle[loop_m].vertex[1].y;z_m = sector1.triangle[loop_m].vertex[1].z;u_m = sector1.triangle[loop_m].vertex[1].u;v_m = sector1.triangle[loop_m].vertex[1].v;glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);x_m = sector1.triangle[loop_m].vertex[2].x;y_m = sector1.triangle[loop_m].vertex[2].y;z_m = sector1.triangle[loop_m].vertex[2].z;u_m = sector1.triangle[loop_m].vertex[2].u;v_m = sector1.triangle[loop_m].vertex[2].v;glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);glEnd();}  


To:

// Process Each Triangle
for (int loop_m = 0; loop_m < numtriangles; loop_m++)
{
glBegin(GL_TRIANGLES);
x_m = sector1.triangle[loop_m].vertex[0].x;
y_m = sector1.triangle[loop_m].vertex[0].y;
z_m = sector1.triangle[loop_m].vertex[0].z;
u_m = sector1.triangle[loop_m].vertex[0].u;
v_m = sector1.triangle[loop_m].vertex[0].v;
glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
glEnd();

glBegin(GL_TRIANGLES);
x_m = sector1.triangle[loop_m].vertex[1].x;
y_m = sector1.triangle[loop_m].vertex[1].y;
z_m = sector1.triangle[loop_m].vertex[1].z;
u_m = sector1.triangle[loop_m].vertex[1].u;
v_m = sector1.triangle[loop_m].vertex[1].v;
glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
glEnd();

glBegin(GL_TRIANGLES);
x_m = sector1.triangle[loop_m].vertex[2].x;
y_m = sector1.triangle[loop_m].vertex[2].y;
z_m = sector1.triangle[loop_m].vertex[2].z;
u_m = sector1.triangle[loop_m].vertex[2].u;
v_m = sector1.triangle[loop_m].vertex[2].v;
glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
glEnd();

}




Mr Bugg
you''ve got your problem right there...

glBegin( GL_TRIANGLES );
...
glTexCoorf( u,v );
glVertex( x, y, z );
glEnd();

you send only one vertex per triangle.

there should be 3 * N vertices where N is number of triangles to draw.

about your ogirinal question.

If you''re using original dataformat from NeHe''s code just add another info to file:
to every triangle add texture no:

so you have :
...
u, v
x, y, z
tex_id
...

then have your drawing code change like this:


for ( int i=0; i glBindTexture( triangle.tex_id );
glBegin( GL_TRIANGLES );
// draw ALL 3 vertices of this triangle ( 3x glTexCoord() + 3x glVertex() )
glEnd();
}

befire you start drawing your stuff make shure you load textures in right tex_id''s and you enable texturing


hope this helps....


PS : this code is just a sample (it won''t compile )
PS2 : This is probably the lowest way to draw your level


There are more worlds than the one that you hold in your hand...
You should never let your fears become the boundaries of your dreams.

This topic is closed to new replies.

Advertisement