|
|
@@ -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;
|
|
|
}
|