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:
parent
b42e1584e5
commit
f6ed6bcefa
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user