在C ++中,如何使用D3D9渲染地球夜晚的城市灯光?

时间:2015-01-20 23:06:27

标签: c++ directx textures

我在地球的夜晚渲染一些美丽的城市灯光所做的是在地球网格的顶部渲染第二个球体网格,然后我用200%的环境设置城市灯光纹理光线使它们变得非常明亮,并使dds纹理文件的alpha通道透明,以便可以在原始地球网格上看到地球纹理。

结果是这个非常好的效果: http://s24.postimg.org/gpqg8a491/screenshot_2.png

这是持有灯光纹理的网格的代码:

        d3ddev->LightEnable(0, FALSE);
        d3ddev->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(200, 200, 200));
        d3ddev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
        d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
        d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTALPHA);
        //d3ddev->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x0000008f);
        d3ddev->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
        d3ddev->SetTexture(0, earth_lights); 

然而,糟糕的是,灯光也会在白天显示,而且非常糟糕。

如何在日间不显示灯光的情况下取得类似效果?纹理混合?着色器?

0 个答案:

没有答案