Graphics/OBJLoader: Allow users to specifiy a vertex count cache when loading
Former-commit-id: 87ebc2aefe2c2091fd483793f880724e1ed6ac3d
This commit is contained in:
parent
dce587bd63
commit
c935c1a293
|
|
@ -54,7 +54,7 @@ namespace Nz
|
|||
const Vector3f* GetTexCoords() const;
|
||||
unsigned int GetTexCoordCount() const;
|
||||
|
||||
bool Parse();
|
||||
bool Parse(std::size_t reservedVertexCount = 100);
|
||||
|
||||
private:
|
||||
bool Advance(bool required = true);
|
||||
|
|
|
|||
|
|
@ -133,8 +133,12 @@ namespace Nz
|
|||
|
||||
bool Load(Model* model, Stream& stream, const ModelParameters& parameters)
|
||||
{
|
||||
int reservedVertexCount;
|
||||
if (!parameters.custom.GetIntegerParameter("NativeOBJLoader_VertexCount", &reservedVertexCount))
|
||||
reservedVertexCount = 100;
|
||||
|
||||
OBJParser parser(stream);
|
||||
if (!parser.Parse())
|
||||
if (!parser.Parse(reservedVertexCount))
|
||||
{
|
||||
NazaraError("OBJ parser failed");
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ namespace Nz
|
|||
return m_texCoords.size();
|
||||
}
|
||||
|
||||
bool OBJParser::Parse()
|
||||
bool OBJParser::Parse(std::size_t reservedVertexCount)
|
||||
{
|
||||
String matName, meshName;
|
||||
matName = meshName = "default";
|
||||
|
|
@ -95,10 +95,10 @@ namespace Nz
|
|||
m_positions.clear();
|
||||
m_texCoords.clear();
|
||||
|
||||
// Beaucoup de meshs font plus de 100 sommets, préparons le terrain
|
||||
m_normals.reserve(100);
|
||||
m_positions.reserve(100);
|
||||
m_texCoords.reserve(100);
|
||||
// Reserve some space for incoming vertices
|
||||
m_normals.reserve(reservedVertexCount);
|
||||
m_positions.reserve(reservedVertexCount);
|
||||
m_texCoords.reserve(reservedVertexCount);
|
||||
|
||||
// On va regrouper les meshs par nom et par matériau
|
||||
using FaceVec = std::vector<Face>;
|
||||
|
|
|
|||
Loading…
Reference in New Issue