1
0
mirror of https://github.com/narzoul/DDrawCompat synced 2024-12-30 08:55:36 +01:00

Added optimization for D3DDDITSS_TEXTURECOLORKEYVAL

This commit is contained in:
narzoul 2020-12-18 12:04:33 +01:00
parent b42e1584e5
commit f6ed6bcefa
2 changed files with 20 additions and 1 deletions

View File

@ -96,6 +96,25 @@ namespace D3dDdi
HRESULT DeviceState::pfnSetTextureStageState(const D3DDDIARG_TEXTURESTAGESTATE* data)
{
if (D3DDDITSS_TEXTURECOLORKEYVAL == data->State)
{
if (1 == m_textureStageState[data->Stage][D3DDDITSS_DISABLETEXTURECOLORKEY])
{
m_textureStageState[data->Stage][D3DDDITSS_DISABLETEXTURECOLORKEY] = 0;
}
else if (data->Value == m_textureStageState[data->Stage][D3DDDITSS_TEXTURECOLORKEYVAL])
{
return S_OK;
}
m_device.flushPrimitives();
HRESULT result = m_device.getOrigVtable().pfnSetTextureStageState(m_device, data);
if (SUCCEEDED(result))
{
m_textureStageState[data->Stage][D3DDDITSS_TEXTURECOLORKEYVAL] = data->Value;
}
return result;
}
return setStateArray(data, m_textureStageState[data->Stage], m_device.getOrigVtable().pfnSetTextureStageState);
}

View File

@ -59,7 +59,7 @@ namespace D3dDdi
std::vector<ShaderConstI> m_pixelShaderConstI;
std::array<UINT, D3DDDIRS_BLENDOPALPHA + 1> m_renderState;
std::array<HANDLE, 8> m_textures;
std::array<std::array<UINT, D3DDDITSS_CONSTANT + 1>, 8> m_textureStageState;
std::array<std::array<UINT, D3DDDITSS_TEXTURECOLORKEYVAL + 1>, 8> m_textureStageState;
std::vector<ShaderConstF> m_vertexShaderConst;
std::vector<BOOL> m_vertexShaderConstB;
std::vector<ShaderConstI> m_vertexShaderConstI;