Qt 5.11 - Qt 3D Render Geometry

Qt 3D रेंडर ज्यामिति




qt

Qt 3D रेंडर ज्यामिति

क्यूटी 3 डी रेंडर ज्यामिति डेटा संग्रहीत करने का एक सामान्य तरीका प्रदान करता है और यह निर्दिष्ट करता है कि इसे रेंडरर द्वारा कैसे पढ़ा जाना चाहिए।

बफर

Qt3DRender::QBuffer वर्ग कच्चे डेटा को संग्रहीत करता है। यह विशुद्ध रूप से स्मृति की एक सरणी के रूप में कार्य करता है। ज्यादातर मामलों में एक Qt3DRender::QBuffer का उपयोग परोक्ष रूप से एक या एक से अधिक Qt3DRender द्वारा संदर्भित किया जाएगा :: QAttributes। हालांकि ऐसे समय होते हैं जब एक QBuffer को सीधे एक QBuffer की वैल्यू प्रॉपर्टी के रूप में इस्तेमाल किया जा सकता है जब यूनिफ़ॉर्म बफर ऑब्जेक्ट्स (UBO) या शेडर स्टोरेज बफर ऑब्जेक्ट्स (SSBO) के साथ काम करते हैं।

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

गुण

Qt3DRender::QAttribute निर्दिष्ट करता है कि संदर्भित बफर में मौजूद डेटा को कैसे निकाला जाना चाहिए और एक शीर्ष 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
}

GeometryRenderer

Qt3DRender::QGeometryRenderer एक QComponent है जिसे जब QEntity द्वारा एकत्रित किया जाता है तो Qt3DRender को आकर्षित करने की अनुमति देता है Qt3DRender::QGeometry इसे संदर्भित करता है। यह ड्रॉ कॉल को नियंत्रित करने के लिए गुण प्रदान करता है जैसे कि खींचे जाने वाले उदाहरणों की संख्या, शुरुआती उदाहरण, Qt3DRender::QGeometryRenderer::PrimitiveType का प्रकार Qt3DRender::QGeometryRenderer::PrimitiveType उपयोग करने के लिए, आदि। Qt3DRender::QGeometryRenderer का ड्रॉ कॉल में अनुवाद किया जाता है। अंतर्निहित ग्राफिक्स एपीआई।

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