我正在尝试检索我的鼠标坐标(在QGLWidget到Qt中),以估计它在虚拟世界中的当前2D坐标(我的所有顶点都有z=0)。
为此,我写道:
modelViewMatrix = np.asarray(matView*matModel)
viewport = glGetIntegerv(GL_VIEWPORT)
z = 0
x, y, z = GLU.gluUnProject(float(self.mouseX), float(self.mouseY), float(z), model = modelViewMatrix,
proj = np.asarray(matProj), view = viewport)
matModel始终是单位矩阵(numpy.eye(4)),而matView和matProj矩阵是通过lookat(eye,target,up)和perspective(fovy,aspect,near,far)方法计算的。matView矩阵是我的应用程序中唯一一个通过鼠标事件改变的矩阵。
我还提供顶点着色器:
VERTEX_SHADER = """
#version 440 core
uniform float scale;
uniform mat4 Model;
uniform mat4 View;
uniform mat4 Projection;
in vec2 position;
in vec4 color;
out vec4 v_color;
void main()
{
gl_Position = Projection*View*Model*vec4(scale*position, 0.0, 1.0);
v_color = color;
}
"""
为了测试我的代码片段,我画了一个顶点为(-1,-1)、(-1,1)、(1,-1)和(1,1)的正方形。但当我把鼠标移到角落时,我没有得到任何+-1坐标。
所以,我想我的代码有问题。。。