Browse Source

build properly with new GeomContext (and without GeomNodeContext

David Rose 22 years ago
parent
commit
d6ce073b65

+ 15 - 47
panda/src/dxgsg7/dxGraphicsStateGuardian7.cxx

@@ -456,7 +456,6 @@ dx_init( void) {
 #ifdef COUNT_DRAWPRIMS
      global_pD3DDevice = pDevice;
 #endif
-    _pCurrentGeomContext = NULL;
     _bDrawPrimDoSetupVertexBuffer = false;
 
     _last_testcooplevel_result = S_OK;
@@ -1031,17 +1030,6 @@ typedef enum {
     FlatVerts,IndexedVerts,MixedFmtVerts
 } GeomVertFormat;
 
-#define COPYVERTDATA_2_VERTEXBUFFER(PrimType,NumVertices) {                                     \
-            DWORD numVertBytes=_pCurFvfBufPtr-_pFvfBufBasePtr;                                  \
-            memcpy(_pCurrentGeomContext->_pEndofVertData,_pFvfBufBasePtr,numVertBytes);         \
-            DPInfo dpInfo;                                                                      \
-            dpInfo.nVerts=NumVertices;                                                          \
-            dpInfo.primtype=PrimType;                                                           \
-            _pCurrentGeomContext->_PrimInfo.push_back(dpInfo);                                  \
-            _pCurrentGeomContext->_num_verts+=dpInfo.nVerts;                                    \
-            _pCurrentGeomContext->_pEndofVertData+=numVertBytes; }
-
-
 INLINE void DXGraphicsStateGuardian7::
 transform_color(Colorf &InColor,D3DCOLOR &OutRGBAColor) {
   Colorf transformed
@@ -1380,12 +1368,8 @@ draw_point(GeomPoint *geom, GeomContext *gc) {
 
         nassertv((nPrims*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-           HRESULT hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_POINTLIST, _curFVFflags, _pFvfBufBasePtr, nPrims, NULL);
-           TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nPrims,0);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_POINTLIST,nPrims);
-        }
+        HRESULT hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_POINTLIST, _curFVFflags, _pFvfBufBasePtr, nPrims, NULL);
+        TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nPrims,0);
     } else {  // setup for strided
 
         size_t vertex_size = draw_prim_setup(geom);
@@ -1524,19 +1508,15 @@ draw_line(GeomLine* geom, GeomContext *gc) {
 
     DWORD nVerts = nPrims<<1;
 
-    if(!_bDrawPrimDoSetupVertexBuffer) {
-        if (_tmp_fvfOverrunBuf == NULL) {
-            nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
-            hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_LINELIST, _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
-        } else {
-            nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_tmp_fvfOverrunBuf));
-            hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_LINELIST, _curFVFflags, _tmp_fvfOverrunBuf, nVerts, NULL);
-            delete [] _tmp_fvfOverrunBuf;
-        }
-        TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,0);
+    if (_tmp_fvfOverrunBuf == NULL) {
+      nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
+      hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_LINELIST, _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
     } else {
-        COPYVERTDATA_2_VERTEXBUFFER(D3DPT_LINELIST,nVerts);
+      nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_tmp_fvfOverrunBuf));
+      hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_LINELIST, _curFVFflags, _tmp_fvfOverrunBuf, nVerts, NULL);
+      delete [] _tmp_fvfOverrunBuf;
     }
+    TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,0);
 
     _pCurFvfBufPtr = NULL;
 }
@@ -1648,12 +1628,8 @@ draw_linestrip_base(Geom* geom, GeomContext *gc, bool bConnectEnds) {
 
         nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-            HRESULT hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_LINESTRIP, _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
-            TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,0);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_LINESTRIP,nVerts);
-        }
+        HRESULT hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_LINESTRIP, _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
+        TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,0);
 
         _pCurFvfBufPtr = NULL;
     }
@@ -2266,12 +2242,8 @@ draw_tri(GeomTri *geom, GeomContext *gc) {
 
         nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-            hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
-            TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,nPrims);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_TRIANGLELIST,nVerts);
-        }
+        hr = _pScrn->pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
+        TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,nPrims);
 
         _pCurFvfBufPtr = NULL;
     }
