До сих пор для вращений я использовал Glm для реализации Arcbal SDL, чтобы получить координаты мыши не сложно.
Я могу создать вектор размера 3 с текущими координатами мыши во время события движения мыши с: < /p>
Код: Выделить всё
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_MOUSEMOTION:
glm::vec3 vecTranslation(event.motion.x, event.motion.y, 0);
glm::mat4 translationMatrix;
glm::translate(translationMatrix, vecTranslation);
}
}
Код: Выделить всё
glm::matrixCompMult(translationMatrix,rotationMatrix);
< /code>
Но когда я это делаю, как перевод, так и вращение не работают. Если я просто верну матрицу вращения и использую ее напрямую с помощью Glmulmatrix () Код: Выделить всё
//Assume some code is done to know if and what translations should be done
matrixProjection = translationMatrix * mMatNow * scaleMatrix ;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glMultMatrixf(matrixProjection);
// scaling transfomation
glScalef(0.5,0.5,0.5);
drawCube();
glFlush();
SDL_GL_SwapBuffers();
< /code>
Матрица, которую я получаю,-это что-то вроде:
First: < /p>
1 ; 0 ; 0 ; 0 ;
0 ; 1 ; 0 ; 0 ;
0 ; 0 ; 1 ; 0 ;
0 ; 0 ; 0 ; 1 ;
< /code>
Затем после перевода: < /p>
1 ; 0 ; 0 ; 0 ;
0 ; 1 ; 0 ; 0 ;
0 ; 0 ; 1 ; -25 ;
0 ; 0 ; 0 ; 1 ;
rygrys.
inrignal. src = "https://i.sstatic.net/jjnwx.png"/>
Подробнее здесь: https://stackoverflow.com/questions/313 ... use-cursor
Мобильная версия