在DirectX 9.0中以后台模式加载资源

在DirectX 9.0中以后台模式加载资源,directx,directx-9,Directx,Directx 9,我用DirectX9.0制作了一个3D游戏 我想使用线程在后台模式下加载资源 这是我的密码 ----------------附件--------------------------- #define AFXBEGINTHREAD(pfnThreadProc,pParam) AfxBeginThread(pfnThreadProc, pParam, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL) CWinThread* g_pThread = N

我用DirectX9.0制作了一个3D游戏

我想使用线程在后台模式下加载资源

这是我的密码

----------------附件---------------------------

#define AFXBEGINTHREAD(pfnThreadProc,pParam) AfxBeginThread(pfnThreadProc, pParam, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL)

CWinThread* g_pThread  = NULL;

volatile bool g_bExitThread  = true;

CCriticalSection g_csExitThread;
----------------Attakc.cpp---------------------------

#define AFXBEGINTHREAD(pfnThreadProc,pParam) AfxBeginThread(pfnThreadProc, pParam, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL)

CWinThread* g_pThread  = NULL;

volatile bool g_bExitThread  = true;

CCriticalSection g_csExitThread;

然后,当我运行这个项目时,会出现E_OUTOFMEMORY错误

我认为这是关于线程同步的

我没有使用线程加载资源的经验


请帮助我。

初始化d3d时是否使用了D3DCREATE\u多线程标志

UINT ThreadFunc(LPVOID lpParam)
{

while(true)
{

    Sleep(1);

    g_csExitThread.Lock();
    if(true == g_bExitThread)
    {
        g_csExitThread.Unlock();
        break;
    }
    else
    {
        g_csExitThread.Unlock();

        g_pApp->GotoHole(wParamTemp, lParamTemp);
        g_bExitThread = true;
        g_pApp->m_nRenderMode = RENDERMODE_SCENE;
        g_pApp->StartFlyOver();
        g_pApp->m_flyOver.bFirstTime = TRUE;
        g_pApp->m_uiLoadingMenu.m_bStart = FALSE;
        g_pApp->m_uiLoadingMenu.nTime = 0;
        g_pApp->m_uiLoadingMenu.count = 0;
    }
}
return 0L;
}