Changeset 9414 in orxonox.OLD for branches/terrain/src/lib/graphics/importer/md2
- Timestamp:
- Jul 24, 2006, 12:47:07 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/terrain/src/lib/graphics/importer/md2/md2Model.cc
r9406 r9414 17 17 #include "md2Model.h" 18 18 #include "material.h" 19 19 #include "config.h" 20 #ifdef HAVE_SDL_SDL_H 21 #include <SDL/SDL.h> 22 #include <SDL/SDL_endian.h> 23 #else 24 #include <SDL.h> 25 #include <SDL_endian.h> 26 #endif 20 27 #include "debug.h" 21 28 #include "util/loading/resource_manager.h" … … 67 74 }; 68 75 69 76 #ifdef SDL_LIL_ENDIAN 77 #define BULK_CONV( _ptr, _num ) do { \ 78 int _cnt = _num;\ 79 int* _iptr = (int*)_ptr;\ 80 for( int _l = 0; _l<_cnt; ++_l )\ 81 _iptr[_l] = SDL_SwapLE32( _iptr[_l] );\ 82 } while( 0 ) 83 #define BULK_CONV16( _ptr, _num ) do { \ 84 short _cnt = _num;\ 85 short* _iptr = (short*)_ptr;\ 86 for( int _l = 0; _l<_cnt; ++_l )\ 87 _iptr[_l] = SDL_SwapLE16( _iptr[_l] );\ 88 } while( 0 ) 89 #else 90 #define BULK_CONV( _ptr, _num ) 91 #define BULK_CONV16( _ptr, _num ) 92 #endif 70 93 71 94 /******************************************************************************** … … 468 491 this->header = new MD2Header; 469 492 fread(this->header, 1, sizeof(MD2Header), pFile); 493 BULK_CONV( this->header, sizeof(MD2Header)/4 ); 470 494 /* check for the header version: make sure its a md2 file :) */ 471 if( unlikely( this->header->version != MD2_VERSION) && unlikely(this->header->ident != MD2_IDENT))495 if( unlikely( this->header->version != MD2_VERSION) && unlikely( this->header->ident != MD2_IDENT)) 472 496 { 473 497 PRINTF(1)("Couldn't load file %s: invalid file format: stop loading\n", fileName.c_str()); … … 475 499 } 476 500 477 this->fileName = fileName;501 this->fileName = fileName; 478 502 /* got the data: map it to locals */ 479 503 this->numFrames = this->header->numFrames; … … 494 518 fseek(pFile, this->header->offsetFrames, SEEK_SET); 495 519 fread(buffer, this->header->frameSize, this->numFrames, pFile); 520 //BULK_CONV( buffer, this->header->frameSize*this->numFrames*sizeof(char)/4 ); 496 521 /* read opengl commands */ 497 522 fseek(pFile, this->header->offsetGlCommands, SEEK_SET); 523 498 524 fread(this->pGLCommands, sizeof(int), this->numGLCommands, pFile); 525 BULK_CONV( this->pGLCommands, this->numGLCommands ); 499 526 /* triangle list */ 500 527 fseek(pFile, this->header->offsetTriangles, SEEK_SET); 501 fread(this->pTriangles, sizeof(sTriangle), this->numTriangles, pFile); 528 fread(this->pTriangles, sizeof(sTriangle), this->numTriangles, pFile); 529 BULK_CONV16( this->pTriangles, this->numTriangles*sizeof(sTriangle)/2 ); 530 502 531 /* read in texture coordinates */ 503 532 fseek(pFile, this->header->offsetTexCoords, SEEK_SET); 504 533 fread(this->pTexCoor, sizeof(sTexCoor), this->numTexCoor, pFile); 505 534 BULK_CONV16( this->pTexCoor, this->numTexCoor*sizeof(sTexCoor)/2 ); 506 535 507 536 for(int i = 0; i < this->numFrames; ++i) 508 537 { 509 538 frame = (sFrame*)(buffer + this->header->frameSize * i); 539 //Convert the translate and scale Vec3D if needed. 540 BULK_CONV( frame, 6 ); 541 BULK_CONV( frame->pVertices, 3 ); 510 542 pVertex = this->pVertices + this->numVertices * i; 511 543 pNormals = this->pLightNormals + this->numVertices * i;
Note: See TracChangeset
for help on using the changeset viewer.