gpt4 book ai didi

multithreading - DirectX在其他线程中绘制

转载 作者:行者123 更新时间:2023-12-03 13:17:49 29 4
gpt4 key购买 nike

我有一些Directx代码,我想在第二个线程中运行。
我读了下面的How do I run with a multithreaded device in Direct3D9 ? ,它说只要您不同时从多个线程中使用Directx设备,就可以从其他线程中使用Directx设备,并且我不这样做。而且您必须从同一线程调用CreateDevice和CreateWindow,以及其他一些功能,如TestCooperativeLevel,Reset等

我正在执行以下操作:

  • 在主线程中创建窗口和DirectX设备;
  • 开始第二个线程并在那里进行渲染和更新,基本上是:
  • 更新,
  • BeginScene,
  • 抽签,
  • EndScene,
  • 目前;
  • 另外,我还要从主线程调用TestCooperativeLevel,Reset,pDevice-> Release和pDirect3D-> Release()。

  • 问题

    当我在 Debug模式下对其进行测试时,代码正在工作。但是它没有处于 Release模式,即渲染线程似乎绘制得很好,但是我的主线程似乎被阻塞并且不处理消息,或者有时处理它们很慢。如果仅评论对Present的调用,一切都很好(当然它不会在屏幕上绘制),即主线程响应并且第二个线程也在运行。 Sooo,如果在主线程中创建了窗口和设备,那么从其他线程调用Present时会出现问题吗?当我阅读以下 Multithreading Issues时,这样的限制仅适用于CreateDevice,TestCooperativeLevel和Release。

    最佳答案

    当从与运行消息泵的线程不同的线程中调用Present时,有可能引入死锁。
    更多信息在这里:
    Multithreading and DXGI

    关于multithreading - DirectX在其他线程中绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11289244/

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