C3D Toolkit  Kernel - 106477, Vision - 190409.106477

Контейнер для визуальных объектов. Подробнее...

#include <vsn_rendercontainer.h>

Открытые члены

 RenderContainer ()
 Конструктор по умолчанию.
 
virtual ~RenderContainer ()
 Деструктор.
 
bool IsEmpty () const
 Является ли контейнер пустым. Подробнее...
 
size_t GetSize () const
 Вернуть размер контейнера объектов сцены. Подробнее...
 
std::list< RenderObject * > GetObjects ()
 Вернуть все RenderObject из контейнера сцены. Подробнее...
 
std::list< RenderObject * > GetVisibleObjects ()
 Вернуть видимые RenderObject из контейнера сцены. Подробнее...
 
RenderObjectGetObjectById (NodeKey objKey)
 Вернуть указатель на RenderObject по идентификатору из контейнера, если этот объект есть. Подробнее...
 
MbCube GetBoundingBox (bool allObjects=false)
 Вернуть габаритный куб всех видимых объектов. Подробнее...
 
size_t GetSelectionCount () const
 Вернуть количество выбранных объектов. Подробнее...
 
std::map< NodeKey, RenderObject * > * GetSelection ()
 Вернуть таблицу выбранных объектов. Подробнее...
 
bool IsExistViewObject3D (NodeKey objKey) const
 Вернуть true, если объект есть в контейнере объектов сцены. Подробнее...
 
bool IsSelected (NodeKey objKey) const
 Вернуть true, если элемент выделен. Подробнее...
 
bool GetShowState () const
 Вернуть состояние видимости. Подробнее...
 
int GetShowObjectsCount () const
 Вернуть количество видимых объектов. Подробнее...
 
uint GetShaderGroup (NodeKey key) const
 Вернуть объект, входящий в указанную шейдер группу. Подробнее...
 
bool IsExistInShaderGroup (NodeKey key) const
 Вернуть true, если объект находится в шейдер группе. Подробнее...
 
std::list< StringGetObjectNamesOfShaderGroup (uint shaderId) const
 Вернуть имена экземпляров из специальных шейдер групп. Подробнее...
 
size_t GetShaderGroupCount () const
 Вернуть количество используемых шейдер групп. Подробнее...
 
bool IsSpacePartitioningUsed () const
 Вернуть true, если используется пространственное разбиение. Подробнее...
 
const std::shared_ptr< SpacePartitioning > GetSpacePartitioning () const
 Вернуть указатель на пространственное разбиение (Octree). Подробнее...
 
bool IsVisible () const
 Вернуть true, если контейнер видимый. Подробнее...
 
void SetVisible (bool bVisible)
 Установить состояние видимости контейнера. Подробнее...
 
bool SetLinkShader (uint shaderId)
 Связать шейдер с новой группой видимых объектов. Подробнее...
 
bool UnlinkShader (uint shaderId)
 Отсоединить шейдер от контейнера. Подробнее...
 
bool UnlinkAllShader ()
 Отсоединить все шейдеры. Подробнее...
 
bool AddObject (const RenderObject &obj, uint shaderId=0)
 Добавить визуальный объект в контейнер. Подробнее...
 
void MoveObjectToShaderGroup (NodeKey objKey, uint shaderId)
 Переместить указанный объект в специальную группу шейдеров. Подробнее...
 
bool RemoveViewObject (NodeKey objId)
 Удалить объект из контейнера. Подробнее...
 
void Clear ()
 Удалить все объекты из контейнера.
 
bool SetSelectObject (NodeKey objKey, bool primitive=false)
 Выбрать объект по идентификатору. Подробнее...
 
void SelectAll (bool allShowState=false)
 Выбрать все объекты. Подробнее...
 
bool UnselectObject (NodeKey objKey)
 Cнять выбор с объекта по идентификатору. Подробнее...
 
void UnselectAll ()
 Снять выбор со всех объектов.
 
void SetPolygonModeForAll (uint face, uint mode)
 Установить режим для отрисовки полигона. Подробнее...
 
void SetVisibleObject (NodeKey objKey, bool bVisible)
 Установить видимость объекта по идентификатору. Подробнее...
 
void SetVisibleAll ()
 Сделать все объекты в контейнере видимыми.
 
