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



   Промышленные машинки швейные minerva прямострочные машины ремонт швейных.            

Урок 31. Визуализация моделей Milkshape 3D - часть 10


       pModel = new MilkshapeModel();

       if ( pModel->loadModelData( "data/model.ms3d" ) == false )

       {

              MessageBox( NULL, "Couldn't load the model data/model.ms3d",

                           

"Error", MB_OK | MB_ICONERROR );

              return 0;  // Если модель не загружена, выходим

       }

Модель создается здесь, и не в InitGL, потому что InitGL вызывается каждый раз, когда мы меняем графический режим (теряя контекст OpenGL). Но модель не должна перезагружаться, так как данные не меняются. Это не относиться к текстурам, которые присоединены к объектам текстур, когда мы загружаем объект. Поэтому добавлена следующая строка в InitGL:

       pModel->reloadTextures();

Это место вызова LoadGLTextures, как и раньше. Если бы в сцене было несколько моделей, то эту функцию пришлось бы вызывать для каждой из них. Если все объекты стали вдруг белыми, то это значит, что с вашими текстурами что-то не так и они не правильно загрузились.

Наконец, вот новая функция DrawGLScene:

int DrawGLScene(GLvoid)                                  // Здесь происходит все рисование

{

       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Очищаем экран и буфер глубины

       glLoadIdentity();                              // Сбрасываем вид

       gluLookAt( 75, 75, 75, 0, 0, 0, 0, 1, 0 );

       glRotatef(yrot,0.0f,1.0f,0.0f);

 

       pModel->draw();

 

       yrot+=1.0f;

       return TRUE;                                   // Продолжаем

}

 

Просто? Мы очистили цветовой буфер, установили единичную матрицу модели/вида, и потом устанавливается камера в режим gluLookAt. Если вы раньше не пользовались gluLookAt, то по существу она помещает камеру в позицию, описываемую 3-мя параметрами, перемещая центр сцены в позицию, описываемую 3-мя следующими параметрами, и последние 3 параметра описывают вектор направленный вверх. В данном случае мы смотрим из точки (75, 75, 75) в точку (0, 0, 0), так как модель расположена в центре системы координат, если вы не переместили ее до этого, и положительное направление оси Y смотрит вверх.




Содержание  Назад  Вперед