在DirectX 9.0中以后台模式加载资源
我用DirectX9.0制作了一个3D游戏 我想使用线程在后台模式下加载资源 这是我的密码 ----------------附件---------------------------在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
#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;
}