fixed pointsprites, etc

This commit is contained in:
Aaron Robinson 2003-08-15 04:08:39 +00:00
parent e2dd0ae80d
commit 5fa9afbe33
1 changed files with 17 additions and 9 deletions

View File

@ -4357,7 +4357,7 @@ static void EmuUpdateDeferredStates()
// ******************************************************************
uint32 EmuQuadHackA(uint32 PrimitiveCount, XTL::IDirect3DVertexBuffer8 *&pOrigVertexBuffer8, XTL::IDirect3DVertexBuffer8 *&pHackVertexBuffer8, UINT dwOffset, PVOID pVertexStreamZeroData, UINT VertexStreamZeroStride, PVOID *ppNewVertexStreamZeroData)
{
UINT uiStride = VertexStreamZeroStride;
UINT uiStride = 0;
// These are the sizes of our part in the vertex buffer
DWORD dwOriginalSize = 0;
@ -4370,10 +4370,6 @@ uint32 EmuQuadHackA(uint32 PrimitiveCount, XTL::IDirect3DVertexBuffer8 *&pOrigVe
BYTE *pOrigVertexData = 0;
BYTE *pHackVertexData = 0;
// This is a list of sqares/rectangles, so we convert it to a list of triangles
dwOriginalSize = PrimitiveCount*uiStride*2;
dwNewSize = PrimitiveCount*uiStride*3;
if(ppNewVertexStreamZeroData != 0)
*ppNewVertexStreamZeroData = pVertexStreamZeroData;
@ -4381,6 +4377,10 @@ uint32 EmuQuadHackA(uint32 PrimitiveCount, XTL::IDirect3DVertexBuffer8 *&pOrigVe
{
g_pD3DDevice8->GetStreamSource(0, &pOrigVertexBuffer8, &uiStride);
// This is a list of sqares/rectangles, so we convert it to a list of triangles
dwOriginalSize = PrimitiveCount*uiStride*2;
dwNewSize = PrimitiveCount*uiStride*3;
// Retrieve the original buffer size
{
XTL::D3DVERTEXBUFFER_DESC Desc;
@ -4398,14 +4398,20 @@ uint32 EmuQuadHackA(uint32 PrimitiveCount, XTL::IDirect3DVertexBuffer8 *&pOrigVe
g_pD3DDevice8->CreateVertexBuffer(dwNewSizeWR, 0, 0, XTL::D3DPOOL_MANAGED, &pHackVertexBuffer8);
if(pOrigVertexBuffer8 != 0 && pHackVertexBuffer8 != 0)
{
if(pOrigVertexBuffer8 != 0)
pOrigVertexBuffer8->Lock(0, 0, &pOrigVertexData, 0);
if(pHackVertexBuffer8 != 0)
pHackVertexBuffer8->Lock(0, 0, &pHackVertexData, 0);
}
}
else
{
uiStride = VertexStreamZeroStride;
// This is a list of sqares/rectangles, so we convert it to a list of triangles
dwOriginalSize = PrimitiveCount*uiStride*2;
dwNewSize = PrimitiveCount*uiStride*3;
dwOriginalSizeWR = dwOriginalSize;
dwNewSizeWR = dwNewSize;
@ -4465,6 +4471,7 @@ VOID EmuQuadHackB(uint32 nStride, XTL::IDirect3DVertexBuffer8 *&pOrigVertexBuffe
if(pOrigVertexBuffer8 != 0)
pOrigVertexBuffer8->Release();
if(pHackVertexBuffer8 != 0)
pHackVertexBuffer8->Release();
}
@ -4524,6 +4531,7 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_DrawVertices
PrimitiveCount
);
// TODO: use original stride here (duh!)
if(PrimitiveType == 8) // Quad List
EmuQuadHackB(nStride, pOrigVertexBuffer8, pHackVertexBuffer8);