2016-02-21 1 views

ответ

0

Сравните код 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 - полный избыток для большинства приложений. Это также багги и действительно предназначено только для образцов.

+0

Yeap сейчас я уверен, что не использую пустой и не использую существующее решение минимум из-за того, что уже настроено решение, и что я должен делать, просто реализуя логику и шейдеры :). Я знаю, что для просто презентации я использую его из-за создания окна и всех функций Win api, если я его не использую, мне нужно реализовать функции GUI с собой, и я не хочу тратить время. Но поскольку я собираюсь глубже в Direct3D, я понимаю, что скоро или позже я должен реализовать свой интерфейс. –

Смежные вопросы