я использую 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
независимо от того, что мои векторы
Как ни странно, после использования glm::value_ptr()
переписывает большие массивы кода, теперь это работает
Других решений пока нет …