2014-12-24 4 views
1

Мне нужно делать снимки 3D-моделей под разными углами. Для этого я использую SDL и OpenGL. Но когда я пытаюсь сделать размер окна больше размера экрана, он изменяет размер, чтобы вписаться, что не то, что я хочу.Необходимо сделать размер окна SDL/OpenGL большим, чем размер экрана

Есть ли надлежащий или хакерский способ для этого?

+0

Вы можете использовать FBO больше (максимальный размер может быть запросом), чем экран, если он предназначен для внеэкранного рендеринга. –

+0

Это то, что я делаю, используя теневое отображение .... (Пардон, я не знаю OpenGL). Хотя понятно частично, но все же не могу понять, где моя ошибка. Пожалуйста помоги. Ссылка на код pastebin: [pastebin] (http://pastebin.com/AfgkgydJ) –

ответ

1

Используйте объект фреймбуфера с целевым объектом рендеринга нужного размера. Если максимальный поддерживаемый размер renderbuffer не удовлетворяет вашим потребностям, выполните реалистичный рендеринг.

Не используйте экранные окна для создания рендеринга, который вам нужен, чтобы быть «идеальным» и в нетронутых условиях. Экранный фреймбуфер ненадежен, в том смысле, что его содержимое может быть сбито в любой момент операционной системой, если возникнет такая необходимость.

Кроме того, поскольку рамка-рамка окна - это действительно просто реальное окно в более крупный однокамерный фреймбуфер, вам будет трудно сделать его больше, чем размер экрана.

+0

Согласовано. Если вам не нужно взаимодействовать или требовать наивысшей производительности, визуализируйте заставку. Если вам все еще нужно видеть ваш выход на экране, например. чтобы получить свой угол для моментального снимка, скопируйте его из своего FBO и масштабируйте его до окна. Затем снимите снимок с FBO, который имеет более высокое разрешение. Я думаю, что большинство высокопроизводительных реализаций поддерживают рендеринг по крайней мере 4kx4k. – djgandy

+0

Это то, что я делаю, используя теневое отображение .... (Pardon, я не знаю OpenGL хорошо). Хотя понятно частично, но все же не могу понять, где моя ошибка. Пожалуйста помоги. Ссылка на код pastebin: [pastebin] (http://pastebin.com/AfgkgydJ) –

+0

@SMH: Строка 63 не имеет смысла. Вы уже отобрали теневую карту непосредственно текстуре. Не нужно ничего копировать. И в последующем рендеринге с точки зрения камеры у вас все еще есть привязка фреймбуфера к теневой карте. Сначала необходимо связать другой фреймбуфер (либо по умолчанию на экране по умолчанию 0, либо рендеринг-буффер fbo [1] '), и снова нет необходимости копировать что-либо в целевые буферы. Но в конечном итоге вам придется использовать glReadPixels для получения сгенерированного изображения. – datenwolf

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