Класс QSGGeometryNode
Класс QSGGeometryNode используется для всего отрисовываемого содержимого в графическом дереве сцены. Подробнее...
| Заголовок: | #include <QSGGeometryNode> |
| qmake: | QT += quick |
| Наследуется от: | QSGBasicGeometryNode |
| Наследует: | QSGImageNode, QSGRectangleNode, QSGSimpleRectNode и QSGSimpleTextureNode |
Открытые функции
| QSGGeometryNode() | |
| virtual | ~QSGGeometryNode() override |
| 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()
Создает новый узел геометрии без геометрии и материала.
[override virtual] 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.12/qsggeometrynode.html