2013-10-01 4 views
3

Я хочу отобразить сцену с определенными параметрами камеры, где разрешение очень высокое (скажем, 20 000 x 20 000 пикселей), но на самом деле меня интересует только небольшая секция изображения 640x480.Рендеринг обрезанного изображения в OpenGL

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

Я приложил картинку, чтобы попытаться показать, что я имею в виду: Uploaded image

Любые намеки о том, как я могу настроить матрицу камеры с OpenGL называет правильно что-то вроде этого?

+0

Я очень сомневаюсь, что вы найдете реализацию OpenGL, способную отображать в фреймбуфер размером 20 000 x 20 000 (для этого вам может понадобиться разделить задачу рендеринга на плитки). Но одна вещь, которую вы можете рассмотреть, называется ящиком для ножниц, это позволяет обрезать растеризацию в суб-прямоугольник вашего окна просмотра. В отличие от изменения фактического отображения видового экрана, это не изменит ваши проекционные характеристики. Подробнее см. «GlScissor (...)». –

+0

Это растровая операция, поэтому установка прямоугольника с ножницами не поможет вам закрепить геометрию во время примитивной сборки. Для этой цели вам может потребоваться реализовать дополнительную логику отсечения. –

+0

Мне не обязательно нужен буфер кадров размером 20 000 x 20 000, я просто хочу сохранить исходную камеру, но только визуализирую небольшую часть этой плоскости изображения. До сих пор я рассматривал изменение реальной камеры, чтобы посмотреть на это место. Даже если я использую ножничный ящик, как это поможет мне обойти тот факт, что мне все еще понадобится огромный фреймбуфер, чтобы сохранить уровень детализации, который я хочу в области интереса? –

ответ

1

0 думаю, libtr сделаю, что вы хотите.

+0

Прохладный, я дам вам попробовать, спасибо! –

2

Все, что вам нужно сделать, это выбрать другую матрицу проекций. Старые ссылки на страницы для glFrustum описывают, как создать такую ​​матрицу:

projection matrix

слева, справа, сверху и снизу параметры определяют края вашего усеченного (как показано на изображении). Чтобы создать «нормальную» матрицу проекции, left = -right и top = -bottom. Установка их в разные значения позволяет сдержать ваше представление. Например, если вы установите left = 0 и top = 0, оставив правое и нижнее целое, тогда у вас будет проекция, похожая на красные области на вашем снимке.

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

+0

Прохладный, я действительно думал о том, чтобы идти по этому маршруту, просто не был уверен, как начать, спасибо за вашу помощь! –

Смежные вопросы