mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Workaround for NVIDIA texture color key bug
This commit is contained in:
parent
6463cc84aa
commit
32301efd5c
@ -277,6 +277,17 @@ namespace D3dDdi
|
|||||||
{
|
{
|
||||||
return value & (D3DWRAPCOORD_0 | D3DWRAPCOORD_1 | D3DWRAPCOORD_2 | D3DWRAPCOORD_3);
|
return value & (D3DWRAPCOORD_0 | D3DWRAPCOORD_1 | D3DWRAPCOORD_2 | D3DWRAPCOORD_3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (D3DDDIRS_COLORKEYENABLE == state && value)
|
||||||
|
{
|
||||||
|
UINT enable = FALSE;
|
||||||
|
for (UINT i = 0; i < getVertexDecl().textureStageCount && !enable; ++i)
|
||||||
|
{
|
||||||
|
enable = !m_app.textureStageState[i][D3DDDITSS_DISABLETEXTURECOLORKEY];
|
||||||
|
}
|
||||||
|
return enable;
|
||||||
|
}
|
||||||
|
|
||||||
if (D3DDDIRS_MULTISAMPLEANTIALIAS == state)
|
if (D3DDDIRS_MULTISAMPLEANTIALIAS == state)
|
||||||
{
|
{
|
||||||
return 0 != value && !m_spriteMode;
|
return 0 != value && !m_spriteMode;
|
||||||
@ -476,7 +487,8 @@ namespace D3dDdi
|
|||||||
HRESULT DeviceState::pfnSetTexture(UINT stage, HANDLE texture)
|
HRESULT DeviceState::pfnSetTexture(UINT stage, HANDLE texture)
|
||||||
{
|
{
|
||||||
m_app.textures[stage] = texture;
|
m_app.textures[stage] = texture;
|
||||||
m_changedStates |= CS_TEXTURE_STAGE;
|
m_changedStates |= CS_RENDER_STATE | CS_TEXTURE_STAGE;
|
||||||
|
m_changedRenderStates.set(D3DDDIRS_COLORKEYENABLE);
|
||||||
m_changedTextureStageStates[stage].set(D3DDDITSS_ADDRESSU);
|
m_changedTextureStageStates[stage].set(D3DDDITSS_ADDRESSU);
|
||||||
m_changedTextureStageStates[stage].set(D3DDDITSS_ADDRESSV);
|
m_changedTextureStageStates[stage].set(D3DDDITSS_ADDRESSV);
|
||||||
m_maxChangedTextureStage = max(stage, m_maxChangedTextureStage);
|
m_maxChangedTextureStage = max(stage, m_maxChangedTextureStage);
|
||||||
@ -495,9 +507,15 @@ namespace D3dDdi
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (D3DDDITSS_TEXTURECOLORKEYVAL == data->State)
|
if (D3DDDITSS_TEXTURECOLORKEYVAL == data->State ||
|
||||||
|
D3DDDITSS_DISABLETEXTURECOLORKEY == data->State)
|
||||||
{
|
{
|
||||||
m_app.textureStageState[data->Stage][D3DDDITSS_DISABLETEXTURECOLORKEY] = FALSE;
|
if (D3DDDITSS_TEXTURECOLORKEYVAL == data->State)
|
||||||
|
{
|
||||||
|
m_app.textureStageState[data->Stage][D3DDDITSS_DISABLETEXTURECOLORKEY] = FALSE;
|
||||||
|
}
|
||||||
|
m_changedRenderStates.set(D3DDDIRS_COLORKEYENABLE);
|
||||||
|
m_changedStates |= CS_RENDER_STATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_app.textureStageState[data->Stage][data->State] = data->Value;
|
m_app.textureStageState[data->Stage][data->State] = data->Value;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user