Я пытаюсь использовать glVertexAttribPointer
со структурой собственных объектов, подобной этой:
struct Vertex {
Eigen::Vector3f position;
Eigen::Vector3f normal;
};
Проблема заключается в установке смещения glVertexAttribPointer
. Поскольку нет общедоступного доступа к члену m_data
, используемому для внутреннего хранения данных в Eigen, offset
использовать нельзя.
Кажется, что нет хорошего способа сделать это. Мой текущий подход выглядит примерно так:
(void*)((char*)vertices[0].Position.data() - (char*)(&vertices[0]))
, где vertices
- это std::vector<Vertex>
.
Это ни в коем случае не хорошо (особенно в современном C ++). Я сомневаюсь, что может быть хорошее решение, но какой будет более безопасный способ сделать это, или, по крайней мере, как можно изолировать эту операцию настолько, насколько это возможно, поэтому мне не нужно записывать ее для каждого вызова glVertexAttribPointer
.