我将std :: vector分配给另一个类时遇到问题。我将数据放入std :: vector并将其放入名为“ Mesh”的类中。然后,“网格”变成了“模型”。
// Store the vertices
std::vector<float> positionVertices;
positionVertices.push_back(-0.5f);
positionVertices.push_back(-0.5f);
positionVertices.push_back( 0.5f);
positionVertices.push_back(-0.5f);
positionVertices.push_back(-0.5f);
positionVertices.push_back( 0.5f);
// Put them into a mesh and the mesh into a model
Mesh mesh = Mesh(positionVertices);
Model model = Model(mesh);
在模型类中,我取回网格的位置顶点并将其转换为float []。但是似乎这样,我分配std :: vector的方式是错误的,因为在检查模型类中的std :: vector时,它的大小为0。
// Store the vertices
float* dataPtr = &data[0];
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(float), dataPtr, GL_STATIC_DRAW);
如何将数据正确地带入其他类别?
我也不确定网格类的构造函数的工作方式。 Mesh.h:
// Mesh.h
class Mesh
{
public:
std::vector<float> positionVertices;
Mesh(std::vector<float>);
~Mesh();
};
Mesh.cpp:
// Mesh.cpp
Mesh::Mesh(std::vector<float> positionVertices) : positionVertices(Mesh::positionVertices)
{
}
Model.h:
// Model.h
class Model
{
public:
Mesh mesh;
unsigned int vertexArray;
unsigned int vertexCount;
Model(Mesh);
~Model();
void storeData(std::vector<float> data, const unsigned int index, const unsigned int size);
};
Model.cpp:
// Model.cpp
Model::Model(Mesh mesh) : mesh(Model::mesh)
{ ... }
答案 0 :(得分:1)
// Mesh.cpp
Mesh::Mesh(std::vector<float> positionVertices) :
positionVertices(Mesh::positionVertices) // Here's the problem
{
}
初始化器列表中的positionVertices
是 Mesh::positionVertices
,因此您将其分配给自己。
使用
positionVertices(positionVertices)
还要更改
Mesh::Mesh(std::vector<float> positionVertices) :
到
Mesh::Mesh(const std::vector<float>& positionVertices) :
因此,您不必复制不必要的向量。