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

         

Текст выше загружает данные структуры


 
              m_pMeshes[i].m_materialIndex = materialIndex;
              m_pMeshes[i].m_numTriangles = nTriangles;
              m_pMeshes[i].m_pTriangleIndices = pTriangleIndices;
       }
Текст выше загружает данные структуры сетки (в Milkshape3D они называется группами "groups"). Так как число треугольников меняется от сетки к сетке, нет никакой стандартной структуры чтения. Поэтому берется поле за полем. Память для индексов треугольников выделяется динамически внутри сетки и читается по очереди.
       int nMaterials = *( word* )pPtr;
       m_numMaterials = nMaterials;
       m_pMaterials = new Material[nMaterials];
       pPtr += sizeof( word );
       for ( i = 0; i < nMaterials; i++ )
       {
              MS3DMaterial *pMaterial = ( MS3DMaterial* )pPtr;
              memcpy( m_pMaterials[i].m_ambient, pMaterial->m_ambient, sizeof( float )*4 );
              memcpy( m_pMaterials[i].m_diffuse, pMaterial->m_diffuse, sizeof( float )*4 );
              memcpy( m_pMaterials[i].m_specular, pMaterial->m_specular,

                            sizeof( float )*4 );
              memcpy( m_pMaterials[i].m_emissive, pMaterial->m_emissive,

                            sizeof( float )*4 );
              m_pMaterials[i].m_shininess = pMaterial->m_shininess;
              m_pMaterials[i].m_pTextureFilename = new char[strlen(

                            pMaterial->m_texture )+1];
              strcpy( m_pMaterials[i].m_pTextureFilename, pMaterial->m_texture );
              pPtr += sizeof( MS3DMaterial );
       }
       reloadTextures();
Наконец, из буфера берется информация о материале. Это происходит так же, как и раньше, копированием каждого коэффициента освещения в новую структуру. Так же выделяется новая память для названия файла, содержащего текстуру, и оно копируется в эту память. Последний вызов reloadTextures используется собственно для загрузки текстур и привязки ее к объекту текстуры OpenGL. Эта функция из базового класса Model описывается ниже.

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







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