Spec-Zone.ru › Qt 5.9

Геометрия рендеринга Qt 3D

Qt 3D Render предоставляет универсальный способ хранения данных геометрии и определения, как их должен считывать рендерер.

  • Буфер
  • Атрибут
  • Геометрия
  • Геометрия рендерер

Буфер

Класс Qt3DRender::QBuffer хранит исходные данные. Он работает как массив памяти. В большинстве случаев Qt3DRender::QBuffer используется косвенно, ссылается на один или несколько объектов Qt3DRender::QAttributes. Однако бывают случаи, когда QBuffer используется напрямую в качестве свойства value объекта QParameter при работе с Uniform Buffer Objects (UBO) или Shader Storage Buffer Objects (SSBO).

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

Атрибут

Qt3DRender::QAttribute определяет, как данные, содержащиеся в ссылающемся буфере, должны быть извлечены и переданы на вход шейдера вершин. Он ссылается на Qt3DRender::QBuffer и может указывать структуру атрибутов, определяя размер вершины, тип данных, шаг между двумя вершинами и начальный смещение. Тип атрибута также определяет, будет ли он использоваться как буфер вершин или как буфер индексов. Это позволяет вам полностью гибко структурировать данные в буферах. Возможно использование отдельных буферов для каждого атрибута вершины, интерлизованного буфера, содержащего данные для всех атрибутов, или сочетания отдельных и интерлизованных буферов.

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

Геометрия

Объект Qt3DRender::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
}

Геометрия рендерер

Qt3DRender::QGeometryRenderer — это QComponent, который, когда агрегируется QEntity, позволяет отображать Qt3DRender::QGeometry, на которое он ссылается. Он предоставляет свойства для управления вызовом отрисовки, такие как количество экземпляров для отрисовки, начальный экземпляр, тип Qt3DRender::QGeometryRenderer::PrimitiveType, который следует использовать и т. д. Qt3DRender::QGeometryRenderer преобразуется в вызов отрисовки для базового графического API.

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

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

Spec-Zone.ru

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