Directx 要使对象透明吗

Directx 要使对象透明吗,directx,3d,transparent,Directx,3d,Transparent,我正在与directx合作。我正在窗口上显示两个对象。它们相互交叉。我找到了相交的物体 我的问题是- 我希望两个原始对象是透明的,并且生成的相交部分是不透明的,这样相交部分就可以清晰地看到 我发现了一些与透明度有关的问题,但它们与窗口的透明度有关。但我希望对象是透明的。据我所知,DirectX不做任何体积代数来计算两个对象之间的精确相交体积 你能做的就是假装:寻找阴影投射的解决方案。基本上假设摄像机的位置就是光源。假设已确定对象A与对象B相交,则确定哪个对象更靠近摄影机。使用您选择的阴影投射方法

我正在与directx合作。我正在窗口上显示两个对象。它们相互交叉。我找到了相交的物体

我的问题是-
我希望两个原始对象是透明的,并且生成的相交部分是不透明的,这样相交部分就可以清晰地看到


我发现了一些与透明度有关的问题,但它们与窗口的透明度有关。但我希望对象是透明的。

据我所知,DirectX不做任何体积代数来计算两个对象之间的精确相交体积


你能做的就是假装:寻找阴影投射的解决方案。基本上假设摄像机的位置就是光源。假设已确定对象A与对象B相交,则确定哪个对象更靠近摄影机。使用您选择的阴影投射方法,确定距离越远的对象上的哪些网格面将是距离越近的对象的阴影。确定阴影中的网格面后,将其输入渲染管道,但通常会亮起。

据我所知,DirectX不会为您计算两个对象之间的精确相交体积而执行任何体积代数


你能做的就是假装:寻找阴影投射的解决方案。基本上假设摄像机的位置就是光源。假设已确定对象A与对象B相交,则确定哪个对象更靠近摄影机。使用您选择的阴影投射方法,确定距离越远的对象上的哪些网格面将是距离越近的对象的阴影。确定阴影中的网格面后,将其输入渲染管道,但通常会亮起。

通过执行以下操作启用alpha混合:

 pDevice->SetRenderState( D3DRS_ALPHABLENDENABL, TRUE );
将最终参数设置为FALSE以禁用它

您现在可以使用多种不同类型的混合。最简单的是加法alpha混合集,如下所示:

 pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE );
 pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
其他表单可能需要对多边形进行排序才能正确显示

还值得注意的是,如果您也想看到模型的背面,则需要将消隐模式设置为“无”:

pDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );

通过执行以下操作可以启用alpha混合:

 pDevice->SetRenderState( D3DRS_ALPHABLENDENABL, TRUE );
将最终参数设置为FALSE以禁用它

您现在可以使用多种不同类型的混合。最简单的是加法alpha混合集,如下所示:

 pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE );
 pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
其他表单可能需要对多边形进行排序才能正确显示

还值得注意的是,如果您也想看到模型的背面,则需要将消隐模式设置为“无”:

pDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );

你误解了我的问题。我已经有三件物品了。我只是想知道如何使两个物体透明,第三个物体不透明。@Himadri:对不起,我误解了你的问题。最初的问题似乎是要使两个物体的交点可见。我看到你已经更新了问题,表明你已经将交叉点作为第三个对象。你误解了我的问题。我已经有三件物品了。我只是想知道如何使两个物体透明,第三个物体不透明。@Himadri:对不起,我误解了你的问题。最初的问题似乎是要使两个物体的交点可见。我看到您已经更新了问题,以表明您已经将交叉点作为第三个对象。