Direct X 11 Alpha State

05/01/2015 14:07 Terrat#1
Bilder sagen glaube ich mehr als Worte:
[Only registered and activated users can see links. Click Here To Register...]
Er überschreibt den Transparenten bereich, wobei dieser ja genaugenommen einfach garnicht überschrieben werden sollte.
Alpha Blenddesc:
Code:
	p_AlphaBlendDesc.RenderTarget[0].BlendEnable = TRUE;
	p_AlphaBlendDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
	p_AlphaBlendDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
	p_AlphaBlendDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
	p_AlphaBlendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
	p_AlphaBlendDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ZERO;
	p_AlphaBlendDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
	p_AlphaBlendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
	p_AlphaBlendDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
Render:
Code:
	p_3DContext->OMSetBlendState(p_AlphaBlendState, NULL,0xFFFFFF);//Set Alpha Blenddesc
	p_3DContext->IASetInputLayout(p_InputLayout);
	p_3DContext->IASetVertexBuffers(0, 1, &p_Clients[param_Spritestorage]->p_VertexBuffer_, &p_Stride, &p_Offset);
	p_3DContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
	p_3DContext->VSSetShader(p_Solid2DVS, 0, 0);
	p_3DContext->PSSetShader(p_Solid2DPS, 0, 0);
	p_3DContext->PSSetShaderResources(0, 1, &p_Clients[param_Spritestorage]->p_ColorMap_);
	p_3DContext->PSSetSamplers(0, 1, &p_Clients[param_Spritestorage]->p_ColorMapSampler_);
	XMMATRIX world = p_Clients[param_Spritestorage]->GetWorldMatrix();
	XMMATRIX mvp = XMMatrixMultiply(world, p_2DMatrix);
	mvp = XMMatrixTranspose(mvp);
	p_3DContext->UpdateSubresource(p_Clients[param_Spritestorage]->p_MvpCB_, 0, 0, &mvp, 0, 0);
	p_3DContext->VSSetConstantBuffers(0, 1, &p_Clients[param_Spritestorage]->p_MvpCB_);
	p_3DContext->Draw(6, 0);
	p_3DContext->OMSetBlendState(p_BlendState, NULL, 0xFFFFFFFF);//Restore non alpha Blenddesc