游戏开发论坛

 找回密码
 立即注册
搜索
楼主: D_BOY_JQ

游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

[复制链接]

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-24 01:33:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

其他的部分和我在用DDRAW时一模一样,应该没有效率问题.不明白zjdyhyb兄所指的

"直接利用显卡的各种混合绘制,图片最好都是在显存中,不需要'系统内存'和'CPU'任何介入"

该如何实现?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2005-9-25 10:40:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

画之前有没有调 ID3DXSprite::Begin

DX8是
spr->Begin();
spr->Draw(..);
spr->Draw(..);
spr->Draw(..);
...
spr->End();

DX9是
spr->Begin(flag);
spr->Draw(..);
spr->Draw(..);
spr->Draw(..);
...
spr->End();

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2005-9-25 10:47:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

struct Surface
{
LPD3DXSPRITE spr;
LPDIRECT3DTEXTURE8 tex;
RECT SrcRect;//tex中的RECT
};//每个精灵对象有个Surface指针,每种精灵的Surface只有一个拷贝,在游戏初始化时创建


你的Surface结构里为什么要包含LPD3DXSPRITE spr;呢?一个程序只要一个ID3DXSPRITE的实例,每个Surface保存一个指针多麻烦?还是有别的原因?

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-25 12:03:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

dx8里D3DXFONT的DrawText真是慢啊,我用DX9(August 2005)重写了显示部分,文字显示快了很多!!!但是掉桢现象依然存在.

回楼上,我把我的Surface里的ID3DXSPRITE去掉了,并按你说的"一个程序只有一个D3DXSPRITE的实例",还是没有改善

还有我的spr->Begin(flag);中的flag用的是D3DXSPRITE_ALPHABLEND,DX8只要纹理设透明色就好了,DX9我发现spr->Begin还要用D3DXSPRITE_ALPHABLEND才行.

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-25 12:46:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

Begin和end中尽可能多的Draw,不要打断渲染流水线

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-25 12:49:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

另外,子弹不要实时new,而用静态分配和内存池

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-25 13:23:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

回楼上,我已经改成"Begin和end中尽可能多的Draw"了,速度问题解决了,但却无法显示文字了?

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-25 14:41:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

显示文字前先要end

72

主题

447

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
QQ
发表于 2005-12-29 14:36:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

搂猪你好,不知道你这个问题解决的怎么样了

我通过ID3DXSprite来实现2D绘制,也曾经遇到过类似的问题,最后的元凶是输出文字--为了便于调试,我总是把调试数据都用文字的形式写在游戏的最上一层,运行坐标,速度,帧数。后来调试完成了,去掉文字,结果里面的东西跑的飞快....
还有一点就是SDK的版本,dx9b这一版SDK做2D游戏感觉很好,这里有个帖子讲了原因
http://www.dingge.com/forum/dispbbs.asp?boardID=46&ID=5595&page=1

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-12-30 13:44:00 | 显示全部楼层

Re:游戏里D3DXSPRITE稍微多点就很卡?(附游戏)

放弃sprite,自己重新封装一遍,一了百了。
看我的trinity.gameres.com上的ll3d代码就有,是c#写的,不过是从我的c++代码移植的,d3D部分的使用都是一样的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 02:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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