MrShoor
> У меня все окна в одном потоке, я многопоточного рендера вообще стараюсь
> избегать, ибо карточка как правило все равно одна.
Нигде и никогда в этой теме я не упоминал многопоточность.
MrShoor
Данная тема про то, что не надо работать с многооконными системами через wglShareLists и не более того. :)
Данная тема про то, что не надо работать с многооконными системами через wglShareLists и не более того. :)
Но лучше вообще не работать с многими окнами, а по возможности создавать одно окно, и рендерить в разные его части. Классический пример как делать ненадо: http://www.gamedev.ru/code/forum/?id=181895&page=2#m16
MrShoor
> по возможности создавать одно окно, и рендерить в разные его части.
эээ. не согласен. :)
но ок, мнение имеет право на существование.
@!!ex
> > Ну то есть ты утверждаешь, что 8 раз сменить рендер контекст и делать 8 раз
> > SwapBuffers быстрее, чем 8 раз сменить glViewport и сделать 1 раз
> > SwapBuffers?
> > Ха ха.
> не быстрее. ровно столько же по времени.
не верю.
@!!ex
Ну не может быть медленным вывод на 1окно, но в просто его разные области через разные viewport быть медленнее переключения контекстов и свапбуферов. Делал приложение, где как в максе экран на 4 части разделен через вьювпорты, все летало, а вот при лишних свапбуферах фпс начинает проседать.
Еретик
Твой пример не совсем тоже самое.
Работа на физически разных мониторах по разному реализована.
По факту некоторые драйвера все равно делают отдельный бэк буфер и отдельный своп на каждои из мониторов. В этой ситуации фактически делать одно огромное окно или несколько отельных - не имеет никакой разницы.
MrShoor
>>Но лучше вообще не работать с многими окнами, а по возможности создавать одно окно, и рендерить в разные его части.
Многооконный рендер нужен например для серьезного редактора.
Разбиение вида на 4 (верх, лево, право, перспектива) естественно делается в одном окне при помощи glViewport, но для игрового редактора такое редко нужно, а вот многооконность нужна.
Ибо приятно открыть карту поставить там объекты, а потом открыть редактор объекта на втором мониторе и поднастраивая его параметры видеть изменения в 2х окнах и редакторах сразу.
@!!ex
> wglMakeCurrent занимает 0мс
Вот поэтому я и написал, что совет отнюдь не полезный. wglMakeCurrent в зависимости от различных условий может занимать от 0 до десятков миллисекунд.
eXmire
Суть совета(для тех, кто не понял): не использовать wglShareLists
Тоже нагревался не раз на wglShareLists
Поэтому давно юзаю один RC на разные DC - работает изумительно.
Тут вы зачем-то обсуждаете два RC без шаринга ресурсов - но это же отдельный вопрос.
Я вот столкнулся именно с проблемой wglShareLists - просто невозможно было выполнить условие её исползования (чето там про предварительную загрузку или создание)
Извиняюсь - поднимаю старую тему...
И всё таки интересует легальность данного способа. На большей части машин прокатывает, но у меня есть ноутбук (даже два: с XP и W7) - на котором приложение падает с крахом при попытке создать ещё одно окно для рендеринга. В ноуте используется встроенная графика на Celeron T и отсутствует большинство расширений OpenGL. Падает и на Windows XP и на Windows 7. Причину не выяснял - там не установлен необходимый софт, использовал чисто для испытаний. Рендеринг прекращается, как только создаётся второе окно и при завершении софта - куча утечек объектов созданных мной (видимо умирает поток рендера и объекты не освобождаются).
Тема в архиве.