2012-08-05 26 views
8

Được rồi, vì vậy tôi đã cố gắng để có được Alpha Blending để làm việc trong ứng dụng 3D của tôi nhưng nó chỉ không muốn xảy ra. Tôi vẽ 2d hình ảnh với một chiếu trực giao ở cuối của vòng lặp dựng hình (kiểm tra độ sâu vẫn được kích hoạt) và kết cấu hình ảnh có phần trong suốt nhưng chúng làm cho màu đen. Đây là mã trộn của tôi:DirectX 11 Alpha Blending Không hoạt động

D3D11_BLEND_DESC blendStateDesc; 
ZeroMemory(&blendStateDesc, sizeof(D3D11_BLEND_DESC)); 
blendStateDesc.AlphaToCoverageEnable = FALSE; 
blendStateDesc.IndependentBlendEnable = FALSE;   
blendStateDesc.RenderTarget[0].BlendEnable = TRUE; 
blendStateDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA; 
blendStateDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA; 
blendStateDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; 
blendStateDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_SRC_ALPHA; 
blendStateDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_DEST_ALPHA; 
blendStateDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; 
blendStateDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; 

if (FAILED(device->CreateBlendState(&blendStateDesc, &blendState))) { 
printf("Failed To Create Blend State\n"); 
} 
deviceContext->OMSetBlendState(blendState, NULL, 0xFFFFFF); 

Và nếu nó giúp đây là mô tả kết cấu:

D3D11_TEXTURE2D_DESC texDesc; 
texDesc.Width = TextureWidth; 
texDesc.Height = textureHeight; 
texDesc.MipLevels = 1; 
texDesc.ArraySize = 1; 
texDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; 
texDesc.SampleDesc.Count = 1; 
texDesc.SampleDesc.Quality = 0; 
texDesc.Usage = D3D11_USAGE_IMMUTABLE; 
texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; 
texDesc.CPUAccessFlags = 0; 
texDesc.MiscFlags = 0; 

Tôi chỉ đang sử dụng một đơn làm cho mục tiêu và không pre-alpha nhân bên trong shaders. Tôi đã xem xét ở khắp mọi nơi và cố gắng tất cả các cách kết hợp khác nhau cho D3D11_BLEND_STATE nhưng không có gì có hiệu quả. Gần nhất tôi có thể nhận được là khi tôi đặt AlphaToCoverage thành TRUE nhưng sau đó nó không hoạt động nếu tôi thay đổi alpha của các đỉnh, và tôi biết những gì tôi đang làm AlphaToCoverage sẽ là FALSE.

Trả lời

Các vấn đề liên quan