Я пытаюсь получить координаты мыши (в QGLWidget через Qt), чтобы оценить его текущие 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 (глаз, цель , вверх) и перспективы (фокусные, аспектные, ближние, далекие) методы. Матрица 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 координат.
Так что, я думаю, есть что-то не так в моем коде ...