Есть главное окно, а в нём 3 дочерних. Как рендерить в одно из этих дочерних окон? Как изменить главный цикл с учётом того, что требуется сохранить обработку сообщений и сверх того в одно из дочерних окон должна рендериться сцена? Как для этой задачи инициировать OpenGL?
Тарас-Прогер
> Как рендерить в одно из этих дочерних окон?
Если дочерние окна реальные оконные объекты со своими персональными хэндлами - у них будут и персональные GL-контексты. Перед рендером нужно просто выбирать GL-контекст соответствующего окна - все дальнейшие gl-функции будут применяться к этому окну/контексту.
Если же дочерние окна просто логические прямоугольники на главном окне - тогда через вьюпорты, перед рендером устанавливать вьюпорт на соответсвующий прямоугольник.
Dmitry_Milk
> Перед рендером нужно просто выбирать GL-контекст соответствующего окна - все
> дальнейшие gl-функции будут применяться к этому окну/контексту.
А попроще нельзя? Для совсем новичка.
Dmitry_Milk
> Если же дочерние окна просто логические прямоугольники на главном окне - тогда
> через вьюпорты, перед рендером устанавливать вьюпорт на соответсвующий
> прямоугольник.
Причём здесь прямоугольники на главном?
Тарас-Прогер
> А попроще нельзя?
Нельзя. Если ты работаешь с OpenGL - у тебя есть понятие GL-контекста.
Тарас-Прогер
Точно также инициализируешь как для одного окна, переключаешся через wglMakeCurrent
Aslan
> wglMakeCurrent
Он же не сказал, что работает именно под виндами. Хотя, если судить по соседним его темам - тогда да.
Я бы для каждого окна создал свой контекст и расшарил их, тогда бы даже их переключать не пришлось + можно рендерить каждое в своём потоке.
Но похоже, что AMD-шные говнокарты с расшариванием контекста не дружат, хотя Intel и Nvidia с ним работают без проблем.
Daniil Petrov
> + можно рендерить каждое в своём потоке.
Но не нужно.
Dmitry_Milk
> Он же не сказал, что работает именно под виндами.
не под винды (мак или хвинды) "дочернесть" эмулируется, тем что вывод гл ограничивается координатами "дочернего окна".
но под виндой задача тривиальна. Тк контекст создаётся от dc и хандле, конкретного (дочернего или нет, окна)
MrShoor
> Но не нужно.
Ну тут уж каждый сам для себя выбирает по нуждам
Тарас-Прогер
> Причём здесь прямоугольники на главном?
При том, что если ты собрался создавать вьюпорт не в виндовом окне, а своём "выдуманном", то тебе придётся ограничивать сциссором вьюпорт.
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glScissor.xml
Dmitry_Milk
> Нельзя.
И кто же тебе толком объяснять запретил?
monobogdan
> При том, что если ты собрался создавать вьюпорт не в виндовом окне
И где ж я на винде линаксоидное окно возьму?
Aslan
> Точно также инициализируешь как для одного окна, переключаешся через
> wglMakeCurrent
А точно также – это как? Мне один глут попадается. А как ему сказать, что своё окно создавать не надо, а надо отправить вывод в существующее дочернее не сказано.
skalogryz
> но под виндой задача тривиальна. Тк контекст создаётся от dc и хандле,
> конкретного (дочернего или нет, окна)
Как его создавать и чем он отличается от обычного контекста GDI?
Тема в архиве.