OpenGL может сделать это? - PullRequest
2 голосов
/ 28 июля 2010

Я делаю приложение, которое рисует фигуры, и я использую камеру для рисования в других местах.По сути, скажем, у меня прямоугольник 4х3 и я хотел бы использовать glgetpixels, чтобы получить все пиксели для чего-то, что составляет 1024x768, но мой монитор может не поддерживать это разрешение.Как я могу сделать что-то большее, чем монитор.Я делаю это, чтобы позволить пользователю сохранить изображение фигур в произвольном разрешении.Будет ли использование glviewport выходить за рамки, тогда я могу просто сделать glgetpixels?

Спасибо

Ответы [ 4 ]

3 голосов
/ 28 июля 2010

Вы можете сделать RTT (рендеринг в текстуру), определив FBO (объект буфера кадров) и прикрепив к нему текстуру.Проверьте glBindFramebufferEXT ().

И после рисования сцены вы можете выполнить glGetTexImage () и получить для него пиксели.

RTT - очень хорошо отработанный и задокументированный метод.

2 голосов
/ 28 июля 2010

Это не исчерпывающий ответ, но он должен быть полезным.Вы делаете RTT, Render to Texture.Вы собираетесь установить новый рендер-буфер, установить его в качестве цели рендеринга, а затем использовать glGetPixels, чтобы получить его значение.Когда вы делаете рендер-буфер с помощью:

void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);

Вы можете установить его размер, который не должен соответствовать размеру вашего экрана.Надеюсь, это поможет!

2 голосов
/ 28 июля 2010

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

Поиск в Google дал мне это, возможно, это полезно: http://developer.nvidia.com/attach/6725

0 голосов
/ 28 июля 2010

На самом деле, это зависит.Я думаю, что FBO не решат ваши проблемы (это поможет).

Я подозреваю, что вы пытаетесь создать версию 3D-сцены в высоком разрешении, например, для печати с разрешением 300 точек на дюйм.Возможно, вам потребуется больше, чем ваше максимальное разрешение FBO (4096 * 4096 на приличной графической карте), поэтому вам придется использовать мозаичный рендеринг.sub-images (плитки)

Автор Mesa3d написал хорошую библиотеку, которая делает это, TR .Использование довольно просто.

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