游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5647|回复: 11

多线程调用CreateTexture失败,如何解决

[复制链接]

13

主题

52

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2008-4-24 17:43:00 | 显示全部楼层 |阅读模式
我在用多线程调用CreateTexture,很容易会失败,一般是读取资源比较多时,
返回E_OUTOFMEMORY Direct3D could not allocate sufficient memory to complete the call.

原来用单线程似乎不会失败,但是读资源太慢了,
有什么好方法解决,

10

主题

173

帖子

178

积分

注册会员

Rank: 2

积分
178
发表于 2008-4-24 19:12:00 | 显示全部楼层

Re:多线程调用CreateTexture失败,如何解决

用其它线程读取资源,用主线程和3D设备打交道。
也就是说其它线程负责IO操作,而把CreateTexture放到主线程中去。

13

主题

52

帖子

81

积分

注册会员

Rank: 2

积分
81
 楼主| 发表于 2008-4-25 09:11:00 | 显示全部楼层

Re:多线程调用CreateTexture失败,如何解决

如果不用主线程做CreateTexture,
还有其他方法吗

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2008-4-25 17:24:00 | 显示全部楼层

Re:多线程调用CreateTexture失败,如何解决

似乎不行。我记得sdk上说过不要再多线程里面调用Create系列。

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2008-4-25 20:43:00 | 显示全部楼层

Re:多线程调用CreateTexture失败,如何解决

创建设备的时候使用D3DCREATE_MULTITHREADED

10

主题

173

帖子

178

积分

注册会员

Rank: 2

积分
178
发表于 2008-4-25 21:47:00 | 显示全部楼层

Re: 多线程调用CreateTexture失败,如何解决

尽量避免去使用D3DCREATE_MULTITHREADED,原因有2
一、毕竟瓶颈是在IO,而不是在3D资源的创建上
二、D3DCREATE_MULTITHREADED会降低性能。如果初衷是想提高效率的话。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2008-4-26 00:06:00 | 显示全部楼层

Re: Re:多线程调用CreateTexture失败,如何解决

cool1717: Re:多线程调用CreateTexture失败,如何解决

如果不用主线程做CreateTexture,
还有其他方法吗

CreateDevice 制定类型为 D3DDEVTYPE_NULLREF ,就可以在不同线程调用 CreateTexture。不过创建的纹理似乎不能被不同的设备使用。
补充一点:指定 D3DDEVTYPE_NULLREF 的设备一定要在 CreateTexture 的线程中创建。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2008-4-26 00:18:00 | 显示全部楼层

Re:多线程调用CreateTexture失败,如何解决

为什么要非要在多线程创建TEXTURE呢,频繁的读写文件速度会很慢的
应该在初始化的时候把文件的信息放到内存才对吧

13

主题

52

帖子

81

积分

注册会员

Rank: 2

积分
81
 楼主| 发表于 2008-4-28 17:24:00 | 显示全部楼层

Re: Re:多线程调用CreateTexture失败,如何解决

无名剑: Re:多线程调用CreateTexture失败,如何解决

为什么要非要在多线程创建TEXTURE呢,频繁的读写文件速度会很慢的
应该在初始化的时候把文件的信息放到内存才对吧


你这个对资源比较少的小游戏还行,大型游戏就不行了。

13

主题

52

帖子

81

积分

注册会员

Rank: 2

积分
81
 楼主| 发表于 2008-4-28 17:25:00 | 显示全部楼层

Re:多线程调用CreateTexture失败,如何解决

大家知道比较通常的做法是什么吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 14:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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