X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fvertexformat.cpp;h=bf2d9095d77220333ac205a608375450c8ada8c9;hb=b8b06a0ff96763ba7e188d9fcacbd8c0e3dcd515;hp=25c2b02313e43c3d5b14d64c4ed9136608551d6e;hpb=85facfb688035b5bbc9a3a87d080582fbf34930b;p=libs%2Fgl.git diff --git a/source/vertexformat.cpp b/source/vertexformat.cpp index 25c2b023..bf2d9095 100644 --- a/source/vertexformat.cpp +++ b/source/vertexformat.cpp @@ -15,7 +15,7 @@ uint get_stride(VertexFormat f) uint stride=0; for(uint fmt=f; fmt; fmt>>=4) stride+=(fmt&3)+1; - return stride*sizeof(float); + return stride; } std::istream &operator>>(std::istream &in, VertexFormat &f) @@ -24,42 +24,42 @@ std::istream &operator>>(std::istream &in, VertexFormat &f) in>>str; unsigned start=0; - unsigned comma; f=NODATA; while(1) { - comma=str.find(',', start); - if(str.compare(start, comma-start, "VERTEX2")) - f=f,VERTEX2; - else if(str.compare(start, comma-start, "VERTEX3")) - f=f,VERTEX3; - else if(str.compare(start, comma-start, "VERTEX4")) - f=f,VERTEX4; - else if(str.compare(start, comma-start, "NORMAL3")) - f=f,NORMAL3; - else if(str.compare(start, comma-start, "TEXCOORD1")) - f=f,TEXCOORD1; - else if(str.compare(start, comma-start, "TEXCOORD2")) - f=f,TEXCOORD2; - else if(str.compare(start, comma-start, "TEXCOORD3")) - f=f,TEXCOORD3; - else if(str.compare(start, comma-start, "TEXCOORD4")) - f=f,TEXCOORD4; - else if(str.compare(start, comma-start, "COLOR4_UBYTE")) - f=f,COLOR4_UBYTE; - else if(str.compare(start, comma-start, "COLOR3_FLOAT")) - f=f,COLOR3_FLOAT; - else if(str.compare(start, comma-start, "COLOR4_FLOAT")) - f=f,COLOR4_FLOAT; + unsigned underscore=str.find('_', start); + if(!str.compare(start, underscore-start, "VERTEX2")) + f=(f,VERTEX2); + else if(!str.compare(start, underscore-start, "VERTEX3")) + f=(f,VERTEX3); + else if(!str.compare(start, underscore-start, "VERTEX4")) + f=(f,VERTEX4); + else if(!str.compare(start, underscore-start, "NORMAL3")) + f=(f,NORMAL3); + else if(!str.compare(start, underscore-start, "TEXCOORD1")) + f=(f,TEXCOORD1); + else if(!str.compare(start, underscore-start, "TEXCOORD2")) + f=(f,TEXCOORD2); + else if(!str.compare(start, underscore-start, "TEXCOORD3")) + f=(f,TEXCOORD3); + else if(!str.compare(start, underscore-start, "TEXCOORD4")) + f=(f,TEXCOORD4); + else if(!str.compare(start, underscore-start, "COLOR4UB")) + f=(f,COLOR4_UBYTE); + else if(!str.compare(start, underscore-start, "COLOR3F")) + f=(f,COLOR3_FLOAT); + else if(!str.compare(start, underscore-start, "COLOR4F")) + f=(f,COLOR4_FLOAT); else { in.setstate(std::ios_base::failbit); break; } - start=comma+1; - if(comma==std::string::npos) + + if(underscore==std::string::npos) break; + start=underscore+1; } return in;