void SetInvisibleAll ()
 Сделать все объекты в контейнере невидимыми.
 
void SwitchVisibleState ()
 Изменить состояние видимости объектов в контейнере на противоположное.
 
bool IsLevelOfDetailEnabled () const
 Вернуть признак использования LOD. Подробнее...
 
void SetLevelOfDetailEnabled (bool bEnabled, Viewport *pView)
 Установить использование LOD. Подробнее...
 
void SetLinkSpatialSplit (std::shared_ptr< SpacePartitioning > pSpacePartitioning)
 Связать пространственное разбиение с контейнером объектов. Подробнее...
 
void UnlinkSpacePartitioning ()
 Отсоединить пространственное разбиение от контейнера объектов.
 
void SetSpatialSplitUsage (bool bSpacePartitioning)
 Установить признак использования пространственного разбиения. Подробнее...
 
void UpdateObjectVisibleState (Viewport *pViewport, MbMatrix3D *pMatrix=nullptr)
 Обновить видимость объектов в усеченном конусе. Подробнее...
 
void UpdateObjectVisibleState (const Frustum &frustum)
 Обновить видимость по указанному усеченному конусу. Подробнее...
 
void UpdateSpacePartitioning ()
 Обновить пространственное разбиение. Подробнее...
 
void SetViewport (Viewport *pViewport)
 Установить контейнеру viewport. Подробнее...
 
void SetUseVertexBufferObjects (bool usage)
 Установить флаг использования VBO. Подробнее...
 
void DoRender (uint groupId, RenderMode renderingMode, Viewport *viewport=nullptr)
 Отрисовка групп контейнера. Подробнее...
 
void DoRenderShaderGroup (RenderMode renderingMode, Viewport *viewport=nullptr)
 Отрисовка группы шейдеров. Подробнее...
 

Подробное описание

Контейнер для визуальных объектов.

Содержит таблицу визуальных объектов, а также таблицу связей с шейдерами.

Методы

◆ IsEmpty()

bool RenderContainer::IsEmpty ( ) const

Является ли контейнер пустым.

Возвращает
Вернуть true, если контейнер пустой.

◆ GetSize()

size_t RenderContainer::GetSize ( ) const

Вернуть размер контейнера объектов сцены.

Возвращает
Размер контейнера.

◆ GetObjects()

std::list<RenderObject*> RenderContainer::GetObjects ( )

Вернуть все RenderObject из контейнера сцены.

Возвращает
Список всех RenderObject в контейнере сцены.

◆ GetVisibleObjects()

std::list<RenderObject*> RenderContainer::GetVisibleObjects ( )

Вернуть видимые RenderObject из контейнера сцены.

Возвращает
Список всех видимых RenderObject в контейнере сцены.

◆ GetObjectById()

RenderObject* RenderContainer::GetObjectById ( NodeKey  objKey)

Вернуть указатель на RenderObject по идентификатору из контейнера, если этот объект есть.

Аргументы
[in]objKey- Идентификатор объекта.
Возвращает
Указатель на объект, может быть равен null.

◆ GetBoundingBox()

MbCube RenderContainer::GetBoundingBox ( bool  allObjects = false)

Вернуть габаритный куб всех видимых объектов.

Аргументы
[in]allObjects- Если true, то вернуть габаритный куб только видимых объектов, в противном случае- всех объектов.
Возвращает
Объединённый габаритный куб.

◆ GetSelectionCount()

size_t RenderContainer::GetSelectionCount ( ) const

Вернуть количество выбранных объектов.

Возвращает
Количество выбранных объектов.

◆ GetSelection()

std::map<NodeKey, RenderObject*>* RenderContainer::GetSelection ( )

Вернуть таблицу выбранных объектов.

Возвращает
Таблица объектов.

◆ IsExistViewObject3D()

bool RenderContainer::IsExistViewObject3D ( NodeKey  objKey) const

Вернуть true, если объект есть в контейнере объектов сцены.

Аргументы
[in]objKey- Идентификатор объекта.
Возвращает
True, если объект есть в контейнере.

◆ IsSelected()

bool RenderContainer::IsSelected ( NodeKey  objKey) const

Вернуть true, если элемент выделен.

Аргументы
[in]objKey- Идентификатор объекта.
Возвращает
True, если объект выделен.

