有关Direct3D9中Alpha混合的问题

问题描述 投票:0回答:1

我需要使游戏中的对象透明,但是无法正常工作。因此,经过一些研究,我后来发现了如何在Direct3D9中正确进行alpha混合,并实现了一些代码以使对象最终透明。但是,尽管我对此有一个基本的了解,但是我对所有的工作原理还是有些困惑。我做了很多研究,但是我只找到非常模糊的答案,这让我更加困惑。那么,这两行代码的真正含义和作用是什么?

   d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
   d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
c++ directx alpha direct3d alphablending
1个回答
1
投票

[D3D中的Alpha blending根据此方程式完成

颜色= TexelColor x SourceBlend + CurrentPixelColor x DestBlend

您引用的设置将“ SourceBlend”设置为源纹理的Alpha值。 DestBlend的值设置为1减去源纹理的alpha值。这是经典的post-blending设置。这种模式用于“消除锯齿”图像,例如模糊圆的边缘,以使它们看起来不像素化。对于烟雾效果之类的东西或塑料之类的半透明物体,它非常好。为什么必须指定它?好吧,如果将DestBlend设置为始终为1,则会得到一种“重影”效果,就像在玻璃窗格中部分看到反射时一样。与environment map一起使用时,此效果特别好。 Pre-blending也可能有用,但是需要您更改输入的格式。

© www.soinside.com 2019 - 2024. All rights reserved.