0
调用回调函数DXUTCreateDevice()错误正在从DXUTgui.cpp断言检查返回。断言说,首先调用CDXUTDialog :: Init(),但我应该把它放在WinMain()? L“先修复调用CDXUTDialog :: Init(),请参阅注释了解详细信息。”
调用回调函数DXUTCreateDevice()错误正在从DXUTgui.cpp断言检查返回。断言说,首先调用CDXUTDialog :: Init(),但我应该把它放在WinMain()? L“先修复调用CDXUTDialog :: Init(),请参阅注释了解详细信息。”
比较您DXUT客户端代码的EmptyProject和SimpleSample内容--assuming您正在使用的DXUT11从GitHub。
的典型模式是创建一个全局变量CDXUTDialogResourceManager
,然后调用CDXUTDialog::Init
从InitApp
你DXUTCreateDevice
int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
// Enable run-time memory check for debug builds.
#ifdef _DEBUG
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
// DXUT will create and use the best device
// that is available on the system depending on which D3D callbacks are set below
// Set DXUT callbacks
DXUTSetCallbackMsgProc(MsgProc);
DXUTSetCallbackKeyboard(OnKeyboard);
DXUTSetCallbackFrameMove(OnFrameMove);
DXUTSetCallbackDeviceChanging(ModifyDeviceSettings);
DXUTSetCallbackD3D11DeviceAcceptable(IsD3D11DeviceAcceptable);
DXUTSetCallbackD3D11DeviceCreated(OnD3D11CreateDevice);
DXUTSetCallbackD3D11SwapChainResized(OnD3D11ResizedSwapChain);
DXUTSetCallbackD3D11SwapChainReleasing(OnD3D11ReleasingSwapChain);
DXUTSetCallbackD3D11DeviceDestroyed(OnD3D11DestroyDevice);
DXUTSetCallbackD3D11FrameRender(OnD3D11FrameRender);
InitApp(); <-- // THIS IS WHERE DXUT GUI WIDGETS GET INITIALIZED, BEFORE THE WINDOW OR DEVICE IS CREATED
DXUTInit(true, true, nullptr); // Parse the command line, show msgboxes on error, no extra command line params
DXUTSetCursorSettings(true, true);
DXUTCreateWindow(L"SimpleSample11");
// Only require 10-level hardware, change to D3D_FEATURE_LEVEL_11_0 to require 11-class hardware
// Switch to D3D_FEATURE_LEVEL_9_x for 10level9 hardware
DXUTCreateDevice(D3D_FEATURE_LEVEL_10_0, true, 800, 600);
DXUTMainLoop(); // Enter into the DXUT render loop
return DXUTGetExitCode();
}
得到一个回调之前开始使用DXUT一个新的项目,不推荐。它仅用于维护对DXUT具有依赖性的现有代码,同时消除对D3DX11和其他旧版DirectX SDK内容的依赖性。绝大多数DXUT的功能对于大多数应用程序来说都是完全过度的。这也是越野车,并且仅用于样本。
Yeap现在我肯定不会使用空的,并使用现有解决方案的最小值,因为已经配置了解决方案,而我只需要实现逻辑和着色器:)。我知道这仅仅是为了演示,我使用它是因为窗口创建和所有的Win API功能,如果我不使用它,我必须实现与我自己的GUI功能,我不想浪费时间。但是随着我对Direct3D的深入研究,我意识到不久或之后我必须实现我的UI。 –