我試圖實現一個簡單的效果:在透明背景下在屏幕上繪製圖像。我使用SpriteBatches來做到這一點。與Direct3D SpriteBatch混合
這裏是我創建的混合狀態代碼:
D3D11_BLEND_DESC descBlend;
ZeroMemory(&descBlend, sizeof(descBlend));
descBlend.RenderTarget[0].BlendEnable = true;
descBlend.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
descBlend.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
descBlend.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
descBlend.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_INV_SRC_ALPHA;
descBlend.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
descBlend.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
m_d3dDevice->CreateBlendState(&descBlend, &m_Blend);
我開始畫我的精靈有:
m_SpriteBatch->Begin(SpriteSortMode_BackToFront, m_Blend);
沒有顯示在屏幕上!我錯過了什麼嗎?
我確定我的圖像是正確的,因爲當我繪製時沒有啓用混合,除透明部分變成純白色之外,所有東西都顯示出來。
任何幫助,將不勝感激。
謝謝。這個帖子幫了很大忙。我不僅解決了當前的問題,而且解決了我一定會遇到的一些未來問題。 :) – l3utterfly 2013-02-15 12:24:29