37 Qt3DCore::QGeometry *geom =
new Qt3DCore::QGeometry(
this );
38 Qt3DCore::QAttribute *positionAttribute =
new Qt3DCore::QAttribute(
this );
39 const QVector<float> vert = { -1.0f, -1.0f, 0.0f,
46 const QByteArray vertexArr( (
const char * ) vert.constData(), vert.size() *
sizeof(
float ) );
47 Qt3DCore::QBuffer *vertexBuffer =
nullptr;
48 vertexBuffer =
new Qt3DCore::QBuffer(
this );
49 vertexBuffer->setData( vertexArr );
51 positionAttribute->setName( Qt3DCore::QAttribute::defaultPositionAttributeName() );
52 positionAttribute->setVertexBaseType( Qt3DCore::QAttribute::Float );
53 positionAttribute->setVertexSize( 3 );
54 positionAttribute->setAttributeType( Qt3DCore::QAttribute::VertexAttribute );
55 positionAttribute->setBuffer( vertexBuffer );
56 positionAttribute->setByteOffset( 0 );
57 positionAttribute->setByteStride( 3 *
sizeof(
float ) );
58 positionAttribute->setCount( 6 );
60 geom->addAttribute( positionAttribute );
62 Qt3DRender::QGeometryRenderer *renderer =
new Qt3DRender::QGeometryRenderer(
this );
63 renderer->setPrimitiveType( Qt3DRender::QGeometryRenderer::PrimitiveType::Triangles );
64 renderer->setGeometry( geom );
66 addComponent( renderer );
68 mMaterial =
new Qt3DRender::QMaterial(
this );
70 Qt3DRender::QEffect *effect =
new Qt3DRender::QEffect(
this );
71 Qt3DRender::QTechnique *technique =
new Qt3DRender::QTechnique(
this );
72 Qt3DRender::QGraphicsApiFilter *graphicsApiFilter = technique->graphicsApiFilter();
73 graphicsApiFilter->setApi( Qt3DRender::QGraphicsApiFilter::Api::OpenGL );
74 graphicsApiFilter->setProfile( Qt3DRender::QGraphicsApiFilter::OpenGLProfile::CoreProfile );
75 graphicsApiFilter->setMajorVersion( 3 );
76 graphicsApiFilter->setMinorVersion( 1 );
77 Qt3DRender::QRenderPass *renderPass =
new Qt3DRender::QRenderPass(
this );
78 mShader =
new Qt3DRender::QShaderProgram(
this );
80 renderPass->setShaderProgram(
mShader );
82 Qt3DRender::QDepthTest *depthTest =
new Qt3DRender::QDepthTest(
this );
83 depthTest->setDepthFunction( Qt3DRender::QDepthTest::Always );
85 renderPass->addRenderState( depthTest );
87 technique->addRenderPass( renderPass );
89 effect->addTechnique( technique );
94 addComponent( layer );