27 , mWithNormals( _withNormals )
28 , mInvertNormals( _invertNormals )
29 , mAddBackFaces( _addBackFaces )
30 , mAddTextureCoords( _addTextureCoords )
32 mVertexBuffer =
new Qt3DCore::QBuffer(
this );
33 mIndexBuffer =
new Qt3DCore::QBuffer(
this );
38 const int stride = tmpTess.
stride();
40 mPositionAttribute =
new Qt3DCore::QAttribute(
this );
41 mPositionAttribute->setName( Qt3DCore::QAttribute::defaultPositionAttributeName() );
42 mPositionAttribute->setVertexBaseType( Qt3DCore::QAttribute::Float );
43 mPositionAttribute->setVertexSize( 3 );
44 mPositionAttribute->setAttributeType( Qt3DCore::QAttribute::VertexAttribute );
45 mPositionAttribute->setBuffer( mVertexBuffer );
46 mPositionAttribute->setByteStride( stride );
47 mPositionAttribute->setByteOffset( 0 );
48 addAttribute( mPositionAttribute );
50 mIndexAttribute =
new Qt3DCore::QAttribute(
this );
51 mIndexAttribute->setName(
"indexBuffer" );
52 mIndexAttribute->setAttributeType( Qt3DCore::QAttribute::IndexAttribute );
53 mIndexAttribute->setVertexBaseType( Qt3DCore::QAttribute::UnsignedInt );
54 mIndexAttribute->setBuffer( mIndexBuffer );
55 addAttribute( mIndexAttribute );
59 mNormalAttribute =
new Qt3DCore::QAttribute(
this );
60 mNormalAttribute->setName( Qt3DCore::QAttribute::defaultNormalAttributeName() );
61 mNormalAttribute->setVertexBaseType( Qt3DCore::QAttribute::Float );
62 mNormalAttribute->setVertexSize( 3 );
63 mNormalAttribute->setAttributeType( Qt3DCore::QAttribute::VertexAttribute );
64 mNormalAttribute->setBuffer( mVertexBuffer );
65 mNormalAttribute->setByteStride( stride );
66 mNormalAttribute->setByteOffset( 3 *
sizeof(
float ) );
67 addAttribute( mNormalAttribute );
69 if ( mAddTextureCoords )
71 mTextureCoordsAttribute =
new Qt3DCore::QAttribute(
this );
72 mTextureCoordsAttribute->setName( Qt3DCore::QAttribute::defaultTextureCoordinateAttributeName() );
73 mTextureCoordsAttribute->setVertexBaseType( Qt3DCore::QAttribute::Float );
74 mTextureCoordsAttribute->setVertexSize( 2 );
75 mTextureCoordsAttribute->setAttributeType( Qt3DCore::QAttribute::VertexAttribute );
76 mTextureCoordsAttribute->setBuffer( mVertexBuffer );
77 mTextureCoordsAttribute->setByteStride( stride );
78 mTextureCoordsAttribute->setByteOffset( mWithNormals ? 6 *
sizeof(
float ) : 3 *
sizeof(
float ) );
79 addAttribute( mTextureCoordsAttribute );
86 mTriangleIndexFids = triangleIndexFids;
88 mVertexBuffer->setData( vertexBufferData );
89 mPositionAttribute->setCount( vertexCount );
90 if ( mNormalAttribute )
91 mNormalAttribute->setCount( vertexCount );
92 if ( mTextureCoordsAttribute )
93 mTextureCoordsAttribute->setCount( vertexCount );
void setVertexBufferData(const QByteArray &vertexBufferData, int vertexCount, const QVector< QgsFeatureId > &triangleIndexFids, const QVector< uint > &triangleIndexStartingIndices)
Initializes vertex buffer (and other members) from data that were already tessellated.