QSGNode Class
QSGNode 클래스는 씬 그래프의 모든 노드에 대한 기본 클래스입니다. 더 보기...
헤더: | #include <QSGNode> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
qmake: | QT += quick |
에 의해 상속되었습니다: | QSGBasicGeometryNode, QSGOpacityNode, QSGRenderNode, 그리고 QSGTransformNode |
- 상속된 멤버를 포함한 모든 멤버 목록
- QSGNode는 Qt Quick 씬 그래프 노드 클래스의 일부입니다.
공용 유형
flags | DirtyState |
enum | DirtyStateBit { DirtyMatrix, DirtyNodeAdded, DirtyNodeRemoved, DirtyGeometry, DirtyMaterial, …, DirtySubtreeBlocked } |
enum | Flag { OwnedByParent, UsePreprocess, OwnsGeometry, OwnsMaterial, OwnsOpaqueMaterial, InternalReserved } |
flags | Flags |
enum | NodeType { BasicNodeType, GeometryNodeType, TransformNodeType, ClipNodeType, OpacityNodeType, RenderNodeType } |
공용 함수
QSGNode() | |
virtual | ~QSGNode() |
void | appendChildNode(QSGNode *node) |
QSGNode * | childAtIndex(int i) const |
int | childCount() const |
QSGNode * | firstChild() const |
QSGNode::Flags | flags() const |
void | insertChildNodeAfter(QSGNode *node, QSGNode *after) |
void | insertChildNodeBefore(QSGNode *node, QSGNode *before) |
virtual bool | isSubtreeBlocked() const |
QSGNode * | lastChild() const |
void | markDirty(QSGNode::DirtyState bits) |
QSGNode * | nextSibling() const |
QSGNode * | parent() const |
void | prependChildNode(QSGNode *node) |
virtual void | preprocess() |
QSGNode * | previousSibling() const |
void | removeAllChildNodes() |
void | removeChildNode(QSGNode *node) |
void | setFlag(QSGNode::Flag f, bool enabled = true) |
void | setFlags(QSGNode::Flags f, bool enabled = true) |
QSGNode::NodeType | type() const |
상세 설명
QSGNode 클래스는 자식 컨테이너로 사용할 수 있습니다. 자식은 appendChildNode(), prependChildNode(), insertChildNodeBefore() 및 insertChildNodeAfter()로 추가됩니다. 지오메트리 노드는 씬 그래프에서 순서에 따라 렌더링되므로 노드의 순서는 중요합니다.
씬 그래프 노드에는 씬의 어떤 부분이 변경되었는지를 설명하는 메커니즘이 포함되어 있습니다. 여기에는 결합된 행렬, 누적된 불투명도, 노드 계층 구조의 변경 사항 등이 포함됩니다. 이 정보는 씬 그래프 렌더러 내부에서 최적화에 사용할 수 있습니다. 렌더러가 노드를 올바르게 렌더링하려면 노드가 변경될 때 사용자가 올바른 플래그를 사용하여 QSGNode::markDirty()를 호출하는 것이 중요합니다. 노드 클래스의 대부분의 함수는 암시적으로 markDirty()를 호출합니다. 예를 들어 QSGNode::appendChildNode()는 QSGNode::DirtyNodeAdded 을 전달하여 markDirty()을 호출합니다.
노드가 매 프레임마다 변경되는 경우 preprocess() 함수를 사용하여 렌더링되는 모든 프레임에 대해 노드에 변경 사항을 적용할 수 있습니다. preprocess () 사용은 노드에 QSGNode::UsePreprocess 플래그를 설정하여 명시적으로 활성화해야 합니다.
가상 isSubtreeBlocked() 함수는 하위 트리를 모두 비활성화하는 데 사용할 수 있습니다. 차단된 하위 트리의 노드는 사전 처리()되지 않고 렌더링되지 않습니다.
참고: 접두사가 QSG인 모든 클래스는 씬 그래프의 렌더링 스레드에서만 사용해야 합니다. 자세한 내용은 씬 그래프 및 렌더링을 참조하십시오.
멤버 유형 문서
열거형 QSGNode::DirtyStateBit
플래그 QSGNode::DirtyState
QSGNode::markDirty()에서 씬 그래프가 어떻게 변경되었는지를 나타내는 데 사용됩니다.
Constant | 값 | 설명 |
---|---|---|
QSGNode::DirtyMatrix | 0x0100 | QSGTransformNode 의 매트릭스가 변경되었습니다. |
QSGNode::DirtyNodeAdded | 0x0400 | 노드가 추가되었습니다. |
QSGNode::DirtyNodeRemoved | 0x0800 | 노드가 제거되었습니다. |
QSGNode::DirtyGeometry | 0x1000 | QSGGeometryNode 의 지오메트리가 변경되었습니다. |
QSGNode::DirtyMaterial | 0x2000 | QSGGeometryNode 의 재질이 변경되었습니다. |
QSGNode::DirtyOpacity | 0x4000 | QSGOpacityNode 의 불투명도가 변경되었습니다. |
QSGNode::DirtySubtreeBlocked | 0x0080 | 하위 트리가 차단되었습니다. |
DirtyState 유형은 QFlags<DirtyStateBit>에 대한 typedef입니다. DirtyStateBit 값의 OR 조합을 저장합니다.
QSGNode::markDirty()도 참조하세요 .
열거형 QSGNode::Flag
플래그 QSGNode::Flags
QSGNode::Flag 열거형에 대한 플래그는 QSGNode
상수 | 값 | 설명 |
---|---|---|
QSGNode::OwnedByParent | 0x0001 | 노드는 부모가 소유하며 부모가 삭제되면 삭제됩니다. |
QSGNode::UsePreprocess | 0x0002 | 노드의 가상 preprocess() 함수는 렌더링이 시작되기 전에 호출됩니다. |
QSGNode::OwnsGeometry | 0x00010000 | QSGGeometryNode 및 QSGClipNode 에만 유효합니다. 노드는 QSGGeometry 인스턴스에 대한 소유권을 가지며 노드가 소멸되거나 지오메트리가 할당되면 삭제됩니다. |
QSGNode::OwnsMaterial | 0x00020000 | QSGGeometryNode 에만 유효합니다. 노드가 머티리얼에 대한 소유권을 가지며 노드가 소멸되거나 머티리얼이 할당되면 삭제합니다. |
QSGNode::OwnsOpaqueMaterial | 0x00040000 | QSGGeometryNode 에만 유효합니다. 노드가 불투명 머티리얼에 대한 소유권을 가지며 노드가 소멸되거나 머티리얼이 할당되면 삭제됩니다. |
QSGNode::InternalReserved | 0x01000000 | 내부용으로 예약되어 있습니다. |
Flags 유형은 QFlags<Flag>에 대한 typedef입니다. 플래그 값의 OR 조합을 저장합니다.
enum QSGNode::NodeType
노드 유형을 파악하는 데 사용할 수 있습니다.
상수 | 값 | 설명 |
---|---|---|
QSGNode::BasicNodeType | 0 | 의 유형 QSGNode |
QSGNode::GeometryNodeType | 1 | 의 유형 QSGGeometryNode |
QSGNode::TransformNodeType | 2 | 의 유형 QSGTransformNode |
QSGNode::ClipNodeType | 3 | 의 유형 QSGClipNode |
QSGNode::OpacityNodeType | 4 | 유형 QSGOpacityNode |
QSGNode::RenderNodeType | 6 | 의 유형 QSGRenderNode |
type()도 참조하세요 .
멤버 함수 문서
QSGNode::QSGNode()
새 노드를 생성합니다.
[virtual noexcept]
QSGNode::~QSGNode()
노드를 삭제합니다.
QSGNode::OwnedByParent 플래그가 설정된 이 노드의 모든 하위 노드도 삭제됩니다.
void QSGNode::appendChildNode(QSGNode *node)
이 노드의 자식 목록에 node 을 추가합니다.
지오메트리 노드가 씬 그래프에 추가되는 순서대로 렌더링되므로 노드 순서는 중요합니다.
QSGNode *QSGNode::childAtIndex(int i) const
인덱스에서 자식을 반환합니다 i.
자식은 내부적으로 링크된 목록으로 저장되므로 인덱스를 통해 자식을 반복하는 것은 최적이 아닙니다.
int QSGNode::childCount() const
자식 노드 수를 반환합니다.
QSGNode *QSGNode::firstChild() const
이 노드의 첫 번째 자식을 반환합니다.
자식은 링크된 목록에 저장됩니다.
QSGNode::Flags QSGNode::flags() const
이 노드의 플래그 집합을 반환합니다.
setFlags()도 참조하세요 .
void QSGNode::insertChildNodeAfter(QSGNode *node, QSGNode *after)
after 으로 지정된 노드 뒤에 이 노드의 자식 목록에 node 을 삽입합니다.
지오메트리 노드가 씬 그래프에 추가되는 순서대로 렌더링되므로 노드의 순서는 중요합니다.
void QSGNode::insertChildNodeBefore(QSGNode *node, QSGNode *before)
before 으로 지정된 노드 앞에 이 노드의 자식 목록에 node 을 삽입합니다.
지오메트리 노드가 씬 그래프에 추가되는 순서대로 렌더링되므로 노드 순서는 중요합니다.
[virtual]
bool QSGNode::isSubtreeBlocked() const
이 노드와 그 하위 트리를 사용할 수 있는지 여부를 반환합니다.
차단된 하위 트리는 더티 상태가 업데이트되지 않으며 렌더링되지 않습니다.
예를 들어 누적 불투명도가 0인 경우 QSGOpacityNode 은 차단된 하위 트리를 반환합니다.
QSGNode *QSGNode::lastChild() const
이 노드의 마지막 자식을 반환합니다.
자식은 링크된 목록으로 저장됩니다.
void QSGNode::markDirty(QSGNode::DirtyState bits)
연결된 모든 렌더러에 노드에 더티가 있음을 알립니다 bits.
QSGNode *QSGNode::nextSibling() const
부모의 자식 목록에서 이 뒤에 오는 노드를 반환합니다.
자식은 링크된 목록으로 저장됩니다.
QSGNode *QSGNode::parent() const
이 노드의 부모 노드를 반환합니다.
void QSGNode::prependChildNode(QSGNode *node)
이 노드의 자식 목록에 node 을 추가합니다.
지오메트리 노드가 씬 그래프에 추가되는 순서대로 렌더링되므로 노드의 순서는 중요합니다.
[virtual]
void QSGNode::preprocess()
렌더링되기 전에 노드에서 처리를 수행하려면 이 함수를 재정의하세요.
전처리는 QSGNode::UsePreprocess 플래그를 설정하여 명시적으로 활성화해야 합니다. 이 플래그는 노드가 씬 그래프에 추가되기 전에 설정해야 하며 노드가 렌더링되는 모든 프레임에 대해 preprocess() 함수가 호출되도록 합니다.
경고: 노드가 사전 처리되는 동안 노드를 삭제하지 않도록 주의하세요. 자체 사전 처리 호출 중에 단일 노드를 삭제하면 약간의 성능 저하가 발생할 수 있습니다. 전처리를 사용하는 노드가 있는 하위 트리를 삭제하면 세그멘테이션 오류가 발생할 수 있습니다. 이는 성능상의 이유로 수행됩니다.
QSGNode *QSGNode::previousSibling() const
부모의 자식 목록에서 이보다 앞의 노드를 반환합니다.
자식은 링크된 목록으로 저장됩니다.
void QSGNode::removeAllChildNodes()
이 노드의 자식 목록에서 모든 자식 노드를 제거합니다.
void QSGNode::removeChildNode(QSGNode *node)
이 노드의 자식 목록에서 node 을 제거합니다.
void QSGNode::setFlag(QSGNode::Flag f, bool enabled = true)
enabled 이 참이면 이 노드에 f 플래그를 설정하고, 그렇지 않으면 플래그를 지웁니다.
flags()도 참조하세요 .
void QSGNode::setFlags(QSGNode::Flags f, bool enabled = true)
enabled 이 참이면 이 노드에 f 플래그를 설정하고, 그렇지 않으면 플래그를 지웁니다.
flags()도 참조하세요 .
QSGNode::NodeType QSGNode::type() const
이 노드의 유형을 반환합니다. 노드 유형은 QSGNode::NodeType 에 정의된 사전 정의된 유형 중 하나이어야 하며 해당 클래스로 안전하게 형변환하는 데 사용할 수 있습니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.