"SharpDX.Direct3D11.DeviceContext.OutputMerger.Blendstate"를 작동 시키려고합니다. 이 없으면 멋진 장면 (Spaceshooter의 경우 텍스처가있는 다각형)이 생깁니다. 저는 지난 3 년 동안 OpenGL Graphics를 해왔습니다. OpenGL 에서처럼 간단 할 것 같습니다. Blending을 활성화하고 올바른 Dst/Src 모드를 설정하십시오. 그러나 새로운 BlendStateDescription을 설정하면 "RenderTarget [x] .IsBlendEnabled"가 "false"로 설정되어 있어도 모든 출력은 검은 색입니다. 튜토리얼이나 무언가를 찾아서 찾았지만 효과를 사용했습니다. 그래서 내 질문은 간단합니다 - SharpDX에서 기술과 효과를 사용해야합니까? 간단한 블렌딩을 위해 남은 다른 방법은 없습니까? 단지 할 경우에도,SharpDX : BlendState 사용
mBackBuffer = Texture2D.FromSwapChain<Texture2D>(mSwapChain, 0);
mRenderView = new RenderTargetView(mDevice, mBackBuffer);
mContext.OutputMerger.SetTargets(mDepthStencilView, mRenderView);
mContext.OutputMerger.SetBlendState(new BlendState(mDevice, new BlendStateDescription()), new SharpDX.Color4(1.0f), -1);
mContext.OutputMerger.BlendState.Description.RenderTarget[0].IsBlendEnabled = true;
mContext.OutputMerger.BlendState.Description.RenderTarget[0].SourceBlend = BlendOption.SourceAlpha;
mContext.OutputMerger.BlendState.Description.RenderTarget[0].DestinationBlend = BlendOption.InverseSourceAlpha;
mContext.OutputMerger.BlendState.Description.RenderTarget[0].BlendOperation = BlendOperation.Add;
mContext.OutputMerger.BlendState.Description.RenderTarget[0].SourceAlphaBlend = BlendOption.One;
mContext.OutputMerger.BlendState.Description.RenderTarget[0].DestinationAlphaBlend = BlendOption.Zero;
mContext.OutputMerger.BlendState.Description.RenderTarget[0].AlphaBlendOperation = BlendOperation.Add;
mContext.OutputMerger.BlendState.Description.RenderTarget[0].RenderTargetWriteMask = ColorWriteMaskFlags.All;
그리고 :
mContext.OutputMerger.SetBlendState(new BlendState(mDevice, new BlendStateDescription()), new SharpDX.Color4(1.0f), -1);
mContext.OutputMerger.BlendState.Description.RenderTarget[0].IsBlendEnabled = false;
OUPUT가 모두 검은 색입니다 ... 어쩌면 난 그냥 픽셀에 뭔가를 변경해야
이
내가 무슨 짓을했는지입니다 셰이더?
좋습니다. 감사합니다. 잘 알려줘서 고맙습니다. 그래서 내 필요에 대한 여러 블렌드 모드를 만들어야합니다. 그리고 네, 결국 리소스를 처분 할 수 있도록 저장하고 있습니다 :) – lunatix
마지막으로, 나는 효과 파일로 작업 할 수있었습니다! 답변 주셔서 감사합니다 :) – lunatix