首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

游戏中太阳的光圈如何着色啊

2012-04-21 
游戏中太阳的光圈怎么着色啊?想在游戏里添加一个太阳和几个光圈的效果,利用的是广告版的技术,作为光圈的图

游戏中太阳的光圈怎么着色啊?
想在游戏里添加一个太阳和几个光圈的效果,利用的是广告版的技术,作为光圈的图是带有alpha通道的一张图,但是是灰色的,我又想用代码为它着色,那么怎样让它有颜色呢?

我的想法是为这个广告版设定一个材质,像这样:
D3DMATERIAL9 Mat;
float Red = (float)(rand() % 101) / 100.0f;
float Green = (float)(rand() % 101) / 100.0f;
float Blue = (float)(rand() % 101) / 100.0f;
Mat.Diffuse.r = Mat.Ambient.r = Red;
Mat.Diffuse.g = Mat.Ambient.g = Green;
Mat.Diffuse.b = Mat.Ambient.b = Blue;
Mat.Diffuse.a = Mat.Ambient.a = 0.5f;

  m_pDevice->SetTransform(D3DTS_WORLD, &matWorld);
m_pDevice->SetTexture(0, m_pTextures[0]);
m_pDevice->SetMaterial(&Mat);

m_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);

可是这样操作之后这个光圈在渲染出来依然是灰色的没有色彩,和没有设定材质的情况是一样的,那么这是怎么回事呢?
哪位知道的能来解释一下该怎么办呢?非常感谢……

ps:我alpha相关的渲染测试是这样的:
//开启alpha测试和混合
m_pDevice->SetRenderState(D3DRS_ALPHATESTENABLE,true);
m_pDevice->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL);
m_pDevice->SetRenderState(D3DRS_ALPHAREF,20);

m_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
m_pDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
m_pDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);


[解决办法]
diffuse -> 你要的颜色
贴图混合设置为
color OP=D3DTOP_BLENDTEXTUREALPHA
color ARG1=D3DTA_TEXTURE
color ARG2=D3DTA_DIFFUSE

如果效果不对的话,交换arg1和arg2的值

热点排行