glm::vec2 OBJModel::ParseOBJVec2(const std::string& line) { unsigned int tokenLength = line.length(); const char* tokenString = line.c_str(); unsigned int vertIndexStart = 3; while(vertIndexStart < tokenLength) { if(tokenString[vertIndexStart] != ' ') break; vertIndexStart++; } unsigned int vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' '); float x = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd); vertIndexStart = vertIndexEnd + 1; vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' '); float y = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd); return glm::vec2(x,y); }
glm::vec3 OBJModel::ParseOBJVec3(const std::string& line) { unsigned int tokenLength = static_cast<unsigned int>(line.length()); const char* tokenString = line.c_str(); unsigned int vertIndexStart = 2; while (vertIndexStart < tokenLength) { if (tokenString[vertIndexStart] != ' ') break; vertIndexStart++; } unsigned int vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' '); float x = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd); vertIndexStart = vertIndexEnd + 1; vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' '); float y = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd); vertIndexStart = vertIndexEnd + 1; vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' '); float z = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd); return glm::vec3(x, y, z); //glm::vec3(atof(tokens[1].c_str()), atof(tokens[2].c_str()), atof(tokens[3].c_str())) }