Очень просто Объяснение glOrthof () в OpenGL ES

Я видел некоторые предыдущие сообщения и объяснения в Интернете glOrthof, но я просто не понимаю. Я смотрю урок Stanford OpenGL ES на Youtube, и появился следующий код:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, backingWidth, 0, backingHeight, -1, 1);

Этот код рисует изображение 1px на 1px в нижнем левом углу экрана. Зачем это делать? Я думал, что этот код будет делать снимок из (0,0) и растянуть его по всему экрану, потому что он определяет плоскость от 0 до ширины экрана и 0 до высоты экрана. Может кто-то объяснить, как можно проще, почему он рисует его как 1px на 1px в нижнем левом углу. Полный исходный код можно найти на веб-сайте Stanford под названием «openGLtransforms.zip»:

Исходный код сайта

(Файл, где отображается этот код, - ES1Renderer.m)

Благодаря!

1
добавлено
Просмотры: 1
de

1 ответы

Нет, glortho «отображает», что находится внутри них на вашем экране, делая центр экрана центром этих самолетов. Поэтому, если вы помещаете объект в (0,0,0) с учетом вашего glortho-вызова, объект будет помещен в угол вашей сцены. Вероятно, более полезно сделать плоскости от -backingWidth/2 до + backingWidth/2 и -backingHeight/2 к backingHeight/2. Насколько велик ваш объект? ваш самолет zFar слишком близко к zNear, ваши объекты вписываются в это пространство?

0
добавлено
Я до сих пор этого не понимаю: (Что бы это сделал, например: glOrthof (-2, 2, -2, 2, -1, 1);
добавлено автор foobar5512, источник
Моя точка зрения по-прежнему актуальна: «Я думал, что этот код будет делать снимок (0,0) и растянуть его по всему экрану». Он «отображает», что находится внутри этого самолета, и делает его вписывающимся в экран. Вы должны разместить эти самолеты так, чтобы то, что вы делаете между ними, попадает в пространство экрана. Как ваша настройка GL_VIEWPORT?
добавлено автор Trax, источник
Эти примеры - 2D.
добавлено автор Jonathan Chandler, источник
Подумайте об Ortho как кубе, которому вы можете рисовать. Вы можете рисовать вне куба, но это не будет отображаться на экране. Итак, для вашего вопроса вы увидите только полигоны в кубе от (-2, -2, -1) до (2, 2, 1). Так как это 2D-полигоны, а Z установлен в 0, ваши Z-границы ничтожны.
добавлено автор Jonathan Chandler, источник