我试图在OpenGL(C ++)中使用鼠标来制作光源。在世界坐标中,我的屏幕中心是(4, 1.5f)
,我得到中心的鼠标坐标为(640, 360)
(窗口res为1280,720)。我设法只转换中心的坐标,但我无法弄清楚如何让其余的转换。
用于转换中心坐标:
shader.SetUniform("lightPos", fs::Vector2f((float) x * 8 / 1280, (float) (y * 4.5f / 720) - 0.75f));
我尝试的另一个转化是(x * 16.0f / 1280.0f), (9.0f - y * 9.0f / 720.0f)
其中x和y是鼠标坐标。
我在网上找到的所有解决方案到目前为止都没有发挥作用。
如果重要,这是我的投影矩阵:
fs::Matrix4f ortho = fs::Matrix4f::Orthographic(0, 16, 0, 9, -1, 1);
参数:float left, float right, float bottom, float top, float near, float far
为了澄清,这里有一些图像,其中黄色矩形是我的鼠标,这是我想要光渲染的地方
有什么想法吗?
答案 0 :(得分:0)
关闭此问题,我的问题是,在我完成gl_Position = projectionMatrix * viewMatrix * modelMatrix * position;
后,我忘记了下一行将更新的位置数据发送到我的片段着色器,所以我不得不更改我的行pos = position;
(pos作为一个外向的vec4和位置是pos = modelMatrix * position;