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

         

Теперь указатель pPtr будет указывать


 
       if ( pHeader->m_version < 3 || pHeader->m_version > 4 )
              return false; // "Не поддерживаемая версия.

                            //   Поддерживается только Milkshape3D версии 1.3 и 1.4."
Теперь указатель pPtr будет указывать на текущую позицию. Сохраняем указатель на заголовок и устанавливаем pPtr на конец заголовка.  Вы, наверное, заметили несколько структур MS3D, которые мы использовали. Они объявлены в начале MilkshapeModel.cpp и идут прямо из спецификации формата файла. Поля в заголовке проверяются, что бы убедиться, в правильности загружаемого файла.
       int nVertices = *( word* )pPtr;
       m_numVertices = nVertices;
       m_pVertices = new Vertex[nVertices];
       pPtr += sizeof( word );
 
       int i;
       for ( i = 0; i < nVertices; i++ )
       {
              MS3DVertex *pVertex = ( MS3DVertex* )pPtr;
              m_pVertices[i].m_boneID = pVertex->m_boneID;
              memcpy( m_pVertices[i].m_location, pVertex->m_vertex, sizeof( float )*3 );
              pPtr += sizeof( MS3DVertex );
       }
Текст выше читает каждую структуру вершины из файла. Начальная память для модели выделяется для вершин, а затем каждая вершина копируется, пока не будут обработаны все. В функции используются несколько вызовов memcpy которая просто копирует содержимое маленьких массивов. Член m_boneID пока по-прежнему игнорируется - он для скелетной анимации!
       int nTriangles = *( word* )pPtr;
       m_numTriangles = nTriangles;
       m_pTriangles = new Triangle[nTriangles];
       pPtr += sizeof( word );
 
       for ( i = 0; i < nTriangles; i++ )
       {
              MS3DTriangle *pTriangle = ( MS3DTriangle* )pPtr;
              int vertexIndices[3] = { pTriangle->m_vertexIndices[0],

                            pTriangle->m_vertexIndices[1], pTriangle->m_vertexIndices[2] };
              float t[3] = { 1.0f-pTriangle->m_t[0], 1.0f-pTriangle->m_t[1],

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







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