Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17560

No blending, something missing?

$
0
0
Hi, new here. I have been dealing with the Frank Luna's programming book codes for a while, and I am having problems with the blending part. My code has been changed to not use the Effect11 framework. Instead I have been using pre-compiled PS/VS shaders (or compiled shaders during built time) and managing resources/shaders using a solution he posted in his blog due Win8+ no longer supporting the D3DX11 library, I am also using DirecXTK for texture loading. Those are the changes made vs the original code.
 
I think I have everything set up but it doesn't seem to work, no blending. I omitted all the irrelevant code
 
RenderStates.cpp (RenderStates is a static class)


ComPtr<ID3D11BlendState> RenderStates::transBlendSt = 0;
ComPtr<ID3D11BlendState> RenderStates::normalBlendSt = 0;

void RenderStates::InitAll(ID3D11Device* dev)
{
D3D11_BLEND_DESC desc1 = {0};
desc1.AlphaToCoverageEnable = false;
desc1.IndependentBlendEnable = false;
desc1.RenderTarget[0].BlendEnable = true;
desc1.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
desc1.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
desc1.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
desc1.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
desc1.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
desc1.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
desc1.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;


//Transparent Blend State
HR( dev->CreateBlendState(&desc1, &transBlendSt) );


D3D11_BLEND_DESC desc2 = {0};
desc2.AlphaToCoverageEnable = true;
desc2.IndependentBlendEnable = false;
desc2.RenderTarget[0].BlendEnable = false;
desc2.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;


//Normal Blend State
HR( dev->CreateBlendState(&desc2, &normalBlendSt) );


} 
 
Main.cpp

bool InitD3D::Init()
{ 
   RenderStates::InitAll(md3dDevice);
}

//Its using the DirectXTK texture loading function
void InitD3D::LoadTextures()
{
  HRESULT h = CoInitialize(NULL);
 h = DirectX::CreateDDSTextureFromFile(md3dDevice, L"Directory.../Textures/grass.dds", nullptr, &mHillTex);
 if(!SUCCEEDED(h))
 {
  MessageBox(0, L"Failed loading texture ", L"Loading Texture", 0);
  return;
 }

  h = DirectX::CreateDDSTextureFromFile(md3dDevice, L"Directory.../Textures/water1.dds", nullptr, &mWavesTex);
  if(!SUCCEEDED(h))
 {
   MessageBox(0, L"Failed loading texture ", L"Loading Texture", 0);
   return;
  }
}


void InitD3D::DrawScene()
{

md3dImmediateContext->OMSetBlendState(RenderStates::normalBlendSt.Get(), 0, 0xffffffff);

/* Other resources for the Hill set here */

md3dImmediateContext->PSSetShaderResources(0, 1, mHillTex.GetAddressOf()); //Hill texture/SRV

/* Draw Hills here */


float blendF[] = {0.0f, 0.0f, 0.0f, 0.0f};
md3dImmediateContext->OMSetBlendState(RenderStates::transBlendSt.Get(), blendF, 0xffffffff);

/* Other resources for the Waves set here */

md3dImmediateContext->PSSetShaderResources(0, 1, mWavesTex.GetAddressOf()); //Wave texture/SRV

/* Draw Waves here */

}
My results
 
90MT7U5.png
 
 
 
Can anyone can help to figure out what I might be missing here? if you need any other part of the code or anything else let me know. Thank you.

Viewing all articles
Browse latest Browse all 17560

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>