
import Qt3D.Core 2.14
import Qt3D.Render 2.14
import Qt3D.Input 2.14
import Qt3D.Extras 2.14

GeometryRenderer {
    id: pointxyziGeometry
    primitiveType: GeometryRenderer.Points
    // geometry: Geometry {
    //     boundingVolumePositionAttribute: xyz
    //     Attribute {
    //         id: xyz
    //         attributeType: Attribute.VertexAttribute
    //         vertexBaseType: Attribute.Float
    //         vertexSize: 3
    //         count: modelData.primitiveCount
    //         byteOffset: 0
    //         byteStride: 4 * 4 // 1 vertex (=3 coordinates) * sizeof(float)
    //         name: "xyz"
    //         buffer: vertexBuffer
    //     }
    //     Attribute {
    //         id: i
    //         attributeType: Attribute.VertexAttribute
    //         vertexBaseType: Attribute.Float
    //         vertexSize: 1
    //         count: modelData.primitiveCount
    //         byteOffset: 3 * 4
    //         byteStride: 4 * 4 // 1 vertex (=3 coordinates) * sizeof(float)
    //         name: "i"
    //         buffer: vertexBuffer
    //     }
    // }
    geometry: Geometry {
            boundingVolumePositionAttribute: xyz
            Attribute {
                id: xyz
                attributeType: Attribute.VertexAttribute
                vertexBaseType: Attribute.Float
                vertexSize: 3
                count: modelData.primitiveCount
                byteOffset: 0
                byteStride: 5 * 4 // 1 vertex (=3 coordinates) * sizeof(float)
                name: "xyz"
                buffer: vertexBuffer
            }
            Attribute {
                id: i
                attributeType: Attribute.VertexAttribute
                vertexBaseType: Attribute.Float
                vertexSize: 1
                count: modelData.primitiveCount
                byteOffset: 3 * 4
                byteStride: 5 * 4 // 1 vertex (=3 coordinates) * sizeof(float)
                name: "i"
                buffer: vertexBuffer
            }
            Attribute {
                id: j
                attributeType: Attribute.VertexAttribute
                vertexBaseType: Attribute.Float
                vertexSize: 1
                count: modelData.primitiveCount
                byteOffset: 4 * 4
                byteStride: 5 * 4 // 1 vertex (=3 coordinates) * sizeof(float)
                name: "j"
                buffer: vertexBuffer
            }
        }
    Buffer {
        id: vertexBuffer
        data: {
            // Dirty code: explicitly call garbage collection function
            gc()
            return modelData.vertex
        }
    }
}