OpenGL (ES) - в чем разница между frustum и ortho?

когда я использую каждый из них с одинаковыми параметрами, единственное отличие, которое я замечаю, - это то, насколько близко "камера" от объектов. В чем разница здесь, и что предпочтительнее для в основном 2D-игры?

2 ответов


Я не согласен с Леффельманией, хотя его ответ уже принят, я хотел бы еще раз объяснить, что такое разочарование и каковы различия между орфографическими и перспективными проекциями.

разочарование-это пирамида без 3D-объекта в форме вершины (в ссылке, определяемой пространством между плоскостью zNear и zFar).

view frustum

разочарование используется для определения того, что может видеть камера. Все, что внутри или пересекается с вид камеры-разочарование должно быть визуализировано, все остальное можно игнорировать.

поскольку разочарование-это сложная форма для проверки пересечения, часто матричное преобразование строится так, что разочарование представления преобразуется в куб. Это матричное преобразование также применяется ко всем объектам сцены, так что теперь мы можем сделать простую проверку "пересекается ли она с кубом". Это называется канонический вид frustum (посмотреть подробнее вот!--11-->)

теперь о перспективе против орфографической проекции. На снимке вы видите камеру, или центр проекции (КС). В перспективной проекции КС находится вблизи ближней плоскости. Лучи со всех позиций на дальней плоскости направлены на полицейского. Там, где эти лучи пересекают ближнюю плоскость (он же видовое окно), пиксель окрашивается в соответствии с цветом ближайшей к ближней плоскости, в которую попал луч. Перспективная проекция приводит к (нескольким) исчезающим точкам и объекты дальше от камеры меньше, также параллельные линии в мире не обязательно параллельны на картинке.

в ортографической проекции КС бесконечно далеко, поэтому лучи почти параллельны друг другу. Нет точки схода, более отдаленные объекты не рисуются меньшими и параллельные линии в мире параллельны на картинке.


вообще говоря, разочарование используется для 3D-сцен для размещения проекции перспективного вида. Он составляет расстояние каждого объекта от камеры, а также угол обзора для определения размера и положения объекта на экране. Орфографическая проекция просто берет каждый объект и рисует прямую линию от объекта до пикселя на экране, делая его просто плоской сценой. Это грубое обобщение, и есть много чего сказать по этому вопросу, но для 2D-игры вы захотите использовать орфографическую проекцию.