Тут только один выход - самому разобраться с матрицами и понять как это работает.
http://www.songho.ca/opengl/gl_transform.html
http://www.opengl.org/wiki/GluProject_and_gluUnProject_code
Спасибо за ссылки, вторую ссылку изучу, а вот первая на английском=(
Получше сформулирую вопрос.
Есть поле которое состоит из 100*100 квадратов размером 8*8 (единиц измерения OpenGL, не знаю как их назвать), начало координат поля xyz = 0.0, то есть центр экрана у меня есть координаты каждой клетки этого поля (координаты только x и y, z = 0.0). В функции рендера, перед тем как отправить данные шейдеру, произвожу поворот сцены
Поле до поворота сцены Pole
MapMatrix4Translation(cameraTranslate, 0.0, 0.0, 0.0);
MapMatrix4Rotation(cameraRotate, -45.0, 0.0, 45.0); // тут записал в градусах
Есть функция перемещения модели по этому 2D полю, в ней используются только x,y координаты.
Мне нужно получить 2D координаты квадрата поля, на котором находится курсор мыши.
Есть функция которую я использовал для перемещения модели на позицию курсора мыши, при нажатии ЛКМ. Так как нажатие ЛКМ происходит до поворота сцены, то есть до рендера, чтобы модель не уезжала на -45 градусов по оси x и 45 по оси z, я умножил ModelMatrix * ProjectionMatrix (и на обратную матрицу камеры) * inverseCameraMatrix. Модель переносится на позицию курсора четко, но уже с использованием координаты z (пост #14). Из-за этого при передвижении сцены модель может выехать за пределы видимости камеры или скрыться за полем. Если z приравнять нулю, то модель будет перемещаться не туда куда нужно
Что нужно сделать для того чтобы получить координаты курсора мыши в 2D, без глубины?
Тема в архиве.