Qt / Qml 3D Как визуализировать сетку из массива вершин - PullRequest
0 голосов
/ 06 сентября 2018

Я играю с генерацией сеток во время выполнения, хотя я застрял на рисовании простого куба. Почему на экране ничего не появляется?

Как превратить массив с плавающей точкой (вершины треугольника) в трехмерную сетку?

Чтобы соответствовать требуемой длине описания, у меня есть второй, связанный вопрос. Когда куб будет уже отрендерен, как на него наложить текстуру?

   class Master : public QObject
    {
        Q_OBJECT
    public:
        explicit Master(QObject *parent = nullptr) : QObject(parent)
        {
            float vertexArray[] = {
                -1.0f,-1.0f,-1.0f,
                -1.0f,-1.0f, 1.0f,
                -1.0f, 1.0f, 1.0f,
                1.0f, 1.0f,-1.0f,
                -1.0f,-1.0f,-1.0f,
                -1.0f, 1.0f,-1.0f,
                1.0f,-1.0f, 1.0f,
                -1.0f,-1.0f,-1.0f,
                1.0f,-1.0f,-1.0f,
                1.0f, 1.0f,-1.0f,
                1.0f,-1.0f,-1.0f,
                -1.0f,-1.0f,-1.0f,
                -1.0f,-1.0f,-1.0f,
               -1.0f, 1.0f, 1.0f,
                -1.0f, 1.0f,-1.0f,
                1.0f,-1.0f, 1.0f,
                -1.0f,-1.0f, 1.0f,
                -1.0f,-1.0f,-1.0f,
                -1.0f, 1.0f, 1.0f,
                -1.0f,-1.0f, 1.0f,
                1.0f,-1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f,-1.0f,-1.0f,
                1.0f, 1.0f,-1.0f,
                1.0f,-1.0f,-1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f,-1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f, 1.0f,-1.0f,
                -1.0f, 1.0f,-1.0f,
                1.0f, 1.0f, 1.0f,
                -1.0f, 1.0f,-1.0f,
                -1.0f, 1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                -1.0f, 1.0f, 1.0f,
                1.0f,-1.0f, 1.0f
            };

            m_buffer.append(reinterpret_cast<const char*>(vertexArray), sizeof(vertexArray));
        }

        Q_PROPERTY(QByteArray buffer READ buffer CONSTANT)
        QByteArray buffer() const { return m_buffer; }

    private:
         QByteArray m_buffer;

    };

И GeometryRenderer в Scene3D:

  Entity{
            Material{
                id: material
                parameters: [
                    Parameter { name: "color"; value: "green" }
                ]
            }

            GeometryRenderer{
                id: geometryRenderer

                instanceCount: 0
                primitiveType: GeometryRenderer.Triangles

                geometry: Geometry{
                    Attribute{
                        attributeType: Attribute.VertexAttribute
                        vertexBaseType: Attribute.Float
                        vertexSize: 3
                        byteOffset: 0
                        byteStride: 3 * 4
                        count: 12
                        buffer : Buffer{
                            type: Buffer.VertexBuffer
                            data: Master.buffer
                        }
                    }
                }
            }
            components: [material, geometryRenderer]
        }
...