1
我想通過QT檢索我的鼠標座標(在QGLWidget中)來估計它在虛擬世界中的當前2D座標(我所有的頂點都有z = 0)。從鼠標座標到世界座標通過glUnproject
爲此,我寫這樣的:
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(眼睛,目標,up)和透視(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座標。
所以,我想有一些錯誤在我的代碼...