@@ -2723,12 +2695,8 @@ draw_multitri(Geom *geom, D3DPRIMITIVETYPE trilisttype) {
 
             assert((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
 
-            if(!_bDrawPrimDoSetupVertexBuffer) {
-                hr = _pScrn->pD3DDevice->DrawPrimitive(trilisttype,  _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
-                TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,nVerts-2);
-            } else {
-                COPYVERTDATA_2_VERTEXBUFFER(trilisttype,nVerts);
-            }
+            hr = _pScrn->pD3DDevice->DrawPrimitive(trilisttype,  _curFVFflags, _pFvfBufBasePtr, nVerts, NULL);
+            TestDrawPrimFailure(DrawPrim,hr,_pScrn->pDD,nVerts,nVerts-2);
 
             _pCurFvfBufPtr = NULL;
         }

+ 15 - 46
panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx

@@ -588,7 +588,6 @@ dx_init(void) {
 #ifdef COUNT_DRAWPRIMS
      global_pD3DDevice = pDevice;
 #endif
-    _pCurrentGeomContext = NULL;
     _bDrawPrimDoSetupVertexBuffer = false;
 
     _last_testcooplevel_result = D3D_OK;
@@ -1293,16 +1292,6 @@ typedef enum {
     FlatVerts,IndexedVerts,MixedFmtVerts
 } GeomVertFormat;
 
-#define COPYVERTDATA_2_VERTEXBUFFER(PrimType,NumVertices) {                                     \
-            DWORD numVertBytes=_pCurFvfBufPtr-_pFvfBufBasePtr;                                  \
-            memcpy(_pCurrentGeomContext->_pEndofVertData,_pFvfBufBasePtr,numVertBytes);         \
-            DPInfo dpInfo;                                                                      \
-            dpInfo.nVerts=NumVertices;                                                          \
-            dpInfo.primtype=PrimType;                                                           \
-            _pCurrentGeomContext->_PrimInfo.push_back(dpInfo);                                  \
-            _pCurrentGeomContext->_num_verts+=dpInfo.nVerts;                                    \
-            _pCurrentGeomContext->_pEndofVertData+=numVertBytes; }
-
 
 INLINE void DXGraphicsStateGuardian8::
 transform_color(Colorf &InColor,D3DCOLOR &OutRGBAColor) {
@@ -1622,12 +1611,8 @@ draw_point(GeomPoint *geom, GeomContext *gc) {
         // iterate through the point
         draw_prim_inner_loop(nPrims, geom, _perVertex | _perPrim);
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-           HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_POINTLIST, nPrims, _pFvfBufBasePtr, vertex_size);
-           TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nPrims,0);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_POINTLIST,nPrims);
-        }
+        HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_POINTLIST, nPrims, _pFvfBufBasePtr, vertex_size);
+        TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nPrims,0);
 
 
     _pCurFvfBufPtr = NULL;
@@ -1718,19 +1703,15 @@ draw_line(GeomLine* geom, GeomContext *gc) {
 
     DWORD nVerts = nPrims<<1;
 
-    if(!_bDrawPrimDoSetupVertexBuffer) {
-        if (_tmp_fvfOverrunBuf == NULL) {
-            nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
-            hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _pFvfBufBasePtr, vertex_size);
-        } else {
-            nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_tmp_fvfOverrunBuf));
-            hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _tmp_fvfOverrunBuf, vertex_size);
-            delete [] _tmp_fvfOverrunBuf;
-        }
-        TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
+    if (_tmp_fvfOverrunBuf == NULL) {
+      nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
+      hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _pFvfBufBasePtr, vertex_size);
     } else {
-        COPYVERTDATA_2_VERTEXBUFFER(D3DPT_LINELIST,nVerts);
+      nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_tmp_fvfOverrunBuf));
+      hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _tmp_fvfOverrunBuf, vertex_size);
+      delete [] _tmp_fvfOverrunBuf;
     }
+    TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
 
     _pCurFvfBufPtr = NULL;
 }
@@ -1841,12 +1822,8 @@ draw_linestrip_base(Geom* geom, GeomContext *gc, bool bConnectEnds) {
 
         nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-            HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINESTRIP, nVerts-1, _pFvfBufBasePtr, vertex_size);
-            TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_LINESTRIP,nVerts);
-        }
+        HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINESTRIP, nVerts-1, _pFvfBufBasePtr, vertex_size);
+        TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
 
         _pCurFvfBufPtr = NULL;
     }
@@ -2414,12 +2391,8 @@ draw_tri(GeomTri *geom, GeomContext *gc) {
 
         nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-            hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, nPrims, _pFvfBufBasePtr, vertex_size);
-            TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,nPrims);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_TRIANGLELIST,nVerts);
-        }
+        hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, nPrims, _pFvfBufBasePtr, vertex_size);
+        TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,nPrims);
 
         _pCurFvfBufPtr = NULL;
 
@@ -2650,12 +2623,8 @@ draw_multitri(Geom *geom, D3DPRIMITIVETYPE trilisttype) {
             assert((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
             DWORD numTris=nVerts-2;
 
-            if(!_bDrawPrimDoSetupVertexBuffer) {
-                hr = _pD3DDevice->DrawPrimitiveUP(trilisttype, numTris, _pFvfBufBasePtr, vertex_size);
-                TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,numTris);
-            } else {
-                COPYVERTDATA_2_VERTEXBUFFER(trilisttype,nVerts);
-            }
+            hr = _pD3DDevice->DrawPrimitiveUP(trilisttype, numTris, _pFvfBufBasePtr, vertex_size);
+            TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,numTris);
 
             _pCurFvfBufPtr = NULL;
         }

+ 15 - 47
panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx

