gpt4 book ai didi

c++ - D3D9 多线程创建纹理/顶点缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:38 28 4
gpt4 key购买 nike

我想在我的游戏中有第二个线程来加载/卸载纹理。我可以使用在主线程上创建的相同 d3d9 设备在第二个线程中加载纹理吗?从文件创建纹理将花费超过 1 帧的时间,因此我可能需要在另一个线程渲染场景时创建纹理。我当然不会使用正在加载的纹理。关于顶点缓冲区的相同问题。我可以在另一个线程渲染某些东西时创建它们并填充数据吗?

最佳答案

您需要在创 build 备时传递 D3DCREATE_MULTITHREADED 标志,以便能够从第二个线程创建 D3D 资源。这将在所有 DX API 调用上产生非常小的运行时开销,因为它会获取锁。

但是,您也可以使用第二个线程从磁盘中流式传输原始数据,并让主线程从中创建 D3D 资源。这会给您带来同步逻辑的负担,成本可能相同。

多线程 D3D API 的使用变得越来越普遍,事实上,上述标志是 D3D11 的默认设置(即,您必须告诉它不是线程安全的,而不是请求线程安全)。

关于c++ - D3D9 多线程创建纹理/顶点缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343624/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com