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 의 Scene Graph Node 클래스군에 속합니다.
공개 유형
| 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()을 사용하면 하위 트리 전체를 비활성화할 수 있습니다. 차단된 하위 트리에 속한 노드는 preprocess()되지 않으며 렌더링되지 않습니다.
참고: QSG 접두사가 붙은모든 클래스는 오로지 씬 그래프의 렌더링 스레드에서만 사용해야 합니다. 자세한 내용은 씬 그래프 및 렌더링을 참조하십시오.
멤버 유형 문서
enum QSGNode::DirtyStateBit
flags QSGNode::DirtyState
QSGNode::markDirty()에서 장면 그래프가 어떻게 변경되었는지 나타내는 데 사용됩니다.
| 상수 | 값 | 설명 |
|---|---|---|
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()도 참조하십시오 .
enum QSGNode::Flag
flags 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입니다. 이 유형은 Flag 값들의 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
이 노드와 그 하위 트리가 사용 가능한지 여부를 반환합니다.
차단된 서브트리는 변경된 상태가 업데이트되지 않으며 렌더링되지 않습니다.
예를 들어, ` QSGOpacityNode `는 누적된 불투명도가 0일 때 차단된 서브트리를 반환합니다.
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() 함수가 호출되도록 합니다.
경고: 노드가 사전 처리되는 중에 노드를 삭제할 때는주의하십시오 . 성능 저하가 약간 발생하긴 하지만, 노드가 자체 preprocess 호출 중에 있을 때 단일 노드를 삭제하는 것은 가능합니다. 그러나 사전 처리를 사용하는 노드가 포함된 하위 트리를 삭제하면 세그멘테이션 오류가 발생할 수 있습니다. 이는 성능상의 이유로 구현된 기능입니다.
QSGNode *QSGNode::previousSibling() const
부모 노드의 자식 노드 목록에서 이 노드 바로 앞의 노드를 반환합니다.
자식 노드들은 연결 리스트 형태로 저장됩니다.
void QSGNode::removeAllChildNodes()
이 노드의 자식 노드 목록에서 모든 자식 노드를 제거합니다.
void QSGNode::removeChildNode(QSGNode *node)
이 노드의 자식 목록에서 ‘ node ’를 제거합니다.
void QSGNode::setFlag(QSGNode::Flag f, bool enabled = true)
enabled 가 true인 경우 이 노드에 f 플래그를 설정하고, 그렇지 않은 경우 해당 플래그를 해제합니다.
flags()도 참조하십시오 .
void QSGNode::setFlags(QSGNode::Flags f, bool enabled = true)
enabled 가 true인 경우 이 노드에 f 플래그를 설정하고, 그렇지 않은 경우 해당 플래그를 지웁니다.
flags()도 참조하십시오 .
QSGNode::NodeType QSGNode::type() const
이 노드의 유형을 반환합니다. 노드 유형은 ` QSGNode::NodeType `에 정의된 사전 정의된 유형 중 하나여야 하며, 해당 클래스로 안전하게 형 변환하는 데 사용할 수 있습니다.
© 2026 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.