我正在使用 GLM OpenGL 数学库编写一个 OpenGL 程序。我想像这样将顶点位置、法线和纹理坐标组合成一个类
class Vertex {
public:
glm::vec4 position;
glm::vec4 normal;
glm::vec2 texcoord;
};
然后使用这些数组作为我的顶点缓冲区对象(VBO)。但是,当调用 映射我的 VBO 时,我需要为and成员glVertexAttribPointer
在这个组合的 Vertex 结构中给它一个偏移量。normal
texcoord
如果这些只是 POD,我可以使用类似的东西
offsetof(Vertex, position)
但这不适用于 glm 数据类型(或至少 g++ 4.4.3 退出)。
获取 Vertex 成员偏移量的推荐方法是什么?
(我理解为什么我不能拥有offsetof
任意 C++ 对象的一般原因,但在这种特殊情况下,事情似乎是明确定义的)。