我似乎有一个好奇的问题。我设置了OpenGL的是这样的:在GLSL顶点着色器中使用正确的坐标系
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, height, 0, -width, width);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
显然,宽度和高度都是我的窗口,它是由600 400里面的OpenGL一切正常的大小,我可以正确的坐标系中移动。即无论是以200个像素绘制,平移200个移动。现在
,我的顶点着色器里我似乎无法使用同一个坐标系,我做平常:
vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_Position = pos;
中的main(),一切似乎要被罚款。但是,当我尝试这样的事情:
vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
pos.x+= 1.0;
pos.y-= 1.0;
gl_Position = pos;
顶点位置在每个方向上不是由1个像素翻译,而是在x中是300,在y中是200。
我明白我可以在着色器内缩放这些值,但看起来有点脏。当然,我必须在设置中做错了什么。任何帮助深表感谢。