|
Вот я чуть-чуть переделал эту штуку (+выбираеться номер текстуры - текстуры считываються с файла и нумеруються, кому надо - скину...):
typedef struct tagVERTEX // Создаём стр-ру нашей вершины
{
float x, y, z; // 3D координаты
float u, v; // Координаты на текстуре
} VERTEX;
typedef struct tagTRIANGLE
{
VERTEX vertex[3]; // Массив трёх вершин
int numtexture;
} TRIANGLE;
typedef struct tagSTRIG
{
int numtriangles; // Кол-во треугольников в секторе
TRIANGLE* triangle; // Ссылка на массив треугольников
} STRIG;
STRIG sectorT;
//................................
void LoadTriangles()
{
char fline[255];
int numtriangles;
int numtexture;
FILE *filein;
filein = fopen(ftrian, "rt");
ReadStr(filein,fline);
sscanf(fline, "NUMPOLLIES %d\n", &numtriangles);
float x, y, z, u, v;
sectorT.triangle = new TRIANGLE[numtriangles];
sectorT.numtriangles = numtriangles;
for (int triloop = 0; triloop < numtriangles; triloop++)
{
ReadStr(filein,fline);
sscanf(fline,"TEXTURE %d\n", &numtexture);
sectorT.triangle[triloop].numtexture = numtexture;
for (int vertloop = 0; vertloop < 3; vertloop++)
{
ReadStr(filein,fline);
sscanf(fline, "%f %f %f %f %f", &x, &y, &z, &u, &v);
sectorT.triangle[triloop].vertex[vertloop].x = x;
sectorT.triangle[triloop].vertex[vertloop].y = y;
sectorT.triangle[triloop].vertex[vertloop].z = z;
sectorT.triangle[triloop].vertex[vertloop].u = u;
sectorT.triangle[triloop].vertex[vertloop].v = v;
}
}
fclose(filein);
}
void ViewPolygones()
{
GLint numpol = sectorT.numtriangles;
GLfloat x_m, y_m, z_m, u_m, v_m;
// Выводим на экран треугольники
glNormal3f( 0.0f, 1.0f, 0.0f);
for (int loop_m = 0; loop_m < numpol; loop_m++)
{
glNormal3f( 0.0f, 0.0f, 1.0f);
glBindTexture(GL_TEXTURE_2D, texture[sectorT.triangle[loop_m].numtexture-1]);
glBegin(GL_TRIANGLES);
for (int i = 0; i < 3; i++)
{
x_m = sectorT.triangle[loop_m].vertex[i].x;// X 1-ой точки
y_m = sectorT.triangle[loop_m].vertex[i].y;// Y 1-ой точки
z_m = sectorT.triangle[loop_m].vertex[i].z;// Z 1-ой точки
u_m = sectorT.triangle[loop_m].vertex[i].u;
v_m = sectorT.triangle[loop_m].vertex[i].v;
glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
}
glEnd();
}
}
_________________ Все мы когда-то будем на последнем уровне Doom-а...
|