Russian Qt Forum
Март 29, 2024, 01:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Код "на будущее"  (Прочитано 8781 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Сентябрь 16, 2020, 12:24 »

Ну потому что эта имплементация рисования конкретного типа объектов может иметь специфичные приватные методы и данные.
И чтобы вот это всё не расползалось по "рисовальщику" и не превращало его в God-Object, можно "взять и поделить".
Вместо того, чтобы каждый раз допиливать "рисовальщик" и молиться, что всё будет отрисовываться правильно после этого, можно менять только точечно - тогда риск что-либо сломать намного меньше.
Ну "рисуемых" (хорошие) десятки, и. помимо draw (собсно рисования) они имеют еще пару виртуалов для "picking" (выборка) которые также завязаны на Engine (ну как бы тоже рисование но невидимое). Только посадить все это на pimpl - уже не день (и не 2) работы.

Положительная сторона такого подхода - независимость от "старого говнокода", это как бы "все переписать" для нового API. Не раз замечал что многие тянутся именно к этому решению, хотя по моим наблюдениям оно никогда не было хорошим, а часто и нереально.

Ну ладно, во всяком случае есть какое-то предложение, в такой ситуации это уже хорошо. Какие еще есть подходы?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #16 : Сентябрь 17, 2020, 15:44 »

Вижу несколько вариантов (хотя я и не настоящий сварщик):

1 - Qt6  - там обещают поддержку унифицированного 3D для всех поддерживаемых платформ.
2 - Angle - https://github.com/google/angle
3 - порыться в готовых игровых движках и подобрать оптимальный.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Сентябрь 18, 2020, 09:47 »

Вижу несколько вариантов (хотя я и не настоящий сварщик):

1 - Qt6  - там обещают поддержку унифицированного 3D для всех поддерживаемых платформ.
2 - Angle - https://github.com/google/angle
Интересен подход: какое-то там обсуждение классов, архитектуры - неее, нафиг надо. Сразу хобот в "новые технологии"!  Улыбающийся Ну смысл в этом конечно есть, все равно придется менять QOpenGLWindow, QOpenGLContext на что-то иное (пока неясно что). Про Qtб ничего не слышал, Angle, насколько мне известно, пока тоже только обещает. 

3 - порыться в готовых игровых движках и подобрать оптимальный.
А Вы сами рылись? Я время от времени пытаюсь (по др поводам/вопросам), но крайне редко (только пару раз) удачно. Примерно тем же кончаются походы в исходники Blender и.т.п. А у Вас? Поделитесь опытом
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #18 : Сентябрь 18, 2020, 10:34 »

А Вы сами рылись?
Как я и написал выше, я не настоящий сварщик.
Поэтому никаких "конкретных" советов дать не могу, кроме очевидного - надо пользоваться наработками других.
Потому как проект уровня транслятора OpenGL в вулканы/металы/директиксы в одно лицо никак не получиться.

И да, Qt6 пока альфа, и поддержку платформ на уровне Qt5 они обещают к Qt6.1 (через год ?) , в angle пока нет металла (но они начали реализовывать). Но тема же называется "Код "на будущее"" Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Сентябрь 18, 2020, 11:02 »

- надо пользоваться наработками других.
Потому как проект уровня транслятора OpenGL в вулканы/металы/директиксы в одно лицо никак не получиться.
Не знаю конечно, но подозреваю что отделаться "транслятором" (т.е. обойтись косметикой сохраняя имеющийся код который вумный транслятор во что-то перегонит автоматом) здесь вряд ли удастся.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.