Fix vertex diffuse colors not initializing properly/use proper diffuse values.
This commit is contained in:
parent
46f900f88c
commit
9c3a3e8d58
|
@ -4068,12 +4068,12 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexData4f)
|
|||
FUNC_EXPORTS
|
||||
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(Register)
|
||||
LOG_FUNC_ARG(a)
|
||||
LOG_FUNC_ARG(b)
|
||||
LOG_FUNC_ARG(c)
|
||||
LOG_FUNC_ARG(d)
|
||||
LOG_FUNC_END;
|
||||
LOG_FUNC_ARG(Register)
|
||||
LOG_FUNC_ARG(a)
|
||||
LOG_FUNC_ARG(b)
|
||||
LOG_FUNC_ARG(c)
|
||||
LOG_FUNC_ARG(d)
|
||||
LOG_FUNC_END;
|
||||
|
||||
HRESULT hRet = D3D_OK;
|
||||
|
||||
|
@ -4113,6 +4113,12 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexData4f)
|
|||
g_InlineVertexBuffer_Table[o].Position.z = c;
|
||||
g_InlineVertexBuffer_Table[o].Rhw = d; // Was : 1.0f; // Dxbx note : Why set Rhw to 1.0? And why ignore d?
|
||||
|
||||
if (o > 0 && g_InlineVertexBuffer_DiffuseFlag == 0) {
|
||||
g_InlineVertexBuffer_Table[o].Diffuse = g_InlineVertexBuffer_Table[o - 1].Diffuse;
|
||||
}
|
||||
|
||||
g_InlineVertexBuffer_DiffuseFlag = 0;
|
||||
|
||||
switch (g_InlineVertexBuffer_FVF & D3DFVF_POSITION_MASK) {
|
||||
case 0:
|
||||
// No position mask given yet, set it now :
|
||||
|
@ -4189,8 +4195,9 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexData4f)
|
|||
|
||||
case X_D3DVSDE_DIFFUSE:
|
||||
{
|
||||
g_InlineVertexBuffer_Table[o].Diffuse = D3DCOLOR_COLORVALUE(a, b, c, d);
|
||||
g_InlineVertexBuffer_Table[o].Diffuse = D3DCOLOR_COLORVALUE(a, b, c, d);
|
||||
g_InlineVertexBuffer_FVF |= D3DFVF_DIFFUSE;
|
||||
g_InlineVertexBuffer_DiffuseFlag = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ extern DWORD XTL::g_InlineVertexBuffer_FVF = 0;
|
|||
extern struct XTL::_D3DIVB *XTL::g_InlineVertexBuffer_Table = nullptr;
|
||||
extern UINT XTL::g_InlineVertexBuffer_TableLength = 0;
|
||||
extern UINT XTL::g_InlineVertexBuffer_TableOffset = 0;
|
||||
extern UINT XTL::g_InlineVertexBuffer_DiffuseFlag = 0;
|
||||
|
||||
FLOAT *g_InlineVertexBuffer_pData = nullptr;
|
||||
UINT g_InlineVertexBuffer_DataSize = 0;
|
||||
|
|
|
@ -118,7 +118,8 @@ extern struct _D3DIVB
|
|||
*g_InlineVertexBuffer_Table;
|
||||
|
||||
extern UINT g_InlineVertexBuffer_TableLength;
|
||||
extern UINT g_InlineVertexBuffer_TableOffset;
|
||||
extern UINT g_InlineVertexBuffer_TableOffset;
|
||||
extern UINT g_InlineVertexBuffer_DiffuseFlag;
|
||||
|
||||
extern VOID EmuFlushIVB();
|
||||
|
||||
|
|
Loading…
Reference in New Issue