游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3379|回复: 9

今天写了个多线程的东西出现了问题后来发现在d3device身上

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-9-24 15:03:00 | 显示全部楼层 |阅读模式
根据游戏的加载策略,我的一些资源用线程动态管理加载和释放,发现了问题
说,device 需要创建的时候加上:D3DCREATE_MULTITHREADED


请问这样是否采用线程同步的方式来调用device?效率是否会降低?

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-9-24 16:12:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

当然会

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-9-24 22:35:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

A common source of excessive synchronization in games is the use of D3DCREATE_MULTITHREADED. This flag, while making Direct3D thread-safe for rendering from multiple threads, takes a very conservative approach, resulting in high synchronization overhead. Games should avoid this flag. Instead, architect the engine so that all communication with Direct3D is from a single thread and any communication between threads is handled directly. For more information about designing multi-threaded games, see the article Coding For Multiple Cores on Xbox 360 and Microsoft Windows.

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-9-24 23:13:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

因为要加锁所以会变慢

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-9-25 00:58:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

也没什么太可怕的,服务线程毕竟没有那么频繁的加载和释放对象
单线程同一时间加载和释放大批对象才容易“卡”呢。

我觉得应该问题不大。
我的场景很大,试了一下打开关闭这个参数,似乎感觉不到有什么差异

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-9-25 11:03:00 | 显示全部楼层

Re: Re:今天写了个多线程的东西出现了问题后来发现在d3dev

tonykee: Re:今天写了个多线程的东西出现了问题后来发现在d3device身上

也没什么太可怕的,服务线程毕竟没有那么频繁的加载和释放对象
单线程同一时间加载和释放大批对象才容易“...



并不是这样的

只要你以多线程模式创建设备,那么在渲染的时候,很多操作都是去加锁、解锁,不管你实际上是不是多线程的

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-9-25 13:33:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

动态加载释放的机制感觉很好啊,好像一提到D3DCREATE_MULTITHREADED就如猛虎一样
事实上效率又能下降多少呢?影响究竟是不是那么可怕?能有这方面的数据说明就好了。
我的大地形场景下用和不用,FPS上看不出来有什么差别啊

如果只是为了一点点效率而废弃一些好的思路,唉。。。。

对了,可不可以创建多个device分配给多个线程,来解决这些头疼的事情?有人这样做过吗?

6

主题

471

帖子

1047

积分

金牌会员

Rank: 6Rank: 6

积分
1047
发表于 2007-9-25 15:55:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

比较喜欢多线程,异步处理性能高,而且不会堵塞.
对于客户端lock之间的延迟玩家很少能感觉到,你不用考虑这点.

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-9-25 15:58:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

恩,找到知音了。

6

主题

471

帖子

1047

积分

金牌会员

Rank: 6Rank: 6

积分
1047
发表于 2007-9-25 16:08:00 | 显示全部楼层

Re:今天写了个多线程的东西出现了问题后来发现在d3device

呵呵,intel就是你后台,他们一直在举办多线程比赛.
多核下不用多线程就和当初P166刚出来不用MMX一样浪费机能.
看看里面一些的项目就知道多线程和单线程的运行效率了.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-17 00:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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