Can anyone tell me what I'm may be doing wrong. I was trying to render a sprite using a custom blend state that uses a blend factor. I would set the blend factor on the Output Merger and call SpriteBatch->Draw() with custom blend state. However, it
seems that SpriteBatch->Draw()/End() is overwriting the blend factor. I got around this by setting the blend factor via callback. However, it feels hackish...
Any suggestions for a more elegant approach?
Jan 15, 2014 at 6:49 AM
Edited Jan 15, 2014 at 6:53 AM
Instead of using the Begin() parameter blendState, use the setCustomShaders parameter.
Here's an example using a
C++11 lambda expression
(which is just a nicer way of writing an inline function and passing a pointer to it) if your blend state requires custom blend factors or sample mask.
spriteBatch->Begin(SpriteSortMode_Deferred, nullptr, nullptr, nullptr, nullptr, [=]
deviceContext->OMSetBlendState( blendState, factor, mask );
docs under Alpha blending
and Custom render states