Urho3D
GameDev.ru / Сообщества / Urho3D / Форум / [решено]Renderer и Graphics - а для чего такое разделение?

[решено]Renderer и Graphics - а для чего такое разделение?

Поделиться
nuke_birdНовичокwww27 окт. 201712:25#0
Собственно, в названии темы вся суть вопроса: почему Urho3D вывел отдельный класс Graphics, хотя всё можно было бы хранить внутри Renderer?

Renderer.h
Renderer.cpp

Graphics.h
Graphics.cpp

kostik1337Постоялецwww27 окт. 201712:40#1
Насколько я понимаю, Renderer платформонезависим, там реализована общая логика рендеринга, а Graphics - абстракция над конкретным бэкендом рендеринга, он переопределяется для каждого бэкенда, см. например https://github.com/urho3d/Urho3D/blob/master/Source/Urho3D/Graphi… LGraphics.cpp
nuke_birdНовичокwww27 окт. 201713:07#2
kostik1337
> Насколько я понимаю, Renderer платформонезависим, там реализована общая логика
> рендеринга, а Graphics - абстракция над конкретным бэкендом рендеринга, он
> переопределяется для каждого бэкенда, см. например
> https://github.com/urho3d/Urho3D/blob/master/Source/Urho3D/Graphi…
> LGraphics.cpp
Хм, действительно! Спасибо!

А всякие Octree, получается, используются исключительно для того чтобы рендер не рисовал лишнего + трассировка лучей?
Просто я залез в PhysicsWorld и не нашел упоминания Octree. Похоже, BulletPhysics работает со своей ускоряющей структурой?

kostik1337Постоялецwww27 окт. 201713:32#3
nuke_bird
Именно так, PhysicsWorld - это просто такая обертка на Bullet'ом, вся физика реализована там, и Bullet, естественно, не использует никаких внутренних урховских структур
nuke_birdНовичокwww27 окт. 201714:01#4
kostik1337
radio
Ага, понял. А где происходит синхронизация "рыбьего" octree с физическим миром?
nuke_birdНовичокwww27 окт. 201714:38#5
Или же octree пересобирается каждый кадр?
nuke_birdНовичокwww27 окт. 201714:56#6
radio
> Физические события (происходящие в мире физики с этими компонентами)
> отправляют события от имени Узла Сцены в котором они находятся.
Т.е. если к узлу подключены компоненты Drawable и RigidBody, то при каждом получении сообщений от физ. движка текущий drawable сообщает рыбьему octree о том, что узел переместился и его нужно вставить заново? (написал как китаец, хых. Надеюсь, вы меня поняли)

Рыбий Octree, выходит, хранит в себе только Drawable?

А как же движок тогда работает со звуком? Как определить что viewer вошел в диапазон источника звука? Это надо ручками кодить?

nuke_birdНовичокwww27 окт. 201716:08#7
radio
> SoundSource3D
Глянул исходники - многие вопросы отпали ^^

radio
> (п.б.у.)
что это означает? =)

Спасибо вам большое ещё раз)

nuke_birdНовичокwww27 окт. 201716:56#8
radio
> Не-не, не Drawable (компонент), а физические компоненты от лица Узла в котором
> находятся будут отправлять Событие для всех кто подписан на это Событие.
> Тоесть, События от физических компонентов будут исходить от Узла.
> Не думаю, что Octree нуждается в такой подписке на события физики.
>
> Вот другие компоненты находящиеся в Узле (к примеру физические),
> будучи Компонентами (имея ссылку на Узел) могут производить с ним манипуляции
> (например, перемещение)
Просто после того как узел изменил свою позицию или повернулся, его (точнее, компонента Drawable) положение в Octree должно быть обновлено. Как я понял, для этого нужно вызвать следующую ф-цию:
/// Mark drawable object as requiring an update and a reinsertion.
    void QueueUpdate(Drawable* drawable);

radio
> События от физических компонентов будут исходить от Узла.
Это хорошее замечание, буду иметь ввиду

nuke_birdНовичокwww27 окт. 201718:09#9
radio
> Как-то Вы глубоко копаете.
radio
> всё на автомате работает
Я анализирую архитектуру рыбы, чтобы часть решений взять на заметку

Сам я пишу игровой движок, просто для души

/ Форум / Urho3D - игровой движок / ЗАДАВАЙТЕ ВОПРОСЫ

2001—2017 © GameDev.ru — Разработка игр