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



             

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


 

                           for ( int k = 0; k < 3; k++ )

                           {

                                 int index = pTri->m_vertexIndices[k];

 

                                 glNormal3fv( pTri->m_vertexNormals[k] );

                                 glTexCoord2f( pTri->m_s[k], pTri->m_t[k] );

                                 glVertex3fv( m_pVertices[index].m_location );

                           }

                    }

              }

              glEnd();

       }

Секция выше производит рисование треугольников модели. Она проходит цикл для каждого из треугольников сетки и потом рисует каждую из 3-х вершин, используя нормали и координаты текстуры. Помните, что каждый треугольник в сетке, как и все вершины, пронумерованы в общих массивах модели (они используют 2 индексные переменные). pTri - указывает на текущий треугольник в сетке и используется для упрощения кода следующего за ним.

       if ( texEnabled )

              glEnable( GL_TEXTURE_2D );

       else

              glDisable( GL_TEXTURE_2D );

}

Заключительный фрагмент кода устанавливает режим отображения текстур в свое первоначальное состояние.

Другой важный кусок кода в классе Model - это конструктор и деструктор. Они сами все объясняют. Конструктор устанавливает все члены в 0-ое значение (или NULL для указателей), и деструктор удаляет динамические массивы из памяти для всех структур модели. Вы должны заметить, что если вызываете функцию loadModelData дважды, для объекта Model, то можете потерять часть памяти. Будьте осторожны!

Последняя тема, которую я буду здесь обсуждать, это изменение, в основном коде отображения используя новый класс модели, и прямо отсюда я планирую начать свой будущий урок о скелетной анимации.

       Model *pModel = NULL;  // Место для хранения данных модели

В начале кода lesson31.cpp была объявлена модель, но не инициализирована. Она создается в процедуре WinMain:




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