◆ GetShowState()

bool RenderContainer::GetShowState ( ) const

Вернуть состояние видимости.

Вернуть состояние видимости, рассчитанное механизмом оптимизации.

Возвращает
True, если объект видим.

◆ GetShowObjectsCount()

int RenderContainer::GetShowObjectsCount ( ) const

Вернуть количество видимых объектов.

Возвращает
Количество видимых объектов.

◆ GetShaderGroup()

uint RenderContainer::GetShaderGroup ( NodeKey  key) const

Вернуть объект, входящий в указанную шейдер группу.

Аргументы
[in]key- Идентификатор объекта.
Возвращает
Идентификатор шейдера.

◆ IsExistInShaderGroup()

bool RenderContainer::IsExistInShaderGroup ( NodeKey  key) const

Вернуть true, если объект находится в шейдер группе.

Аргументы
[in]key- Идентификатор объекта.
Возвращает
True, если объект находится в шейдер группе.

◆ GetObjectNamesOfShaderGroup()

std::list<String> RenderContainer::GetObjectNamesOfShaderGroup ( uint  shaderId) const

Вернуть имена экземпляров из специальных шейдер групп.

Аргументы
[in]shaderId- Матрица перемещения.
Возвращает
Имена объектов, входящих в шейдер группу.

◆ GetShaderGroupCount()

size_t RenderContainer::GetShaderGroupCount ( ) const

Вернуть количество используемых шейдер групп.

Возвращает
Количество шейдер групп.

◆ IsSpacePartitioningUsed()

bool RenderContainer::IsSpacePartitioningUsed ( ) const

Вернуть true, если используется пространственное разбиение.

Возвращает
True, если пространственное разбиение используется.

◆ GetSpacePartitioning()

const std::shared_ptr<SpacePartitioning> RenderContainer::GetSpacePartitioning ( ) const

Вернуть указатель на пространственное разбиение (Octree).

Возвращает
Указатель на пространственное разбиение.

◆ IsVisible()

bool RenderContainer::IsVisible ( ) const

Вернуть true, если контейнер видимый.

Возвращает
True, если контейнер видимый.

◆ SetVisible()

void RenderContainer::SetVisible ( bool  bVisible)

Установить состояние видимости контейнера.

Аргументы
[in]bVisible- Флаг видимости.

◆ SetLinkShader()

bool RenderContainer::SetLinkShader ( uint  shaderId)

Связать шейдер с новой группой видимых объектов.

Аргументы
[in]shaderId- Идентификатор шейдера.
Возвращает
False, если шейдер уже используется, в противном случае создается новая группа объектов, связанная с этим шейдером.

◆ UnlinkShader()

bool RenderContainer::UnlinkShader ( uint  shaderId)

Отсоединить шейдер от контейнера.

Аргументы
[in]shaderId- Идентификатор шейдера.
Возвращает
True, если шейдер отсоединён.

◆ UnlinkAllShader()

bool RenderContainer::UnlinkAllShader ( )

Отсоединить все шейдеры.

Возвращает
True, если все шейдеры отсоединены.

◆ AddObject()

bool RenderContainer::AddObject ( const RenderObject obj,
uint  shaderId = 0 
)

Добавить визуальный объект в контейнер.

Аргументы
[in]obj- Добавляемый объект.
[in]shaderId- Идентификатор шейдера.
Возвращает
True, если операция прошла успешно.

◆ MoveObjectToShaderGroup()

void RenderContainer::MoveObjectToShaderGroup ( NodeKey  objKey,
uint  shaderId 
)

Переместить указанный объект в специальную группу шейдеров.

Аргументы
[in]objKey- Перемещаемый объект.
[in]shaderId- Идентификатор шейдера.

◆ RemoveViewObject()

bool RenderContainer::RemoveViewObject ( NodeKey  objId)

Удалить объект из контейнера.

Удалить объект из контейнера, а также убрать все связи с ним.

Аргументы
[in]objId- Удаляемый объект.
Возвращает
True, если операция прошла успешно.

◆ SetSelectObject()

bool RenderContainer::SetSelectObject ( NodeKey  objKey,
bool  primitive = false 
)

Выбрать объект по идентификатору.

Аргументы
[in]objKey- Идентификатор объекта.
[in]primitive- Флаг выбора примитивов.
Возвращает
True, если операция выполнена успешно.

