Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Double buffer in OpenGL


Автор: Letchik 6.8.2010, 18:39
Привет!
Есть ли в OpenGL возможность рисовать одновременно в разных битмапах? Типа создать разные контексты устройств, битмапы для них, и в каждом битмапе рисовать определённое изображение, т.е. они будут иметь разные предназначения. Затем всё это собирать вместе с помощью BitBlt() и выводить на экран. 
Как мне показалось, такое невозможно. Тогда как это реализовать? Есть ли альтернатива?

Автор: Amp 7.8.2010, 00:18
http://en.wikipedia.org/wiki/Framebuffer_Object

Автор: Letchik 13.8.2010, 17:58
Жаль, это не совсем то, что мне нужно. Попробую разъяснить суть проблемы. 
Чтобы построить объект, нужно его программно описать между функциями glBegin() и glEnd(). Т.е заранее определено то, что будет выведено на экране. А что, если это приложение типа 3ds max или AutoCAD, там пользователь сам создаёт объекты. Как в таком случае поступить? Конечно, можно наколдовать алгоритм, который будет из памяти брать данные об объектах и рисовать их в цикле, но это будет через ж**у. Мне не нравится, что, изображение надо постоянно строить заново. Я уверен, тут есть правильный выход, иначе 3ds max и AutoCAD не существовали бы.

Автор: Amp 13.8.2010, 22:41
Цитата(Letchik @  13.8.2010,  17:58 Найти цитируемый пост)
Чтобы построить объект, нужно его программно описать между функциями glBegin() и glEnd(). Т.е заранее определено то, что будет выведено на экране. А что, если это приложение типа 3ds max или AutoCAD, там пользователь сам создаёт объекты. Как в таком случае поступить? Конечно, можно наколдовать алгоритм, который будет из памяти брать данные об объектах и рисовать их в цикле, но это будет через ж**у.

Ничего не понял. Какая разница, кто строит объект? Информация о вершинах, индексах, текстурных координатах, нормалях будет либо храниться в буферах где-то в памяти (в памяти видеокарты или в ОЗУ) и выводится через glDrawArrays/glDrawElements/glDrawRangeElements, либо тупо через glBegin/glEnd и glVertex (что при большом количестве полигонов хорошо просаживает производительность). Причем тут пользователь - мне не ясно.

Может быть тебе хочется иметь несколько viewport-ов на одном окне (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=42)?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)