Je semble avoir un curieux problème. Je mis en place OpenGL comme ceci:Utilisation du système de coordonnées correct dans le vertex shader de GLSL
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, height, 0, -width, width);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
De toute évidence, la largeur et la hauteur sont la taille de ma fenêtre, qui est de 600 par 400. tout à l'intérieur OpenGL est très bien, je peux me déplacer dans le système de coordonnées correct. c'est-à-dire traduire par 200 coups tout ce qui est dessiné par 200 pixels.
Maintenant, dans mon vertex shader je ne peux pas sembler utiliser le même système de coordonnées, je l'habituel:
vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_Position = pos;
intérieur main() et tout semble bien. Cependant, lorsque je tente quelque chose comme ceci:
vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
pos.x+= 1.0;
pos.y-= 1.0;
gl_Position = pos;
Les positions des sommets sont convertis non par 1 pixel dans chaque direction, mais par 300 x et 200 dans le y. Je comprends que je pourrais mettre à l'échelle ces valeurs dans le shader, mais cela semble un peu sale. Je dois sûrement faire quelque chose de mal dans la configuration. Toute aide est très appréciée.