◆ SelectAll()

void RenderContainer::SelectAll ( bool  allShowState = false)

Выбрать все объекты.

Аргументы
[in]allShowState- Установить статус выбора.

◆ UnselectObject()

bool RenderContainer::UnselectObject ( NodeKey  objKey)

Cнять выбор с объекта по идентификатору.

Аргументы
[in]objKey- Визуальный объект.
Возвращает
True, если операция выполнена успешно.

◆ SetPolygonModeForAll()

void RenderContainer::SetPolygonModeForAll ( uint  face,
uint  mode 
)

Установить режим для отрисовки полигона.

Аргументы
[in]face- Указывает, к лицевой, тыльной или к обеим сторонам применяется опция, заданная вторым параметром. Может применять значения GL_FRONT, GL_BACK и GL_FRONT_AND_BACK.
[in]mode- Указывает, как будет рисоваться полигон. Он принимает значения: GL_POINT(рисует только точки), GL_LINE(рисует линии) и GL_FILL(рисует заполненные полигоны).

◆ SetVisibleObject()

void RenderContainer::SetVisibleObject ( NodeKey  objKey,
bool  bVisible 
)

Установить видимость объекта по идентификатору.

Аргументы
[in]objKey- Визуальный объект.
[in]bVisible- Флаг видимости.

◆ IsLevelOfDetailEnabled()

bool RenderContainer::IsLevelOfDetailEnabled ( ) const

Вернуть признак использования LOD.

Возвращает
True, если используются LOD.

◆ SetLevelOfDetailEnabled()

void RenderContainer::SetLevelOfDetailEnabled ( bool  bEnabled,
Viewport pView 
)

Установить использование LOD.

Аргументы
[in]bEnabled- Флаг использования LOD.
[in]pView- Viewport.

◆ SetLinkSpatialSplit()

void RenderContainer::SetLinkSpatialSplit ( std::shared_ptr< SpacePartitioning >  pSpacePartitioning)

Связать пространственное разбиение с контейнером объектов.

Аргументы
[in]pSpacePartitioning- Пространственное разбиение.

◆ SetSpatialSplitUsage()

void RenderContainer::SetSpatialSplitUsage ( bool  bSpacePartitioning)

Установить признак использования пространственного разбиения.

Аргументы
[in]bSpacePartitioning- Флаг использования пространственного разбиения.

◆ UpdateObjectVisibleState() [1/2]

void RenderContainer::UpdateObjectVisibleState ( Viewport pViewport,
MbMatrix3D pMatrix = nullptr 
)

Обновить видимость объектов в усеченном конусе.

Аргументы
[in]pViewport- Указатель на Viewport.
[in]pMatrix- Новая матрица в усеченном конусе.

◆ UpdateObjectVisibleState() [2/2]

void RenderContainer::UpdateObjectVisibleState ( const Frustum &  frustum)

Обновить видимость по указанному усеченному конусу.

Аргументы
[in]frustum- Источник усечения.

◆ UpdateSpacePartitioning()

void RenderContainer::UpdateSpacePartitioning ( )

Обновить пространственное разбиение.

Обновить пространственное разбиение.

◆ SetViewport()

void RenderContainer::SetViewport ( Viewport pViewport)

Установить контейнеру viewport.

Аргументы
[in]pViewport- Указатель на viewport.

◆ SetUseVertexBufferObjects()

void RenderContainer::SetUseVertexBufferObjects ( bool  usage)

Установить флаг использования VBO.

Аргументы
[in]usage- Флаг использования VBO.

◆ DoRender()

void RenderContainer::DoRender ( uint  groupId,
RenderMode  renderingMode,
Viewport viewport = nullptr 
)

Отрисовка групп контейнера.

Аргументы
[in]groupId- Идентификатор группы.
[in]renderingMode- Способ отрисовки.
[in]viewport- Параметры отображения.

◆ DoRenderShaderGroup()

void RenderContainer::DoRenderShaderGroup ( RenderMode  renderingMode,
Viewport viewport = nullptr 
)

Отрисовка группы шейдеров.

Аргументы
[in]renderingMode- Способ отрисовки.
[in]viewport- Параметры отображения.

Объявления и описания членов класса находятся в файле: