游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5638|回复: 12

很奇怪的多线程纹理创建问题。

[复制链接]

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2011-2-17 11:50:00 | 显示全部楼层 |阅读模式
我在一个子线程创建了一个纹理对象,只要把这个纹理指针传个主线程,这个纹理就有可能创建失败。
不管是子线程直接将指针赋给主线程的变量,还是发消息通知主线程去拷贝这个纹理指针,结果都有可能创建失败,非常奇怪。
纹理的创建不支持跨线程使用?[em24]

PS:我是在测试用多线程加载场景块,子线程负责加载当前所需的场景块,主线程负责渲染,因为创建纹理要消耗很长的CPU时间,而场景的卷动必须要非常平滑,不能有丝毫的停顿,我除了用多线程,想不到有其他什么办法了。

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-2-17 17:23:00 | 显示全部楼层

Re:很奇怪的多线程纹理创建问题。

创建设备时加D3DCREATE_MULTITHREADED了没?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2011-2-17 18:29:00 | 显示全部楼层

Re:很奇怪的多线程纹理创建问题。

主线程创建,另一个线程加载和处理数据

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-2-17 23:37:00 | 显示全部楼层

Re: Re:很奇怪的多线程纹理创建问题。

hflong240: Re:很奇怪的多线程纹理创建问题。

创建设备时加D3DCREATE_MULTITHREADED了没?

[em11]

没听说过,只知道硬件顶点运算和软件顶点运算.
这样:?
m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, m_pD3DParam, &m_pD3DDevice);

能解释下D3DCREATE_MULTITHREADED的作用么?另外我想知道这个影不影响效率?

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-2-18 10:20:00 | 显示全部楼层

Re: 很奇怪的多线程纹理创建问题。

不加这个时D3D不是多线程安全的,加了是会影响效率。你可以试试用多线程读取文件,再在主线程创建纹理。

Indicates that the application requests Direct3D to be multithread safe. This makes a Direct3D thread take ownership of its global critical section more frequently, which can degrade performance. If an application processes window messages in one thread while making Direct3D API calls in another, the application must use this flag when creating the device. This window must also be destroyed before unloading d3d9.dll.

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-2-18 11:08:00 | 显示全部楼层

Re: Re: 很奇怪的多线程纹理创建问题。

hflong240: Re: 很奇怪的多线程纹理创建问题。

不加这个时D3D不是多线程安全的,加了是会影响效率。你可以试试用多线程读取文件,再在主线程创建纹理。

...


恩,我刚刚去测试了一下,加了D3DCREATE_MULTITHREADED之后再也不会创建失败了。
请问这个影响的效率可以忽略么?应该不大吧?
我要做一款类似大话西游2的游戏,场景卷动的时候需要实时更新场景块,您看使用这个D3DCREATE_MULTITHREADED没什么问题吧?

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-2-18 14:01:00 | 显示全部楼层

Re:很奇怪的多线程纹理创建问题。

不是很苛求性能的话应该没问题

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-2-18 15:22:00 | 显示全部楼层

Re: Re:很奇怪的多线程纹理创建问题。

hflong240: Re:很奇怪的多线程纹理创建问题。

不是很苛求性能的话应该没问题


有机会测试看看吧,现在手头没有低配置的机器。

16

主题

154

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2011-2-18 17:40:00 | 显示全部楼层

Re:很奇怪的多线程纹理创建问题。

我测试过的,性能损失可以忽略不计.

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-2-18 18:40:00 | 显示全部楼层

Re: Re:很奇怪的多线程纹理创建问题。

LoveDelphi: Re:很奇怪的多线程纹理创建问题。

我测试过的,性能损失可以忽略不计.


恩,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-6 14:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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