glm lookAt и матричное преобразование, приводящее к странному поведению

я использую glm::lookAt чтобы получить матрицу, чтобы преобразовать мир. Это отлично работает, я могу сгенерировать матрицу, передать ее в шейдер, и все это работает. Теперь мне нужно преобразовать произвольный вектор (т.е. 100 100 100 100) с помощью lookAt матрица. По какой-то причине я получаю значения мусора

glm::mat4 model = glm::lookAt(glm::vec3(current_pos.x,
current_pos.y,
current_pos.z),
glm::vec3(current_pos.x + dir.x,
current_pos.y + dir.y,
current_pos.z + dir.z),
glm::vec3(up.x,up.y,up.z));
GLfloat fmodel[16] =
{
model[0][0],
model[0][1],
model[0][2],
model[0][3],

model[1][0],
model[1][1],
model[1][2],
model[1][3],

model[2][0],
model[2][1],
model[2][2],
model[2][3],

model[3][0],
model[3][1],
model[3][2],
model[3][3]
};

Распечатка modelценности: 0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3
Я рассчитываю точку, используя model * vec4(x, y, z, 1)

Матрица дублирована, поэтому я могу передать ее как униформу. При использовании исходной матрицы построение матрицы из массива дает идентичные результаты.

РЕДАКТИРОВАТЬ

Печатный код выглядит следующим образом:

for (unsigned i = 0; i < 16; ++i)
printf("%d,", fmodel[i]);

Это дает выход 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 независимо от того, что мои векторы

0

Решение

Как ни странно, после использования glm::value_ptr() переписывает большие массивы кода, теперь это работает

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]