Как обрезать рендеринг в OpenGL (C ++) - PullRequest
5 голосов
/ 19 мая 2010

Как обрезать рендеринг в OpenGL (простая область прямоугольника)? Пожалуйста, опубликуйте пример C ++.

Ответы [ 2 ]

7 голосов
/ 19 мая 2010

Вероятно, вам нужен механизм OpenGL ножницы .

Это обрезает рендеринг пикселей, которые не попадают в прямоугольник , определяемый x, * 1008Параметры *, width и height.

Обратите также внимание, что это состояние OpenGL, когда оно включено, влияет на команду glClear, ограничивая очищаемую область.

2 голосов
/ 19 мая 2010

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

Если вы просто отрегулируете glFrustum (например) самостоятельно, область отображения на экране останется прежней, и вы просто измените отображение, так что вы по-прежнему будете заполнять всю область окна, и в основном просто перемещайте виртуальную камеру, чтобы увеличить или уменьшить масштаб (и т. д.) отображаемого «мира». И наоборот, если вы просто настроите glViewPort, вы отобразите точно такие же данные, но в меньшем прямоугольнике.

Чтобы «обрезать» данные по меньшему прямоугольнику, вам нужно отрегулировать оба сразу, в более или менее «противоположных» направлениях, чтобы по мере того, как ваш прямоугольник порта обзора становился меньше, вы увеличиваете область видимости для компенсации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...