Если вы хотите отобразить только определенный прямоугольник, вам нужна комбинация чего-то вроде glFrustrum
или glOrtho
вместе с glViewPort
. На самом деле glViewPort
устанавливает прямоугольник отсечения. glFrustrum
, glOrtho
(gluPerspective
и т. Д.), Затем сопоставьте некоторый набор реальных координат этому прямоугольнику. Обычно вы едва замечаете glViewPort
, потому что он обычно устанавливается на всю область любого окна, которое вы используете, и вы изменяете отображение, чтобы получить различные виды в окне.
Если вы просто отрегулируете glFrustum
(например) самостоятельно, область отображения на экране останется прежней, и вы просто измените отображение, так что вы по-прежнему будете заполнять всю область окна, и в основном просто перемещайте виртуальную камеру, чтобы увеличить или уменьшить масштаб (и т. д.) отображаемого «мира». И наоборот, если вы просто настроите glViewPort
, вы отобразите точно такие же данные, но в меньшем прямоугольнике.
Чтобы «обрезать» данные по меньшему прямоугольнику, вам нужно отрегулировать оба сразу, в более или менее «противоположных» направлениях, чтобы по мере того, как ваш прямоугольник порта обзора становился меньше, вы увеличиваете область видимости для компенсации.