Fixed invalid alpha blend mode.

This commit is contained in:
bkaradzic 2012-07-23 22:42:51 -07:00
parent cb024842b0
commit 9cc6d63e6f

View file

@ -24,20 +24,20 @@ namespace bgfx
1, 1,
}; };
static const D3D11_BLEND s_blendFactor[] = static const D3D11_BLEND s_blendFactor[][2] =
{ {
(D3D11_BLEND)0, // ignored { (D3D11_BLEND)0, (D3D11_BLEND)0 }, // ignored
D3D11_BLEND_ZERO, { D3D11_BLEND_ZERO, D3D11_BLEND_ZERO },
D3D11_BLEND_ONE, { D3D11_BLEND_ONE, D3D11_BLEND_ONE },
D3D11_BLEND_SRC_COLOR, { D3D11_BLEND_SRC_COLOR, D3D11_BLEND_SRC_ALPHA },
D3D11_BLEND_INV_SRC_COLOR, { D3D11_BLEND_INV_SRC_COLOR, D3D11_BLEND_INV_SRC_ALPHA },
D3D11_BLEND_SRC_ALPHA, { D3D11_BLEND_SRC_ALPHA, D3D11_BLEND_SRC_ALPHA },
D3D11_BLEND_INV_SRC_ALPHA, { D3D11_BLEND_INV_SRC_ALPHA, D3D11_BLEND_INV_SRC_ALPHA },
D3D11_BLEND_DEST_ALPHA, { D3D11_BLEND_DEST_ALPHA, D3D11_BLEND_DEST_ALPHA },
D3D11_BLEND_INV_DEST_ALPHA, { D3D11_BLEND_INV_DEST_ALPHA, D3D11_BLEND_INV_DEST_ALPHA },
D3D11_BLEND_DEST_COLOR, { D3D11_BLEND_DEST_COLOR, D3D11_BLEND_DEST_ALPHA },
D3D11_BLEND_INV_DEST_COLOR, { D3D11_BLEND_INV_DEST_COLOR, D3D11_BLEND_INV_DEST_ALPHA },
D3D11_BLEND_SRC_ALPHA_SAT, { D3D11_BLEND_SRC_ALPHA_SAT, D3D11_BLEND_SRC_ALPHA_SAT },
}; };
static const D3D11_COMPARISON_FUNC s_depthFunc[] = static const D3D11_COMPARISON_FUNC s_depthFunc[] =
@ -531,16 +531,14 @@ namespace bgfx
uint32_t writeMask = (_state&BGFX_STATE_ALPHA_WRITE) ? D3D11_COLOR_WRITE_ENABLE_ALPHA : 0; uint32_t writeMask = (_state&BGFX_STATE_ALPHA_WRITE) ? D3D11_COLOR_WRITE_ENABLE_ALPHA : 0;
writeMask |= (_state&BGFX_STATE_RGB_WRITE) ? D3D11_COLOR_WRITE_ENABLE_RED|D3D11_COLOR_WRITE_ENABLE_GREEN|D3D11_COLOR_WRITE_ENABLE_BLUE : 0; writeMask |= (_state&BGFX_STATE_RGB_WRITE) ? D3D11_COLOR_WRITE_ENABLE_RED|D3D11_COLOR_WRITE_ENABLE_GREEN|D3D11_COLOR_WRITE_ENABLE_BLUE : 0;
drt.SrcBlend = drt.SrcBlend = s_blendFactor[src][0];
drt.SrcBlendAlpha = s_blendFactor[src]; drt.DestBlend = s_blendFactor[dst][0];
drt.DestBlend = drt.BlendOp = D3D11_BLEND_OP_ADD;
drt.DestBlendAlpha = s_blendFactor[dst];
drt.BlendOp = drt.SrcBlendAlpha = s_blendFactor[src][1];
drt.DestBlendAlpha = s_blendFactor[dst][1];
drt.BlendOpAlpha = D3D11_BLEND_OP_ADD; drt.BlendOpAlpha = D3D11_BLEND_OP_ADD;
drt.SrcBlend = s_blendFactor[src];
drt.DestBlend = s_blendFactor[dst];
drt.BlendOp = D3D11_BLEND_OP_ADD;
drt.RenderTargetWriteMask = writeMask; drt.RenderTargetWriteMask = writeMask;
DX_CHECK(m_device->CreateBlendState(&desc, &bs) ); DX_CHECK(m_device->CreateBlendState(&desc, &bs) );