Я думаю, что проблема может быть в умножении матриц, которое вы делаете в своем коде.
Как выполняется следующее умножение?
mat4 комбинированныйMatrix = проекция * вид * модель
Мне кажется довольно странным, что умножение матриц не может быть выполнено таким образом, если я полностью не ошибаюсь.
Вот как я это делаю:
for (i=0; i<4; i++) {
tmp.m[i][0] = (srcA->m[i][0] * srcB->m[0][0]) +
(srcA->m[i][1] * srcB->m[1][0]) +
(srcA->m[i][2] * srcB->m[2][0]) +
(srcA->m[i][3] * srcB->m[3][0]) ;
tmp.m[i][1] = (srcA->m[i][0] * srcB->m[0][1]) +
(srcA->m[i][1] * srcB->m[1][1]) +
(srcA->m[i][2] * srcB->m[2][1]) +
(srcA->m[i][3] * srcB->m[3][1]) ;
tmp.m[i][2] = (srcA->m[i][0] * srcB->m[0][2]) +
(srcA->m[i][1] * srcB->m[1][2]) +
(srcA->m[i][2] * srcB->m[2][2]) +
(srcA->m[i][3] * srcB->m[3][2]) ;
tmp.m[i][3] = (srcA->m[i][0] * srcB->m[0][3]) +
(srcA->m[i][1] * srcB->m[1][3]) +
(srcA->m[i][2] * srcB->m[2][3]) +
(srcA->m[i][3] * srcB->m[3][3]) ;
}
memcpy(result, &tmp, sizeof(PATRIA_Matrix));
Возможно, я ошибаюсьна этом, но я совершенно уверен, что вы должны следовать этому ПУТИ.
То, как я вижу ваш пример, выглядит для меня умножением указателя :( (хотя у меня нет специфики вашего матричного класса / структуры mat4)).