У gluPerspective есть точка схода в углу. OPENGL
Я использую pyglet: http://www.pyglet.org/ для работы с opengl. Однако у меня есть некоторые проблемы.
Моя точка схода появляется в углу экрана (0,0) в левом нижнем углу. Следующее изображение должно показать, чтобы проиллюстрировать это: http://i.imgdiode.com/0wu5E0.png
Слева куб, как я его сейчас вижу. Справа - как это должно выглядеть (как я хочу). Как я могу сделать это таким образом?
Кроме того, я прочитал немного о матричных режимах, и кажется, что GL_PROJECTION должен использоваться с gluPerspective. Когда я использую их вместе, эффект перспективы исчезает. Только в GL_MODELVIEW будет работать соответствующая работа. Я озадачен тем, почему это так.
Ниже приведен код, который я использую для отображения объекта.
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluPerspective(60,1,0,10)
2 ответа
gluPerspective(60,1,0,10)
^ stop that
zNear
должно быть больше нуля и меньше zFar
, Попробуйте что-то вроде 0.1
,
Попробуйте эту последовательность вместо этого:
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60,1,0.1,10)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
# draw stuff
Начало координат (0,0) основано в левом нижнем углу экрана. Это дает паритет между 2D и 3D; 2D координаты pyglet начинаются с нижнего левого угла.
Чтобы разобраться в этом, вам просто нужно добавить перевод перед матрицей проекции:
window = pyglet.window.Window()
glLoadIdentity()
pyglet.graphics.glTranslatef(window.width / 2.0, window.height / 2.0, 0.0)
gluPerspective(60,1,0,10)
Это переместит исходную точку в центр экрана (или переместит "камеру", чтобы посмотреть на исходную точку; они практически идентичны)