Spec-Zone.ru › Qt 5.9

Класс QSGGeometryNode

Класс QSGGeometryNode используется для всех отображаемых элементов в дереве сцены. Подробнее...

Заголовок: #include <QSGGeometryNode>
qmake: QT += quick
Наследует: QSGBasicGeometryNode
Наследуется от:

QSGImageNode, QSGRectangleNode, QSGSimpleRectNode и QSGSimpleTextureNode

  • Список всех членов, включая унаследованные

Открытые функции

QSGGeometryNode()
~QSGGeometryNode()
QSGMaterial * material() const
QSGMaterial * opaqueMaterial() const
void setMaterial(QSGMaterial *material)
void setOpaqueMaterial(QSGMaterial *material)
  • 3 открытых функции унаследованы от QSGBasicGeometryNode
  • 20 открытых функций унаследованы от QSGNode

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

Класс QSGGeometryNode используется для всех отображаемых элементов в дереве сцены.

Класс QSGGeometryNode состоит из геометрии и материала. Геометрия определяет сетку, вершины и их структуру, которые нужно отобразить. Материал определяет, как отображается форма.

Следующий фрагмент кода демонстрирует, как создать красную линию с помощью QSGGeometryNode:

QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 2);
geometry->setDrawingMode(GL_LINES);
geometry->setLineWidth(3);
geometry->vertexDataAsPoint2D()[0].set(0, 0);
geometry->vertexDataAsPoint2D()[1].set(width(), height());

QSGFlatColorMaterial *material = new QSGFlatColorMaterial;
material->setColor(QColor(255, 0, 0));

QSGGeometryNode *node = new QSGGeometryNode;
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);

Узел геометрии должен иметь и геометрию, и обычный материал, прежде чем его можно добавить в дерево сцены. Если геометрия или материалы изменяются после добавления узла в дерево сцены, пользователь также должен пометить их как изменённые с помощью QSGNode::markDirty().

Узел геометрии поддерживает два типа материалов: opaqueMaterial и обычный материал. opaqueMaterial используется, когда накопленная непрозрачность дерева сцены во время рендеринга равна 1. Основной случай использования — специальный случай непрозрачного рендеринга, чтобы избежать дополнительной операции в фрагментном шейдере, что может значительно повлиять на производительность на встроенных графических процессорах. Непрозрачный материал является необязательным.

Примечание: Все классы с префиксом QSG должны использоваться только в потоке рендеринга дерева сцены. Дополнительную информацию см. в разделе Дерево сцены и рендеринг.

См. также QSGGeometry, QSGMaterial и QSGSimpleMaterial.

Документация по членам функции

QSGGeometryNode::QSGGeometryNode()

Создаёт новый узел геометрии без геометрии и материала.

QSGGeometryNode::~QSGGeometryNode()

Удаляет этот узел геометрии.

Флаги QSGNode::OwnsMaterial, QSGNode::OwnsOpaqueMaterial и QSGNode::OwnsGeometry определяют, должен ли узел геометрии также удалять материалы и геометрию. По умолчанию эти флаги отключены.

QSGMaterial *QSGGeometryNode::material() const

Возвращает материал QSGGeometryNode.

См. также setMaterial().

QSGMaterial *QSGGeometryNode::opaqueMaterial() const

Возвращает непрозрачный материал QSGGeometryNode.

См. также setOpaqueMaterial().

void QSGGeometryNode::setMaterial(QSGMaterial *material)

Устанавливает материал этого узла геометрии на material.

Узлы геометрии должны иметь материал, прежде чем их можно добавить в дерево сцены.

Если материал изменяется без повторного вызова setMaterial(), пользователь должен также пометить материал как изменённый с помощью QSGNode::markDirty().

См. также material().

void QSGGeometryNode::setOpaqueMaterial(QSGMaterial *material)

Устанавливает непрозрачный материал этой геометрии на material.

Непрозрачный материал будет предпочтительнее рендерером по сравнению с материалом по умолчанию, возвращаемым функцией material(), если он не равен null и у элемента геометрии есть унаследованная непрозрачность 1.

Непрозрачность относится к непрозрачности дерева сцены, материалу всё ещё разрешено установить QSGMaterial::Blending в true и отображать прозрачные пиксели.

Если материал изменяется без повторного вызова setOpaqueMaterial(), пользователь должен также пометить непрозрачный материал как изменённый с помощью QSGNode::markDirty().

См. также opaqueMaterial().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qsggeometrynode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API