OpenGL ładowanie plików obj : indexy
Ostatnio zmodyfikowano 2011-03-02 17:09
Łukasz123 Temat założony przez niniejszego użytkownika |
OpenGL ładowanie plików obj : indexy » 2011-03-02 17:09:20 Witam, piszę sobie loader obj'ów i mam problem z łaczeniem wierzchołków w wielokąty kombinowałem ale nic nie wymyśliłem bo wychodzi że w pliku po 'f' może być masa indeksów,i nie moge nic wykombinować na te sleshe w pliku przy indexach ):. Ma ktoś pomysł. Tu to co narazie wykodziłem : #include <sstream> #include <fstream> using namespace std; class VOModel { protected: std::string buffer; std::string tmp; float v1; float v2; float v3; std::string tblv[ 3 ]; struct Vertex { float xyz[ 3 ]; }; public: Vertex object[ 10000 ]; void LoadOBJ( char * fn ) { int iloscv = 0; std::ifstream in( fn ); while( !in.eof() ) { std::getline( in, buffer ); std::istringstream line( buffer ); std::string ch = buffer.substr( 0, 2 ); if( ch == "v " ) { line >> tmp >> tblv[ 0 ] >> tblv[ 1 ] >> tblv[ 2 ]; v1 = atof( tblv[ 0 ].c_str() ); v2 = atof( tblv[ 1 ].c_str() ); v3 = atof( tblv[ 2 ].c_str() ); iloscv++; object[ iloscv - 1 ].xyz[ 0 ] = v1; object[ iloscv - 1 ].xyz[ 1 ] = v2; object[ iloscv - 1 ].xyz[ 2 ] = v3; } } } };
void DrawModelOBJ( VOModel v ) { glInterleavedArrays( GL_V3F, 0, v.object ); glDrawArrays( GL_LINES, 0, 10000 ); }
to tylko prowizorka gdzie mam ,że może być max.10000 vertexów |
|
« 1 » |