Java 如何平移光标位置并缩放投影矩阵Opengl
我正在使用LWJGL,我希望在缩放投影矩阵后选择瓷砖,但我不确定如何选择。我正在为线性代数库使用JOML。投影矩阵首先应用正交变换,然后将其转换为玩家的位置,最后进行缩放。当我缩放投影矩阵时,由于所有内容都在放大,鼠标不再选择正确的平铺。这是我试图更正鼠标位置的尝试:Java 如何平移光标位置并缩放投影矩阵Opengl,java,opengl,matrix,Java,Opengl,Matrix,我正在使用LWJGL,我希望在缩放投影矩阵后选择瓷砖,但我不确定如何选择。我正在为线性代数库使用JOML。投影矩阵首先应用正交变换,然后将其转换为玩家的位置,最后进行缩放。当我缩放投影矩阵时,由于所有内容都在放大,鼠标不再选择正确的平铺。这是我试图更正鼠标位置的尝试: float cursorX = input.getCursorPosX() + getX(); float cursorY = input.getCursorPosY(true) + getY(); cursorX *= (
float cursorX = input.getCursorPosX() + getX();
float cursorY = input.getCursorPosY(true) + getY();
cursorX *= (1/cameraScalar);
cursorY *= (1/cameraScalar);
前两行从GLFW获取光标,并将玩家位置添加到其中。第三行和第四行只需乘以相机比例的倒数。我不熟悉JOML,但一般的方法是这样的:
float-screenX=2.0f*mouseX/屏幕宽度-1.0f;
浮动屏幕Y=1.0f-2.0f*鼠标/屏幕高度;
proj
)使用坐标(screenX,screenY,1)将屏幕向量投影到世界:
Vector3屏幕=新的Vector3(屏幕X,屏幕Y,1);
Vector3 world=proj.inverse().mul(屏幕);
world.x
和world.y
包含正确的世界坐标我不熟悉JOML,但是您想要做的事情的一般方法是这样的:
float-screenX=2.0f*mouseX/屏幕宽度-1.0f;
浮动屏幕Y=1.0f-2.0f*鼠标/屏幕高度;
proj
)使用坐标(screenX,screenY,1)将屏幕向量投影到世界:
Vector3屏幕=新的Vector3(屏幕X,屏幕Y,1);
Vector3 world=proj.inverse().mul(屏幕);
world.x
和world.y
包含正确的世界坐标