diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-10-20 08:59:46 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2014-10-22 10:45:27 +0200 |
commit | 62f9d57d8e4e9dc77f3eceb9f9c8413998143ca5 (patch) | |
tree | 0a893df288bbabb0d0f59b5cb238d9302cbd1e50 /src/render/io | |
parent | 5d31b5f774475f87a00447c4eac6eb96e9651675 (diff) |
QMeshData: enum for primitives
Each value in the enums maps directly to the correct GLint for a given
primitive patch.
This allows to still return an int to be used directly by the renderer.
This should also fix compilation error of ES2.
Change-Id: I7ec54dcb2cbb02b67fa6225bb80fb7e691687e2c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/io')
-rw-r--r-- | src/render/io/gltfparser.cpp | 2 | ||||
-rw-r--r-- | src/render/io/objloader.cpp | 2 | ||||
-rw-r--r-- | src/render/io/qmeshdata.cpp | 8 | ||||
-rw-r--r-- | src/render/io/qmeshdata.h | 19 |
4 files changed, 21 insertions, 10 deletions
diff --git a/src/render/io/gltfparser.cpp b/src/render/io/gltfparser.cpp index f41a5ed23..649482412 100644 --- a/src/render/io/gltfparser.cpp +++ b/src/render/io/gltfparser.cpp @@ -700,7 +700,7 @@ void GLTFParser::processJSONMesh( QString id, QJsonObject jsonObj ) continue; } - QMeshDataPtr md( new QMeshData( type ) ); + QMeshDataPtr md( new QMeshData( static_cast<QMeshData::PrimitiveTypes>(type) ) ); m_meshMaterialDict[md.data()] = material; QJsonObject attrs = primObj.value(KEY_ATTRIBUTES).toObject(); diff --git a/src/render/io/objloader.cpp b/src/render/io/objloader.cpp index 4afadfae3..db4741c1f 100644 --- a/src/render/io/objloader.cpp +++ b/src/render/io/objloader.cpp @@ -214,7 +214,7 @@ bool ObjLoader::load(::QIODevice *ioDev) QMeshData *ObjLoader::mesh() const { - QMeshData *mesh = new QMeshData(GL_TRIANGLES); + QMeshData *mesh = new QMeshData(QMeshData::Triangles); QByteArray bufferBytes; const int count = m_points.size(); diff --git a/src/render/io/qmeshdata.cpp b/src/render/io/qmeshdata.cpp index 3cc848c64..d4f9e542c 100644 --- a/src/render/io/qmeshdata.cpp +++ b/src/render/io/qmeshdata.cpp @@ -56,7 +56,7 @@ QMeshDataPrivate::QMeshDataPrivate(QMeshData *qq) { } -QMeshData::QMeshData(int primitiveType) +QMeshData::QMeshData(PrimitiveTypes primitiveType) : d_ptr(new QMeshDataPrivate(this)) { setPrimitiveType(primitiveType); @@ -164,13 +164,9 @@ AxisAlignedBoundingBox QMeshData::boundingBox() const return d->m_bbox; } -void QMeshData::setPrimitiveType(int primitiveType) +void QMeshData::setPrimitiveType(PrimitiveTypes primitiveType) { Q_D(QMeshData); - Q_ASSERT((primitiveType == GL_TRIANGLES) || - (primitiveType == GL_LINES) || - (primitiveType == GL_POINTS) || - (primitiveType == GL_PATCHES)); d->m_primitiveType = primitiveType; } diff --git a/src/render/io/qmeshdata.h b/src/render/io/qmeshdata.h index 0165c3ac3..a742231dd 100644 --- a/src/render/io/qmeshdata.h +++ b/src/render/io/qmeshdata.h @@ -60,7 +60,22 @@ typedef QSharedPointer<QAbstractBuffer> QAbstractBufferPtr; class QT3DRENDERERSHARED_EXPORT QMeshData { public: - explicit QMeshData(int primitiveType = 0); + enum PrimitiveTypes { + Points = 0x0000, + Lines = 0x0001, + LineLoop = 0x0002, + LineStrip = 0x0003, + Triangles = 0x0004, + TriangleStrip = 0x0005, + TriangleFan = 0x0006, + LinesAdjacency = 0x000A, + TrianglesAdjacency = 0x000C, + LineStripAdjacency = 0x000B, + TriangleStripAdjacency = 0x000D, + Patches = 0x000E + }; + + explicit QMeshData(PrimitiveTypes primitiveType = Triangles); virtual ~QMeshData(); void addAttribute(const QString& name, QAbstractAttributePtr attr); @@ -76,7 +91,7 @@ public: static const QString defaultTextureCoordinateAttributeName() { return QStringLiteral("vertexTexCoord"); } static const QString defaultTangentAttributeName() { return QStringLiteral("vertexTangent"); } - void setPrimitiveType(int primitiveType); + void setPrimitiveType(PrimitiveTypes primitiveType); int primitiveType() const; void setVerticesPerPatch(int verticesPerPatch); |