Сообщение от Nikich
А почему тогда отображение без вращения верно?
И если всё же нужна viewproj матрица, как её рассчитать вручную, без GLM? Просто как-то не ахти подключать дополнительную библиотеку для одного расчета, а гугл явно твердит, что следует использовать GLM.
|
да используй GLM. Там cpp-шников нет, библиотека построена на шаблонах, точно будет лучше, чем изобретать велосипед. Ну если так хочешь сам, то кури перемножение матриц. Вообще, рано или поздно, тебе придется использовать математическую библиотеку.
Можешь еще спросить у HolyDel, он реализовывал без GLM. Только вроде для mat4x4
p.s. если верно без вращения, значит ты уже в скрин спейсе формируешь и отправляешь в шейдер, тогда поворот будет работать относительно не своего центра, а точки 0.0 на экране, это центр
зачем тогда вообще на матрицу умножать?
вот на, кусок с моего движка
point BatchOpenGL::rotatePoint(float cx, float cy, float angle, point p)
{
float s = sin(angle);
float c = cos(angle);
// translate point back to origin:
p.x -= cx;
p.y -= cy;
// rotate point
float xnew = p.x * c - p.y * s;
float ynew = p.x * s + p.y * c;
// translate point back:
p.x = xnew + cx;
p.y = ynew + cy;
return p;
}
учти что angle может быть в углах или радианах. в чем точно не помню. Формула такая: Угол = Радиан * (180 / Пи)