|
|
LPDIRECT3DTEXTURE9 g_pRenderTexture; // 渲染到纹理
LPDIRECT3DSURFACE9 g_pRenderSurface; // 渲染到贴图的表面
LPDIRECT3DSURFACE9 pRenderTarget; // 暂存表面
LPDIRECT3DTEXTURE9 g_pTexture1; // 从硬盘加载的图片1 alpha值为完全不透明的1.0 tga格式
LPDIRECT3DTEXTURE9 g_pTexture2; // 从硬盘加载的图片2 alpha值为半透明的0.5 tga格式
LPDIRECT3DTEXTURE9 g_pTexture3; // 从硬盘加载的图片3 alpha值为完全不透明的1.0 tga格式
//**************
//////渲染
//****************
m_pIDirect3DDevice->GetRenderTarget(0 , &pRenderTarget); // 保存渲染表面
m_pIDirect3DDevice->SetRenderTarget(0 , g_pRenderSurface); // 设置贴图表面
m_pIDirect3DDevice->BeginScene(); //开始渲染
pD3DXSprite->Begin(D3DXSPRITE_ALPHABLEND); //渲染精灵
pD3DXSprite->Draw(g_pTexture1,NULL,NULL,NULL,D3DCOLOR_RGBA(255,255,255,255));
pD3DXSprite->Draw(g_pTexture2,NULL,NULL,NULL,D3DCOLOR_RGBA(255,255,255,255));
pD3DXSprite->End();
//
m_pIDirect3DDevice->SetRenderTarget(0 , &pRenderTarget); // 还原贴图表面
m_pIDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_XRGB(0, 0, 0),
1.0f, 0);
pD3DXSprite->Begin(D3DXSPRITE_ALPHABLEND); //渲染精灵
//渲染从硬盘中加载的第3张图片
pD3DXSprite->Draw(g_pTexture3,NULL,NULL,NULL,D3DCOLOR_RGBA(255,255,255,255));
//渲染到创建纹理
pD3DXSprite->Draw(g_pRenderTexture,NULL,NULL,NULL,D3DCOLOR_RGBA(255,255,255,255));
pD3DXSprite->End();
m_pIDirect3DDevice->EndScene();
//********************
渲染出来发现g_pTexture2(半透明的图片)所在区域居然会与g_pTexture3的颜色混合输出.
g_pTexture2的下边不是有不透明的g_pTexture1吗,怎么会和g_pTexture3混合输出呢?
|
|