Browse Source

make 3d models loadable without GraphicsAPI usages

Kolja Strohm 1 tháng trước cách đây
mục cha
commit
c24d077b0c
2 tập tin đã thay đổi với 19 bổ sung5 xóa
  1. 9 1
      M3Datei.cpp
  2. 10 4
      Model3D.cpp

+ 9 - 1
M3Datei.cpp

@@ -375,7 +375,15 @@ Model3DData* M3Datei::ladeModel(
             return 0;
         }
         d.setLPosition(pos, 0);
-        Model3DData* model = zApi->createModel(uniqueName);
+        Model3DData* model;
+        if (zApi)
+        {
+            model = zApi->createModel(uniqueName);
+        }
+        else
+        {
+            model = new Model3DData(0, 0, -1);
+        }
         int vAnz;
         d.lese((char*)&vAnz, 4);
         Vertex3D* vertices = new Vertex3D[vAnz];

+ 10 - 4
Model3D.cpp

@@ -333,8 +333,14 @@ Model3DData::~Model3DData()
 {
     clearModel();
     polygons->release();
-    dxIndexBuffer->release();
-    dxVertexBuffer->release();
+    if (dxIndexBuffer)
+    {
+        dxIndexBuffer->release();
+    }
+    if (dxVertexBuffer)
+    {
+        dxVertexBuffer->release();
+    }
     delete[] indexBuffer;
 }
 
@@ -491,8 +497,8 @@ void Model3DData::copyModel2D(Model2DData* model, float z)
             for (auto j : *i)
             {
                 for (auto k = j->zListe()->begin();
-                     k && k.hasNext() && k.next().hasNext();
-                     k++)
+                    k && k.hasNext() && k.next().hasNext();
+                    k++)
                     p->indexAnz += 3;
             }
             p->indexList = new int[p->indexAnz];