我有一个 Direct3D 程序,它不是清除每一帧,而是通过 alpha 混合在屏幕上绘制一个黑色方块。渲染后,它会:
renderstate.alphablendenable = true;
renderstate.blendoperation = add;
renderstate.sourceblend = zero;
renderstate.destinationblend = invblendfactor;
renderstate.blendfactor = rgb(8,8,8);
然后它呈现正方形(请原谅伪代码)。这很好用,只是它不能完全清除屏幕。它留下了永久的痕迹,我不知道为什么。适当的混合应该在足够多的帧之后将其完全淡化为黑色,但这会留下灰色的痕迹。任何人都知道 Direct3D 中的原因或更好的淡入淡出方法吗?