游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1726|回复: 0

请教 渲染到纹理时alpha混合的问题

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2008-3-24 20:23:00 | 显示全部楼层 |阅读模式
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混合输出呢?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 15:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表