Народный учебник по OpenGL


Урок 10. Загрузка и перемещение в трехмерном мире - часть 3


 

void readstr(FILE *f,char *string)  // Считать в строку

 

{

      do                            // Начинаем цикл

      {

            fgets(string, 255, f);  // Считываем одну линию

            // Проверяем её на условие повт. цикла

      } while ((string[0] == '/') || (string[0] == '\n'));

      return;                       // Возврат

}

 

Далее мы должны считать данные сектора. В этом уроке мы будем иметь дело только с одним сектором, но достаточно просто реализовать многосекторный движок. Давайте вернёмся к SetupWorld(). Наша программа должна знать сколько треугольников в секторе. В нашем файле данных мы обозначим количество треугольников следующим образом:

 

NUMPOLLIES n

 

Вот код для чтения количества треугольников:

 

int numtriangles;            // Кол-во треугольников в секторе

char oneline[255];           // Строка для сохранения данных

...

readstr(filein,oneline);     // Считать одну линию данных

// Считать кол-во треугольников

sscanf(oneline, "NUMPOLLIES %d\n", &numtriangles);

 

Остальная часть нашего процесса загрузки мира будет использовать тот же процесс. Далее мы инициализируем наш сектор и считываем в него некоторые данные:

 

// Декларация выше: SECTOR sector1;

char oneline[255];                 // Строка для сохранения данных

int numtriangles;                  // Кол-во треугольников в секторе

float x, y, z, u, v;               // 3D и текстурные координаты

...

// Выделяем память для  numtriangles и устанавливаем ссылку

sector1.triangle = new TRIANGLE[numtriangles];

// Определяем кол-во треугольников в Секторе 1

sector1.numtriangles = numtriangles;

// Цикл для всех треугольников

// За каждый шаг цикла – один треугольник в секторе

for (int triloop = 0; triloop < numtriangles; triloop++)

{

      // Цикл для всех вершин

// За каждый шаг цикла – одна вершина в треугольнике

      for (int vertloop = 0; vertloop < 3; vertloop++) {

            readstr(filein,oneline); // Считать строку для работы




Начало  Назад  Вперед



Книжный магазин