我正在尝试渲染两个矩形。我想要一个蓝色的渲染在另一个白色的顶部。这是我的代码:
auto first = new CDrawable( );
auto second = new CDrawable( );
first->Rectangle( { 0.0, 0, 200, 100 }, color_t( { 255, 255, 255, 100 } ) );
second->Rectangle( { 20, 20, 50, 50 }, color_t( { 0, 0, 255, 255 }) );
first
位于(0,0),大小为(200,100)。 second
位于(20,20),大小为(50,50)。然后,我开始绘制帧并如此绘制它们:
DRAW.BeginFrame( );
first->Draw( );
second->Draw( );
DRAW.EndFrame( );
这是从中得到的:
是否应该在second
的顶部绘制矩形first
?当我切换渲染顺序时,首先绘制second
,然后绘制first
,
DRAW.BeginFrame( );
second->Draw( );
first->Draw( );
DRAW.EndFrame( );
呈现:
太好了!它呈现!但现在Alpha混合不起作用。当我将蓝色矩形的透明度降低到100,并将白色矩形的alpha更改为255时,将呈现以下内容:
与其混合白色矩形,不如将其变暗。我认为这样做的原因是它没有任何可混合的,因为它是在白色矩形之前渲染的。如果是这种情况,是否有办法使D3D11像D3D9一样,可以在其中渲染背景对象,然后渲染前景对象,并使它们彼此堆叠?如果没有,还有其他解决方案吗?