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

         

в InitGL, потому что InitGL


       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 смотрит вверх.

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







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий