Кажется, у меня любопытная проблема.Я настроил OpenGL так:
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 пикселю в каждом направлении, а по 300 в x и 200 в y.
Я понимаю, что могу масштабировать эти значения внутри шейдера, но это кажется немного грязным.Наверняка я что-то не так делаю в настройке.Любая помощь очень ценится.