游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2986|回复: 3

[求助] 问一个有关 StretchRect() 透明色的问题!

[复制链接]

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2006-4-9 13:50:00 | 显示全部楼层 |阅读模式
定义一个表面:
LPDIRECT3DSURFACE9 surf;

利用下面的函数加载一张图片到surf时:
D3DXLoadSurfaceFromFile( surf, NULL, NULL, sFileName, NULL, D3DX_DEFAULT, ColorKey, NULL );
可以通过ColorKey参数来指定透明色,假设我指定为红色。

获得后备缓冲区:
g_pD3DDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &backsurf );

然后利用下面的函数将surf拷贝到backsurf:
g_pD3DDevice->StretchRect( srcSurf, &sr, backsurf, &dr, D3DTEXF_NONE );

    这时问题出现了:图片的背景色(红色)并没有透明,而是变成了黑色,覆盖了backsurf中原来的图像。

    以前网上好像有人问过类似的问题,但是我没找到最后的解决办法。哪位知道请告诉小弟,不胜感激!

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2006-4-9 17:48:00 | 显示全部楼层

Re:[求助] 问一个有关 StretchRect() 透明色的问题!

StretchRect完全是直接拷贝,不会给你镂空,这个函数不是绘制函数而是内存操作

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
 楼主| 发表于 2006-4-9 23:37:00 | 显示全部楼层

Re:[求助] 问一个有关 StretchRect() 透明色的问题!

原来如此~多谢指教!

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
 楼主| 发表于 2006-4-10 00:15:00 | 显示全部楼层

Re:[求助] 问一个有关 StretchRect() 透明色的问题!

那也就是说D3D中,对于LPDIRECT3DSURFACE9对象来说,没有提供带透明色、Alpha等操作的Blt功能喽?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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