// WRITE uint nrVertices = pMeshData.Vertices.size(); uint nrIndices = pMeshData.Indices.size(); // 1. number of vertices (uint) writeMesh.write(reinterpret_cast(&nrVertices), sizeof(uint)); // 2. vertices (POS - NORM - TAN - TEX) for(size_t v=0;v(&pMeshData.Vertices[v].Position.x), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Position.y), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Position.z), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Normal.x), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Normal.y), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Normal.z), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Tangent.x), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Tangent.y), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Tangent.z), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Texcoord.x), sizeof(float)); writeMesh.write(reinterpret_cast(&pMeshData.Vertices[v].Texcoord.y), sizeof(float)); } // 3. number of faces (uint) writeMesh.write(reinterpret_cast(&nrIndices), sizeof(uint)); // 4. Faces - indices for(size_t i=0;i(&pMeshData.Indices[i]), sizeof(uint)); } // 5. Material ID writeMesh.write(reinterpret_cast(&pMaterialId), sizeof(uint)); writeMesh.close(); // READ uint lNrVertices = 0; uint lNrIndices = 0; std::vector lVertices; std::vector lIndices; std::ifstream loadMesh; loadMesh.open(std::string(IO_FOLDER_MESHES) + "sphere.mdl", std::ios::in, std::ios::binary); if(loadMesh.bad()) { CLOG(ERROR, "IO") << io_read_bin_error.c_str() << "filename"; return false; } // 1. number of vertices (uint) loadMesh.read(reinterpret_cast(&lNrVertices), sizeof(uint)); lVertices.resize(lNrVertices); // 2. vertices (POS - NORM - TAN - TEX) for(size_t v=0;v(&lVertices[v].Position.x), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Position.y), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Position.z), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Normal.x), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Normal.y), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Normal.z), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Tangent.x), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Tangent.y), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Tangent.z), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Texcoord.x), sizeof(float)); loadMesh.read(reinterpret_cast(&lVertices[v].Texcoord.y), sizeof(float)); } // 3. number of faces (uint) loadMesh.read(reinterpret_cast(&lNrIndices), sizeof(uint)); lIndices.resize(lNrIndices); // 4. Faces - indices for(size_t i=0;i(&lIndices[i]), sizeof(uint)); } // 5. Material ID uint matId; loadMesh.read(reinterpret_cast(&matId), sizeof(uint)); loadMesh.close(); using vtxType = Vertex::PosNormTex; std::vector tVertices(pMeshData.Vertices.size()); mVertexByteSize = sizeof(vtxType); for(size_t i=0;iCreateBuffer(RENDERER::BUFFER_TYPE::VERTEX, tVertices.data(), mNrVertices, false, false)); //mIndexBuffer.reset(pDevice->CreateBuffer(RENDERER::BUFFER_TYPE::INDEX, pMeshData.Indices.data(), pMeshData.Indices.size(), false, false)); mIndexBuffer.reset(pDevice->CreateBuffer(RENDERER::BUFFER_TYPE::INDEX, lIndices.data(), lIndices.size(), false, false));