inline void SetWholeTexture() { AddTexCoord(0, 0); AddTexCoord(1, 0); AddTexCoord(1, 1); AddTexCoord(0, 1); EndTexCoord(); }
int Mesh::NewTexCoord(int a, int b, Scalar c) { Vector &A = GetTexCoord(a); Vector &B = GetTexCoord(b); return AddTexCoord(A*c + B*(1-c)); }
//********************* // ASCII //****************** void ModelLoader::ReadASCIIObj(const tstring& assetName) { ifstream stream; stream.open(assetName.c_str()); if (stream.fail()) { wcout << "File open fail: '" << assetName << "'\n"; return; } string line; vector<vector<int>> faceData; for (int i = 0; i < 3; ++i) { faceData.push_back(vector<int>(3)); } while (stream.eof() == false) { getline(stream, line); if (line.find("vn", 0) == 0) { Vector3 v; sscanf_s(line.c_str(), "vn %f %f %f", &v.X, &v.Y, &v.Z); AddNormal(v); } else if (line.find("vt", 0) == 0) { Vector2 v; sscanf_s(line.c_str(), "vt %f %f ", &v.X, &v.Y); AddTexCoord(v); } else if (line.find("f", 0) == 0) { sscanf_s(line.c_str(), "f %d/%d/%d %d/%d/%d %d/%d/%d", &faceData[0][0], &faceData[0][1], &faceData[0][2], &faceData[1][0], &faceData[1][1], &faceData[1][2], &faceData[2][0], &faceData[2][1], &faceData[2][2]); AddTri(faceData); } else if (line.find("g", 0) == 0) { wchar_t s[40]; sscanf_s(line.c_str(), "g %s40", s, _countof(s)); AddMesh(s); } else if (line.find("v", 0) == 0) //v is 0'd char { Vector3 v; sscanf_s(line.c_str(), "v %f %f %f", &v.X, &v.Y, &v.Z); AddVertex(v); } } FlushMesh(); //apply last mesh stream.close(); }