我创建了一个着色器存储缓冲区对象来为我的顶点着色器提供信息。它绑定到包含单个结构的缓冲区。但有一个问题。我保存在这个结构中的数据不是一个简单的数组,它是一个std::vector
.
这是结构:
typedef struct {
glm::mat4 modelMatrix;
} entityInfo;
typedef struct {
std::vector<entityInfo> entityInfoBuffer;
} shaderData;
mat4 只是一个简单的 4x4 浮点矩阵。
如果我把它交给 OpenGL,传输到 GPU 的数据将只是一堆指针和有关矩阵/向量的信息,而不是其中的数据。
一种解决方案是仅为 OpenGL 创建一个结构:
typedef struct {
float* modelMatrix;
} SSBOentityInfo;
typedef struct {
SSBOentityInfo* entityInfoBuffer;
} SSBOshaderData;
但是我必须复制与容器数据相对应的 eeeeevery 指针。
有更好的方法吗?