J'essaye de récupérer mes coordonnées de souris (dans un QGLWidget par Qt) pour estimer ses coordonnées 2D actuelles dans le monde virtuel (tous mes sommets ont z = 0).De coordonnées de souris aux coordonnées du monde par glUnproject
Pour ce faire, je l'ai écrit ceci:
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)
Le matModel est toujours la matrice d'identité (numpy.eye (4)), tandis que les matrices matView et matProj sont calculés grâce à la lookat (oeil, cible , up) et perspective (fovy, aspect, near, far) méthodes. La matrice matView est la seule qui change à travers les événements de la souris dans mon application.
Je donne aussi mon vertex shader:
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;
}
"""
Pour tester mon extrait de code, je dessine un carré avec des sommets (-1, -1), (-1,1), (1, -1) et (1,1). Mais quand je déplace ma souris dans un coin, je n'obtiens aucune coordonnée + -1.
Donc, je crois qu'il ya quelque chose de mal dans mon code ...