Directx Direct3D 9中的Alpha混合。有些原语是';纹理背后的t渲染
我在游戏中启用了alpha混合,但一些基本体没有在透明纹理后面渲染 以下是我的渲染状态:Directx Direct3D 9中的Alpha混合。有些原语是';纹理背后的t渲染,directx,alpha,direct3d,blending,Directx,Alpha,Direct3d,Blending,我在游戏中启用了alpha混合,但一些基本体没有在透明纹理后面渲染 以下是我的渲染状态: d3ddevice->SetRenderState(D3DRS_LIGHTING, true); d3ddevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW); d3ddevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); d3ddevice->SetRenderState(D3DRS_
d3ddevice->SetRenderState(D3DRS_LIGHTING, true);
d3ddevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);
d3ddevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
d3ddevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(15, 15, 15));
d3ddevice->SetRenderState(D3DRS_NORMALIZENORMALS, TRUE);
d3ddevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
d3ddevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
d3ddevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
d3ddevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
d3ddevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
d3ddevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
d3ddevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
d3ddevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
d3ddevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE );
d3ddevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_NONE);
d3ddevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_NONE);
d3ddevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
这里发生的情况是,透明对象仍然会写入深度缓冲区,因此会阻止位于它们后面的对象被渲染。有(至少)两种方法可以解决这个问题
discard
命令放弃所有透明片段我不明白你的截图。透明纹理在哪里?如果要在透明物体后面绘制对象,必须先绘制它们。否则,深度测试将丢弃这些像素。