summaryrefslogtreecommitdiffstats
path: root/src/render/io
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-10-20 08:59:46 +0200
committerPaul Lemire <paul.lemire@kdab.com>2014-10-22 10:45:27 +0200
commit62f9d57d8e4e9dc77f3eceb9f9c8413998143ca5 (patch)
tree0a893df288bbabb0d0f59b5cb238d9302cbd1e50 /src/render/io
parent5d31b5f774475f87a00447c4eac6eb96e9651675 (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.cpp2
-rw-r--r--src/render/io/objloader.cpp2
-rw-r--r--src/render/io/qmeshdata.cpp8
-rw-r--r--src/render/io/qmeshdata.h19
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);