D3DXSPRITE怎么淡入淡出啊?

second2nd 2011-02-21 11:13:29
淡入淡出是靠透明度来调节的吧?

render代码

//-----------------------------------------------------------------------------
// Name: Render()
// Desc: Draws the scene
//-----------------------------------------------------------------------------
void Render()
{
// Clear the backbuffer to a blue color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); //打开alpha混合

g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); //设置alpha混合方式

g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

RECT rct = {0,0,512,512};
// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
if ( SUCCEEDED( g_pSprite->Begin(D3DXSPRITE_ALPHABLEND) ) )
{
g_pSprite->Draw(g_pTexture, &rct, NULL, &D3DXVECTOR3(100,100,0), 0x2FFFFFFF);
g_pSprite->End();
}
if ( SUCCEEDED( g_pSprite2->Begin(D3DXSPRITE_ALPHABLEND) ) )
{
g_pSprite2->Draw(g_pTexture2, &rct, NULL, &D3DXVECTOR3(0,0,1), 0x2FFFFFFF);
g_pSprite2->End();
}
// End the scene
g_pd3dDevice->EndScene();
}
// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}

我开了深度缓冲,可以通过Z来调节哪张图显示在上面,那哪图显示在下面。我想给精灵做一个透明度,思路就是ID3DXSPRITE::draw(*pTexture,&rect,&D3DVECTOR3(center),&D3DVECTOR3(position),color0xffffffff) 最后的这个颜色的参数,我把alpha换成2f让精灵透明。。就是0x2fffffff,也确实图片有透明的感觉的了,但实质还是不透明的啊,半透明的话,那么应该能够透过上层图片看到底下图片才对啊?怎么能让他真的[来源:GameRes.com]透明,能透过上层的半透明的图片精灵,看到下层的图片精灵?

...全文
101 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