From 2c059ce55e5dda00448522230c9a695285e15615 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sat, 11 Mar 2023 13:00:26 -0600 Subject: [PATCH] feat(gx): handle alpha device states in d3d backend --- src/gx/d3d/CGxDeviceD3d.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/gx/d3d/CGxDeviceD3d.cpp b/src/gx/d3d/CGxDeviceD3d.cpp index 56d622f..1cf7000 100644 --- a/src/gx/d3d/CGxDeviceD3d.cpp +++ b/src/gx/d3d/CGxDeviceD3d.cpp @@ -459,7 +459,30 @@ void CGxDeviceD3d::Draw(CGxBatch* batch, int32_t indexed) { } void CGxDeviceD3d::DsSet(EDeviceState state, uint32_t val) { - // TODO + if (this->m_deviceStates[state] == val) { + return; + } + + switch (state) { + // TODO handle other device states + + case Ds_AlphaBlendEnable: { + this->m_d3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, val); + break; + } + + case Ds_AlphaTestEnable: { + this->m_d3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, val); + break; + } + + case Ds_AlphaRef: { + this->m_d3dDevice->SetRenderState(D3DRS_ALPHAREF, val); + break; + } + } + + this->m_deviceStates[state] = val; } char* CGxDeviceD3d::IBufLock(CGxBuf* buf) {