From 98a72ecdbdb62495022aab83d0d70c4ee15bd407 Mon Sep 17 00:00:00 2001 From: Iliyas Jorio Date: Sun, 21 Feb 2021 10:54:57 +0100 Subject: [PATCH] QD3D: TQ3TexturingMode: opaque, alphatest, alphablend --- src/QD3D/3DMFParser.cpp | 6 ++++-- src/QD3D/QD3D.cpp | 4 ++-- src/QD3D/QD3D.h | 13 +++++++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/QD3D/3DMFParser.cpp b/src/QD3D/3DMFParser.cpp index 835d443..c0a24e2 100644 --- a/src/QD3D/3DMFParser.cpp +++ b/src/QD3D/3DMFParser.cpp @@ -172,9 +172,11 @@ uint32_t Q3MetaFileParser::Parse1Chunk() if (currentMesh) { - Assert(!currentMesh->hasTexture, "txmm: current mesh already has a texture"); + Assert(currentMesh->internalTextureID < 0, "txmm: current mesh already has a texture"); + Assert(currentMesh->texturingMode == kQ3TexturingModeOff, "txmm: current mesh already has a texturing mode"); + currentMesh->internalTextureID = internalTextureID; - currentMesh->hasTexture = true; + currentMesh->texturingMode = kQ3TexturingModeInvalid; // set texturing mode to invalid because we don't know if the texture is opaque yet } break; diff --git a/src/QD3D/QD3D.cpp b/src/QD3D/QD3D.cpp index a12a5f5..a194239 100644 --- a/src/QD3D/QD3D.cpp +++ b/src/QD3D/QD3D.cpp @@ -160,8 +160,8 @@ TQ3TriMeshData* Q3TriMeshData_New(int numTriangles, int numPoints) mesh->vertexUVs = __Q3Alloc(numPoints, 'TMuv'); mesh->vertexColors = nullptr; mesh->diffuseColor = {1, 1, 1, 1}; - mesh->hasTexture = false; - mesh->textureHasTransparency = false; + mesh->texturingMode = kQ3TexturingModeOff; + mesh->internalTextureID = -1; for (int i = 0; i < numPoints; i++) { diff --git a/src/QD3D/QD3D.h b/src/QD3D/QD3D.h index 1f3f1d6..3817447 100644 --- a/src/QD3D/QD3D.h +++ b/src/QD3D/QD3D.h @@ -47,6 +47,16 @@ typedef enum kQ3StatusSize32 = 0xFFFFFFFF } TQ3Status; +// WARNING: this enum did not exist in QD3D +typedef enum +{ + kQ3TexturingModeInvalid = -1, + kQ3TexturingModeOff = 0, + kQ3TexturingModeOpaque, + kQ3TexturingModeAlphaTest, + kQ3TexturingModeAlphaBlend, + kQ3TexturingModeSize32 = 0xFFFFFFFF, +} TQ3TexturingMode; enum TQ3AttributeTypes { @@ -266,8 +276,7 @@ typedef struct TQ3TriMeshData TQ3BoundingBox bBox; - bool hasTexture; - bool textureHasTransparency; // TODO + TQ3TexturingMode texturingMode; int internalTextureID; uint32_t glTextureName;