Вопрос о дизайне библиотеки окон и виджетов SDL\OpenGL

Я хочу спроектировать и реализовать простой оконный и виджет для OpenGL, работающий поверх SDL, очень похожий на Agar или GiGi, только гораздо более тесно связанный с SDL и OpenGL.

Моя общая проблема заключается в следующем: каков наилучший дизайн оконной системы внутри контекста OpenGL??

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

Я хочу показать работу другим программистам, но какой способ будет лучше. Я больше программист на C++, поэтому наследование было первым способом, о котором я подумал. Создайте базовые классы, которые я выставляю в общем заголовочном файле, затем программист извлекает из него свой собственный объект окна, переопределяя методы Init() или Run() для реализации того, что им нужно. Проблема с этим подходом будет заключаться в том, чтобы держать программистов под контролем, не будет никакого реального способа «удержать» их от простого рисования на экране OpenGL, где они хотят.

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

Каков наилучший способ приблизиться ко всему этому??


person Community    schedule 30.07.2009    source источник


Ответы (1)


окна со своими собственными контекстами OpenGL

Это потребует взлома SDL, поскольку он предоставляет только один контекст для каждого процесса. Если вы не думаете о том, чтобы сделать один контекст GL с несколькими независимыми вложенными окнами просмотра, визуализируемыми последовательно.

person genpfault    schedule 30.07.2009
comment
Это очень хороший момент, я не имел в виду возиться с самим SDL. Окна просмотра работают, за исключением передачи чертежа за пределы библиотеки. Я больше думал об использовании объектов кадрового буфера для «поверхности рендеринга» пользователей, а затем просто о текстурировании четырехугольника для окна с некоторыми украшениями. - person ; 31.07.2009