Проблема с использованием математической библиотеки Eigen с opengl

В настоящее время я пытаюсь использовать математическую библиотеку Eigen с Opengl. У меня есть некоторые определения типов для Vector3f от Eigen, скажем, Vec3, так что я могу использовать их в качестве координат для своих вершин. У меня также есть структура для вершины с координатой (vec3), нормалью (vec3) и цветом (vec4). Когда я пытаюсь использовать массивы вершин (я буду использовать VBO, как только заставлю массивы вершин работать правильно), кажется, что есть проблема с OpenGL, обрабатывающим Vector3f Eigen в качестве координат... Кто-нибудь из вас имел дело с этими проблемами??


person GBombay    schedule 08.09.2010    source источник
comment
Разве использование Eigen не является излишним? Я написал свои собственные классы для vec4/mat4, чтобы обеспечить совместимость с OpenGL. Самое сложное, что вы, вероятно, будете делать, это инвертировать матрицу, и это все еще тривиально для матрицы 4x4. Я думаю, что даже QR-разложение не так уж сложно сделать самостоятельно для матрицы 4x4, так почему Eigen?   -  person zerm    schedule 08.09.2010
comment
если вы передумаете, вы можете использовать мои курсы, если хотите (я не буду утверждать, что они были лучшими или в любом случае полными, но они хорошо служили мне долгое время). вот они: ioctl.eu/browser/opengl/base/src/mat4. h и ioctl.eu/browser/opengl/base/src/ vec4.h   -  person zerm    schedule 08.09.2010
comment
проблема: не отображается, отображается неправильно, вылетает, что?   -  person genpfault    schedule 08.09.2010


Ответы (2)


В Eigen векторы — это матрицы (см. eigen/eigen/src/e17630a40408/doc/AsciiQuickReference.txt строка 12)

Я подозреваю, что Матрицы владеют не только данными, но и дополнительной информацией, например размером. Более того, упаковка может быть странной.

Итак, что возвращает sizeof(Eigen::Vector3f)? Если это 3xsizeof(float) = 12, проблема в другом.

Кстати, как вы настраиваете и рисуете свой массив?

person Calvin1602    schedule 10.09.2010

В Eigen3 теперь есть обертки для OpenGL. Кажется, это самый чистый способ получить то, что вы хотите.

person Jakob    schedule 12.06.2011