Qt 3D 렌더 지오메트리

Qt 3D 렌더는 지오메트리 데이터를 저장하고 렌더러가 데이터를 읽는 방법을 지정하는 일반적인 방법을 제공합니다.

Buffer

Qt3DCore::QBuffer 클래스는 원시 데이터를 저장합니다. 이것은 순전히 메모리 배열로만 작동합니다. 대부분의 경우 Qt3DCore::QBuffer 은 하나 이상의 Qt3DRender::QAttributes 에 의해 참조되어 간접적으로 사용됩니다. 그러나 유니폼 버퍼 오브젝트(UBO) 또는 셰이더 스토리지 버퍼 오브젝트(SSBO)를 다룰 때 QBuffer 가 QParameter의 값 속성으로 직접 사용되는 경우도 있습니다.

Buffer {
    id: vertexBuffer
    type: Buffer.VertexBuffer
    data: buildVertexBufferData()
}

속성

Qt3DCore::QAttribute 는 참조된 버퍼에 포함된 데이터를 추출하여 버텍스 셰이더의 입력으로 전달하는 방법을 지정합니다. Qt3DCore::QBuffer 을 참조하며 버텍스 크기, 데이터 유형, 두 버텍스 사이의 간격 및 시작 오프셋을 정의하여 어트리뷰트의 레이아웃을 지정할 수 있습니다. 또한 어트리뷰트의 유형에 따라 버텍스 버퍼로 사용할지 인덱스 버퍼로 사용할지도 정의할 수 있습니다. 이를 통해 버퍼에서 데이터를 구조화하는 방법을 완전히 유연하게 설정할 수 있습니다. 각 버텍스 속성에 대해 별도의 버퍼를 사용하거나, 모든 속성에 대한 데이터를 포함하는 인터리브 버퍼를 사용하거나, 별도의 버퍼와 인터리브 버퍼를 조합하여 사용할 수 있습니다.

Attribute {
    attributeType: Attribute.VertexAttribute
    vertexBaseType: Attribute.Float
    vertexSize: 3
    byteOffset: 0
    byteStride: 9 * 4
    count: 4
    name: defaultPositionAttributeName()
    buffer: vertexBuffer
}

지오메트리

Qt3DCore::QGeometry 은 다양한 속성을 집계하여 하나의 지오메트리를 형성합니다. 일반적으로 적절한 지오메트리는 버텍스 위치에 대한 속성, 버텍스 노멀에 대한 속성 및 텍스처 좌표에 대한 속성을 제공합니다. 지오메트리가 노멀 매핑된 머티리얼에서도 작동하도록 하려면 일관된 버텍스 탄젠트 벡터 세트도 제공해야 합니다.

Geometry {
    Attribute {
        attributeType: Attribute.VertexAttribute
        vertexBaseType: Attribute.Float
        vertexSize: 3
        byteOffset: 0
        byteStride: 9 * 4
        count: 4
        name: defaultPositionAttributeName()
        buffer: vertexBuffer
    }

    Attribute {
        attributeType: Attribute.VertexAttribute
        vertexBaseType: Attribute.Float
        vertexSize: 3
        byteOffset: 3 * 4
        byteStride: 9 * 4
        count: 4
        name: defaultNormalAttributeName()
        buffer: vertexBuffer
}

지오메트리 뷰

Qt3DCore::QGeometryViewQt3DCore::QGeometry. 그릴 인스턴스 수, 시작 인스턴스, 사용할 Qt3DCore::QGeometryView::PrimitiveType 유형 등과 같은 그리기 호출을 제어하는 속성을 제공합니다.

메시의 세부 사항을 완전히 정의하여 바운딩 볼륨 계산 및 피킹과 같은 작업을 렌더링할 필요 없이 메시에서 수행할 수 있습니다.

GeometryView {
    instanceCount: 1
    indexOffset: 0
    firstInstance: 0
    primitiveType: GeometryRenderer.Triangles
    geometry: Geometry { ... }
}

지오메트리 렌더러

Qt3DRender::QGeometryRenderer 는 큐엔티에 의해 집계될 때 참조하는 Qt3DCore::QGeometryView 을 그릴 수 있는 큐컴포넌트입니다. Qt3DRender::QGeometryRenderer 은 기본 그래픽 API에 대한 그리기 호출로 변환됩니다.

GeometryRenderer {
    view: GeometryView { ... }
}

참고: Qt 6 이전에는 Qt3DRender::QGeometryRenderer 에 뷰 인스턴스에서 제공하려는 세부 정보가 포함되어 있었습니다. 이 속성은 Qt 6에서도 여전히 존재하지만 더 이상 사용되지 않고 Qt 7에서 제거될 예정입니다.

© 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.