У 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)

Это переместит исходную точку в центр экрана (или переместит "камеру", чтобы посмотреть на исходную точку; они практически идентичны)

Другие вопросы по тегам