@@ -589,7 +589,6 @@ dx_init(void) {
 #ifdef COUNT_DRAWPRIMS
      global_pD3DDevice = pDevice;
 #endif
-    _pCurrentGeomContext = NULL;
     _bDrawPrimDoSetupVertexBuffer = false;
 
     _last_testcooplevel_result = D3D_OK;
@@ -1298,16 +1297,6 @@ typedef enum {
     FlatVerts,IndexedVerts,MixedFmtVerts
 } GeomVertFormat;
 
-#define COPYVERTDATA_2_VERTEXBUFFER(PrimType,NumVertices) {                                     \
-            DWORD numVertBytes=_pCurFvfBufPtr-_pFvfBufBasePtr;                                  \
-            memcpy(_pCurrentGeomContext->_pEndofVertData,_pFvfBufBasePtr,numVertBytes);         \
-            DPInfo dpInfo;                                                                      \
-            dpInfo.nVerts=NumVertices;                                                          \
-            dpInfo.primtype=PrimType;                                                           \
-            _pCurrentGeomContext->_PrimInfo.push_back(dpInfo);                                  \
-            _pCurrentGeomContext->_num_verts+=dpInfo.nVerts;                                    \
-            _pCurrentGeomContext->_pEndofVertData+=numVertBytes; }
-
 
 INLINE void DXGraphicsStateGuardian9::
 transform_color(Colorf &InColor,D3DCOLOR &OutRGBAColor) {
@@ -1626,13 +1615,8 @@ draw_point(GeomPoint *geom, GeomContext *gc) {
         // iterate through the point
         draw_prim_inner_loop(nPrims, geom, _perVertex | _perPrim);
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-           HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_POINTLIST, nPrims, _pFvfBufBasePtr, vertex_size);
-           TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nPrims,0);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_POINTLIST,nPrims);
-        }
-
+        HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_POINTLIST, nPrims, _pFvfBufBasePtr, vertex_size);
+        TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nPrims,0);
 
     _pCurFvfBufPtr = NULL;
 }
@@ -1722,19 +1706,15 @@ draw_line(GeomLine* geom, GeomContext *gc) {
 
     DWORD nVerts = nPrims<<1;
 
-    if(!_bDrawPrimDoSetupVertexBuffer) {
-        if (_tmp_fvfOverrunBuf == NULL) {
-            nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
-            hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _pFvfBufBasePtr, vertex_size);
-        } else {
-            nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_tmp_fvfOverrunBuf));
-            hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _tmp_fvfOverrunBuf, vertex_size);
-            delete [] _tmp_fvfOverrunBuf;
-        }
-        TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
+    if (_tmp_fvfOverrunBuf == NULL) {
+      nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
+      hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _pFvfBufBasePtr, vertex_size);
     } else {
-        COPYVERTDATA_2_VERTEXBUFFER(D3DPT_LINELIST,nVerts);
+      nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_tmp_fvfOverrunBuf));
+      hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, nPrims, _tmp_fvfOverrunBuf, vertex_size);
+      delete [] _tmp_fvfOverrunBuf;
     }
+    TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
 
     _pCurFvfBufPtr = NULL;
 }
@@ -1845,12 +1825,8 @@ draw_linestrip_base(Geom* geom, GeomContext *gc, bool bConnectEnds) {
 
         nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
 
-        if(!_bDrawPrimDoSetupVertexBuffer) {
-            HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINESTRIP, nVerts-1, _pFvfBufBasePtr, vertex_size);
-            TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
-        } else {
-            COPYVERTDATA_2_VERTEXBUFFER(D3DPT_LINESTRIP,nVerts);
-        }
+        HRESULT hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_LINESTRIP, nVerts-1, _pFvfBufBasePtr, vertex_size);
+        TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,0);
 
         _pCurFvfBufPtr = NULL;
     }
@@ -2418,12 +2394,8 @@ draw_tri(GeomTri *geom, GeomContext *gc) {
 
     nassertv((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
     
-    if(!_bDrawPrimDoSetupVertexBuffer) {
-      hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, nPrims, _pFvfBufBasePtr, vertex_size);
-      TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,nPrims);
-    } else {
-      COPYVERTDATA_2_VERTEXBUFFER(D3DPT_TRIANGLELIST,nVerts);
-    }
+    hr = _pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, nPrims, _pFvfBufBasePtr, vertex_size);
+    TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,nPrims);
     
     _pCurFvfBufPtr = NULL;
     
@@ -2655,12 +2627,8 @@ draw_multitri(Geom *geom, D3DPRIMITIVETYPE trilisttype) {
             assert((nVerts*vertex_size) == (_pCurFvfBufPtr-_pFvfBufBasePtr));
             DWORD numTris=nVerts-2;
 
-            if(!_bDrawPrimDoSetupVertexBuffer) {
-                hr = _pD3DDevice->DrawPrimitiveUP(trilisttype, numTris, _pFvfBufBasePtr, vertex_size);
-                TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,numTris);
-            } else {
-                COPYVERTDATA_2_VERTEXBUFFER(trilisttype,nVerts);
-            }
+            hr = _pD3DDevice->DrawPrimitiveUP(trilisttype, numTris, _pFvfBufBasePtr, vertex_size);
+            TestDrawPrimFailure(DrawPrim,hr,_pD3DDevice,nVerts,numTris);
 
             _pCurFvfBufPtr = NULL;
         }