游戏开发论坛

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

请教新的版本的ID3DXSprite问题~

[复制链接]

12

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2006-5-22 20:05:00 | 显示全部楼层 |阅读模式
最近把以前的代码翻出来,用新的D3D9 SDK重新编译,发现ID3DXSprite接口变化了不少,修改之后发现原来的代码运行起来有问题了。

原来为了显示类似火焰的效果,我在Draw之前用
pDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
pDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
这两个调用实现饱和混合;
但同时有的纹理要实现淡入淡出的效果,于是在有的Draw之前我又用了       
pDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
来实现半透明效果。

在一次Begin和End之间我都来回用了很多次这两种方法来显示多个纹理。

现在却发现一次Begin和End之间却只能要么全是半透明,要么全是饱和混合。
而且似乎是End前最后一次设置在起作用。中间的设置全都不起作用。。
难道SetRenderState不能随便用了?
貌似新版的Begin调用自动设置了很多RenderState(以前的SDK文档里面好像没写设置了哪些)。

请问有人遇见这种问题么?虽然不是什么大问题,但总归不爽,毕竟Sprite做GUI还是很方便的。。

11

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2006-5-23 01:25:00 | 显示全部楼层

Re:请教新的版本的ID3DXSprite问题~

根据我自己的经验,ID3DXSprite问题很多,尤其在做透明时,虽然方便,最后我都改了,都是直接加载四个顶点构成方形,设置图片,写一次后以后都能用,有兴趣看看我的呕心沥血之作!
   http://appleldz.googlepages.com/home

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
发表于 2006-5-23 22:01:00 | 显示全部楼层

Re:请教新的版本的ID3DXSprite问题~

ID3DXSprite改了很多
xsprite->Begin(D3DXSPRITE_BILLBOARD|D3DXSPRITE_ALPHABLEND);
       
        xsprite->Draw(dtexture,NULL,NULL,NULL,0xFFFFFFFF);
        xsprite->End();

D3DXSPRITE_BILLBOARD是广告牌
D3DXSPRITE_ALPHABLEND是包含了:
pDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
并设D3DRS_ALPHATESTENABLE为true

72

主题

447

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
QQ
发表于 2006-5-26 10:30:00 | 显示全部楼层

Re:请教新的版本的ID3DXSprite问题~

这里讨论ID3DXSprite的比较多
http://www.dingge.com/forum/index.asp?boardid=46
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 14:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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