diff options
| author | Dmitry Duka <[email protected]> | 2017-03-09 18:50:25 +0300 |
|---|---|---|
| committer | Dmitry Duka <[email protected]> | 2017-03-09 18:50:25 +0300 |
| commit | d2de60d147f5eac91f81d577d7231bbf9119d2d6 (patch) | |
| tree | a6f32d31c739b81301823aecaed3147ca4d42e18 /samples/AnselSDKIntegration/AnselSDKIntegration.cpp | |
| parent | Adding AnselSDKIntegration project demonstrating simplistic Ansel integration (diff) | |
| download | anselsdk-d2de60d147f5eac91f81d577d7231bbf9119d2d6.tar.xz anselsdk-d2de60d147f5eac91f81d577d7231bbf9119d2d6.zip | |
AnselSDKIntegration: reformatting the source
Diffstat (limited to 'samples/AnselSDKIntegration/AnselSDKIntegration.cpp')
| -rw-r--r-- | samples/AnselSDKIntegration/AnselSDKIntegration.cpp | 662 |
1 files changed, 331 insertions, 331 deletions
diff --git a/samples/AnselSDKIntegration/AnselSDKIntegration.cpp b/samples/AnselSDKIntegration/AnselSDKIntegration.cpp index 95074f2..de1f59e 100644 --- a/samples/AnselSDKIntegration/AnselSDKIntegration.cpp +++ b/samples/AnselSDKIntegration/AnselSDKIntegration.cpp @@ -13,8 +13,8 @@ using namespace DirectX; struct SimpleVertex { - XMFLOAT3 Pos; - XMFLOAT3 Normal; + XMFLOAT3 Pos; + XMFLOAT3 Normal; }; @@ -82,253 +82,253 @@ void updateProjectionMatrix() // Entry point int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { - UNREFERENCED_PARAMETER(hPrevInstance); - UNREFERENCED_PARAMETER(lpCmdLine); - - if (FAILED(InitWindow(hInstance, nCmdShow))) - return 0; - - if (FAILED(InitDevice())) - { - CleanupDevice(); - return 0; - } - - // Main message loop - MSG msg = {0}; - while (WM_QUIT != msg.message) - { - if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - else - Render(); - } - - CleanupDevice(); - - return int(msg.wParam); + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + + if (FAILED(InitWindow(hInstance, nCmdShow))) + return 0; + + if (FAILED(InitDevice())) + { + CleanupDevice(); + return 0; + } + + // Main message loop + MSG msg = { 0 }; + while (WM_QUIT != msg.message) + { + if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + else + Render(); + } + + CleanupDevice(); + + return int(msg.wParam); } // Register class and create window HRESULT InitWindow(HINSTANCE hInstance, int nCmdShow) { - // Register class - WNDCLASSEX wcex; - wcex.cbSize = sizeof(WNDCLASSEX); - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; + // Register class + WNDCLASSEX wcex; + wcex.cbSize = sizeof(WNDCLASSEX); + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = WndProc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION); wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); - wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); - wcex.lpszMenuName = nullptr; - wcex.lpszClassName = L"SampleWindowClass"; + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + wcex.lpszMenuName = nullptr; + wcex.lpszClassName = L"SampleWindowClass"; wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_APPLICATION); if (!RegisterClassEx(&wcex)) - return E_FAIL; + return E_FAIL; - // Create window - g_hInst = hInstance; - RECT rc = { 0, 0, 800, 600 }; - AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE); - g_hWnd = CreateWindow(L"SampleWindowClass", L"Sample Ansel SDK Integration", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, - CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, hInstance, nullptr); - if (!g_hWnd) - return E_FAIL; + // Create window + g_hInst = hInstance; + RECT rc = { 0, 0, 800, 600 }; + AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE); + g_hWnd = CreateWindow(L"SampleWindowClass", L"Sample Ansel SDK Integration", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, + CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, hInstance, nullptr); + if (!g_hWnd) + return E_FAIL; - ShowWindow(g_hWnd, nCmdShow); + ShowWindow(g_hWnd, nCmdShow); - return S_OK; + return S_OK; } HRESULT CompileShaderFromFile(WCHAR* szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob** ppBlobOut) { - HRESULT hr = S_OK; + HRESULT hr = S_OK; - ID3DBlob* pErrorBlob = nullptr; - hr = D3DCompileFromFile(szFileName, nullptr, nullptr, szEntryPoint, szShaderModel, + ID3DBlob* pErrorBlob = nullptr; + hr = D3DCompileFromFile(szFileName, nullptr, nullptr, szEntryPoint, szShaderModel, D3DCOMPILE_ENABLE_STRICTNESS, 0, ppBlobOut, &pErrorBlob); - if (FAILED(hr)) - { - if (pErrorBlob) - { - OutputDebugStringA(reinterpret_cast<const char*>(pErrorBlob->GetBufferPointer())); - pErrorBlob->Release(); - } - return hr; - } - if (pErrorBlob) + if (FAILED(hr)) + { + if (pErrorBlob) + { + OutputDebugStringA(reinterpret_cast<const char*>(pErrorBlob->GetBufferPointer())); + pErrorBlob->Release(); + } + return hr; + } + if (pErrorBlob) pErrorBlob->Release(); - return S_OK; + return S_OK; } // Create Direct3D device and swap chain HRESULT InitDevice() { - HRESULT hr = S_OK; + HRESULT hr = S_OK; - RECT rc; - GetClientRect(g_hWnd, &rc); + RECT rc; + GetClientRect(g_hWnd, &rc); g_FrameWidth = rc.right - rc.left; g_FrameHeight = rc.bottom - rc.top; - UINT createDeviceFlags = 0; + UINT createDeviceFlags = 0; #ifdef _DEBUG - createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; + createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; #endif - D3D_DRIVER_TYPE driverTypes[] = - { - D3D_DRIVER_TYPE_HARDWARE, - D3D_DRIVER_TYPE_WARP, - D3D_DRIVER_TYPE_REFERENCE, - }; - const UINT numDriverTypes = ARRAYSIZE(driverTypes); - - D3D_FEATURE_LEVEL featureLevels[] = - { - D3D_FEATURE_LEVEL_11_1, - D3D_FEATURE_LEVEL_11_0, - }; + D3D_DRIVER_TYPE driverTypes[] = + { + D3D_DRIVER_TYPE_HARDWARE, + D3D_DRIVER_TYPE_WARP, + D3D_DRIVER_TYPE_REFERENCE, + }; + const UINT numDriverTypes = ARRAYSIZE(driverTypes); + + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_1, + D3D_FEATURE_LEVEL_11_0, + }; const UINT numFeatureLevels = ARRAYSIZE(featureLevels); - for (UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++) - { - g_driverType = driverTypes[driverTypeIndex]; - hr = D3D11CreateDevice(nullptr, g_driverType, nullptr, createDeviceFlags, featureLevels, numFeatureLevels, - D3D11_SDK_VERSION, &g_pd3dDevice, &g_featureLevel, &g_pImmediateContext); - - if (hr == E_INVALIDARG) - { - // DirectX 11.0 platforms will not recognize D3D_FEATURE_LEVEL_11_1 so we need to retry without it - hr = D3D11CreateDevice(nullptr, g_driverType, nullptr, createDeviceFlags, &featureLevels[1], numFeatureLevels - 1, - D3D11_SDK_VERSION, &g_pd3dDevice, &g_featureLevel, &g_pImmediateContext); - } - - if (SUCCEEDED(hr)) - break; - } - - if (FAILED(hr)) - return hr; - - // Obtain DXGI factory from device (since we used nullptr for pAdapter above) - IDXGIFactory1* dxgiFactory = nullptr; - { - IDXGIDevice* dxgiDevice = nullptr; - hr = g_pd3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice)); - if (SUCCEEDED(hr)) - { - IDXGIAdapter* adapter = nullptr; - hr = dxgiDevice->GetAdapter(&adapter); - if (SUCCEEDED(hr)) - { - hr = adapter->GetParent(__uuidof(IDXGIFactory1), reinterpret_cast<void**>(&dxgiFactory)); - adapter->Release(); - } - dxgiDevice->Release(); - } - } - - if (FAILED(hr)) - return hr; - - // Create swap chain - DXGI_SWAP_CHAIN_DESC sd; - ZeroMemory(&sd, sizeof(sd)); - sd.BufferCount = 1; - sd.BufferDesc.Width = g_FrameWidth; - sd.BufferDesc.Height = g_FrameHeight; - sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; - sd.BufferDesc.RefreshRate.Numerator = 60; - sd.BufferDesc.RefreshRate.Denominator = 1; - sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; - sd.OutputWindow = g_hWnd; - sd.SampleDesc.Count = 1; - sd.SampleDesc.Quality = 0; - sd.Windowed = TRUE; + for (UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++) + { + g_driverType = driverTypes[driverTypeIndex]; + hr = D3D11CreateDevice(nullptr, g_driverType, nullptr, createDeviceFlags, featureLevels, numFeatureLevels, + D3D11_SDK_VERSION, &g_pd3dDevice, &g_featureLevel, &g_pImmediateContext); + + if (hr == E_INVALIDARG) + { + // DirectX 11.0 platforms will not recognize D3D_FEATURE_LEVEL_11_1 so we need to retry without it + hr = D3D11CreateDevice(nullptr, g_driverType, nullptr, createDeviceFlags, &featureLevels[1], numFeatureLevels - 1, + D3D11_SDK_VERSION, &g_pd3dDevice, &g_featureLevel, &g_pImmediateContext); + } + + if (SUCCEEDED(hr)) + break; + } + + if (FAILED(hr)) + return hr; + + // Obtain DXGI factory from device (since we used nullptr for pAdapter above) + IDXGIFactory1* dxgiFactory = nullptr; + { + IDXGIDevice* dxgiDevice = nullptr; + hr = g_pd3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice)); + if (SUCCEEDED(hr)) + { + IDXGIAdapter* adapter = nullptr; + hr = dxgiDevice->GetAdapter(&adapter); + if (SUCCEEDED(hr)) + { + hr = adapter->GetParent(__uuidof(IDXGIFactory1), reinterpret_cast<void**>(&dxgiFactory)); + adapter->Release(); + } + dxgiDevice->Release(); + } + } + + if (FAILED(hr)) + return hr; + + // Create swap chain + DXGI_SWAP_CHAIN_DESC sd; + ZeroMemory(&sd, sizeof(sd)); + sd.BufferCount = 1; + sd.BufferDesc.Width = g_FrameWidth; + sd.BufferDesc.Height = g_FrameHeight; + sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + sd.BufferDesc.RefreshRate.Numerator = 60; + sd.BufferDesc.RefreshRate.Denominator = 1; + sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + sd.OutputWindow = g_hWnd; + sd.SampleDesc.Count = 1; + sd.SampleDesc.Quality = 0; + sd.Windowed = TRUE; sd.OutputWindow = g_hWnd; - hr = dxgiFactory->CreateSwapChain(g_pd3dDevice, &sd, &g_pSwapChain); + hr = dxgiFactory->CreateSwapChain(g_pd3dDevice, &sd, &g_pSwapChain); if (FAILED(hr)) return hr; - dxgiFactory->Release(); + dxgiFactory->Release(); - // Create a render target view - ID3D11Texture2D* pBackBuffer = nullptr; - hr = g_pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&pBackBuffer)); - if (FAILED(hr)) - return hr; + // Create a render target view + ID3D11Texture2D* pBackBuffer = nullptr; + hr = g_pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&pBackBuffer)); + if (FAILED(hr)) + return hr; - hr = g_pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, &g_pRenderTargetView); - pBackBuffer->Release(); - if (FAILED(hr)) - return hr; + hr = g_pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, &g_pRenderTargetView); + pBackBuffer->Release(); + if (FAILED(hr)) + return hr; - // Create depth stencil texture - D3D11_TEXTURE2D_DESC descDepth; + // Create depth stencil texture + D3D11_TEXTURE2D_DESC descDepth; ZeroMemory(&descDepth, sizeof(descDepth)); - descDepth.Width = g_FrameWidth; - descDepth.Height = g_FrameHeight; - descDepth.MipLevels = 1; - descDepth.ArraySize = 1; - descDepth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; - descDepth.SampleDesc.Count = 1; - descDepth.SampleDesc.Quality = 0; - descDepth.Usage = D3D11_USAGE_DEFAULT; - descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL; - descDepth.CPUAccessFlags = 0; - descDepth.MiscFlags = 0; - hr = g_pd3dDevice->CreateTexture2D(&descDepth, nullptr, &g_pDepthStencil); - if (FAILED(hr)) - return hr; - - // Create the depth stencil view - D3D11_DEPTH_STENCIL_VIEW_DESC descDSV; + descDepth.Width = g_FrameWidth; + descDepth.Height = g_FrameHeight; + descDepth.MipLevels = 1; + descDepth.ArraySize = 1; + descDepth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; + descDepth.SampleDesc.Count = 1; + descDepth.SampleDesc.Quality = 0; + descDepth.Usage = D3D11_USAGE_DEFAULT; + descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL; + descDepth.CPUAccessFlags = 0; + descDepth.MiscFlags = 0; + hr = g_pd3dDevice->CreateTexture2D(&descDepth, nullptr, &g_pDepthStencil); + if (FAILED(hr)) + return hr; + + // Create the depth stencil view + D3D11_DEPTH_STENCIL_VIEW_DESC descDSV; ZeroMemory(&descDSV, sizeof(descDSV)); - descDSV.Format = descDepth.Format; - descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; - descDSV.Texture2D.MipSlice = 0; - hr = g_pd3dDevice->CreateDepthStencilView(g_pDepthStencil, &descDSV, &g_pDepthStencilView); - if (FAILED(hr)) - return hr; - - g_pImmediateContext->OMSetRenderTargets(1, &g_pRenderTargetView, g_pDepthStencilView); - - // Setup the viewport - D3D11_VIEWPORT vp; - vp.Width = (FLOAT)g_FrameWidth; - vp.Height = (FLOAT)g_FrameHeight; - vp.MinDepth = 0.0f; - vp.MaxDepth = 1.0f; - vp.TopLeftX = 0; - vp.TopLeftY = 0; - g_pImmediateContext->RSSetViewports(1, &vp); + descDSV.Format = descDepth.Format; + descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; + descDSV.Texture2D.MipSlice = 0; + hr = g_pd3dDevice->CreateDepthStencilView(g_pDepthStencil, &descDSV, &g_pDepthStencilView); + if (FAILED(hr)) + return hr; + + g_pImmediateContext->OMSetRenderTargets(1, &g_pRenderTargetView, g_pDepthStencilView); + + // Setup the viewport + D3D11_VIEWPORT vp; + vp.Width = (FLOAT)g_FrameWidth; + vp.Height = (FLOAT)g_FrameHeight; + vp.MinDepth = 0.0f; + vp.MaxDepth = 1.0f; + vp.TopLeftX = 0; + vp.TopLeftY = 0; + g_pImmediateContext->RSSetViewports(1, &vp); // Compile the vertex shader ID3DBlob* pVSBlob = nullptr; - hr = CompileShaderFromFile(L"Shaders.fx", "VS", "vs_4_0", &pVSBlob); - if (FAILED(hr)) - { - MessageBox(nullptr, - L"The FX file cannot be compiled. Please run this executable from the directory that contains the FX file.", L"Error", MB_OK); - return hr; - } + hr = CompileShaderFromFile(L"Shaders.fx", "VS", "vs_4_0", &pVSBlob); + if (FAILED(hr)) + { + MessageBox(nullptr, + L"The FX file cannot be compiled. Please run this executable from the directory that contains the FX file.", L"Error", MB_OK); + return hr; + } // Create the vertex shader hr = g_pd3dDevice->CreateVertexShader(pVSBlob->GetBufferPointer(), pVSBlob->GetBufferSize(), nullptr, &g_pVertexShader); if (FAILED(hr)) - { + { pVSBlob->Release(); - return hr; + return hr; } hr = CompileShaderFromFile(L"Shaders.fx", "VS_Hud", "vs_4_0", &pVSBlob); @@ -347,40 +347,40 @@ HRESULT InitDevice() return hr; } - // Define the input layout - D3D11_INPUT_ELEMENT_DESC layout[] = - { - { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, - { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + // Define the input layout + D3D11_INPUT_ELEMENT_DESC layout[] = + { + { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, + { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, }; const UINT numElements = ARRAYSIZE(layout); - // Create the input layout + // Create the input layout hr = g_pd3dDevice->CreateInputLayout(layout, numElements, pVSBlob->GetBufferPointer(), - pVSBlob->GetBufferSize(), &g_pVertexLayout); + pVSBlob->GetBufferSize(), &g_pVertexLayout); pVSBlob->Release(); if (FAILED(hr)) - return hr; + return hr; - // Set the input layout - g_pImmediateContext->IASetInputLayout(g_pVertexLayout); + // Set the input layout + g_pImmediateContext->IASetInputLayout(g_pVertexLayout); // Compile the pixel shader ID3DBlob* pPSBlob = nullptr; - hr = CompileShaderFromFile(L"Shaders.fx", "PS", "ps_4_0", &pPSBlob); - if (FAILED(hr)) - { - MessageBox(nullptr, - L"The FX file cannot be compiled. Please run this executable from the directory that contains the FX file.", L"Error", MB_OK); - return hr; - } + hr = CompileShaderFromFile(L"Shaders.fx", "PS", "ps_4_0", &pPSBlob); + if (FAILED(hr)) + { + MessageBox(nullptr, + L"The FX file cannot be compiled. Please run this executable from the directory that contains the FX file.", L"Error", MB_OK); + return hr; + } // Create the pixel shader hr = g_pd3dDevice->CreatePixelShader(pPSBlob->GetBufferPointer(), pPSBlob->GetBufferSize(), nullptr, &g_pPixelShader); pPSBlob->Release(); - if (FAILED(hr)) - return hr; + if (FAILED(hr)) + return hr; hr = CompileShaderFromFile(L"Shaders.fx", "PS_Hud", "ps_4_0", &pPSBlob); if (FAILED(hr)) @@ -396,34 +396,34 @@ HRESULT InitDevice() if (FAILED(hr)) return hr; - // Create vertex buffer - const SimpleVertex vertices[] = - { - { XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, - { XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, - { XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, - { XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, - { XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, - { XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, - { XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, - { XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, - { XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, - { XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, - { XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, - { XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, - { XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, - { XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, - { XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, - { XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, - { XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, - }; + // Create vertex buffer + const SimpleVertex vertices[] = + { + { XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, + { XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, + { XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, + { XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 1.0f, 0.0f) }, + { XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, + { XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, + { XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, + { XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, -1.0f, 0.0f) }, + { XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT3(-1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT3(1.0f, 0.0f, 0.0f) }, + { XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, + { XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, + { XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, + { XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT3(0.0f, 0.0f, -1.0f) }, + { XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, + { XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, + { XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, + { XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT3(0.0f, 0.0f, 1.0f) }, + }; const SimpleVertex hud[] = { @@ -433,18 +433,18 @@ HRESULT InitDevice() { XMFLOAT3(0.9f, -0.95f, 0.0f), XMFLOAT3(3.0f, 0.0f, 0.0f) }, }; - D3D11_BUFFER_DESC bd; + D3D11_BUFFER_DESC bd; ZeroMemory(&bd, sizeof(bd)); - bd.Usage = D3D11_USAGE_DEFAULT; - bd.ByteWidth = sizeof(SimpleVertex) * 24; - bd.BindFlags = D3D11_BIND_VERTEX_BUFFER; + bd.Usage = D3D11_USAGE_DEFAULT; + bd.ByteWidth = sizeof(SimpleVertex) * 24; + bd.BindFlags = D3D11_BIND_VERTEX_BUFFER; bd.CPUAccessFlags = 0; - D3D11_SUBRESOURCE_DATA InitData; + D3D11_SUBRESOURCE_DATA InitData; ZeroMemory(&InitData, sizeof(InitData)); - InitData.pSysMem = vertices; - hr = g_pd3dDevice->CreateBuffer(&bd, &InitData, &g_pVertexBuffer); - if (FAILED(hr)) - return hr; + InitData.pSysMem = vertices; + hr = g_pd3dDevice->CreateBuffer(&bd, &InitData, &g_pVertexBuffer); + if (FAILED(hr)) + return hr; bd.ByteWidth = sizeof(SimpleVertex) * 4; InitData.pSysMem = hud; @@ -452,38 +452,38 @@ HRESULT InitDevice() if (FAILED(hr)) return hr; - // Set vertex buffer - UINT stride = sizeof(SimpleVertex); - UINT offset = 0; - g_pImmediateContext->IASetVertexBuffers(0, 1, &g_pVertexBuffer, &stride, &offset); - - // Create index buffer - const WORD indices[] = - { - 3,1,0, - 2,1,3, - 6,4,5, - 7,4,6, - 11,9,8, - 10,9,11, - 14,12,13, - 15,12,14, - 19,17,16, - 18,17,19, - 22,20,21, - 23,20,22 - }; + // Set vertex buffer + UINT stride = sizeof(SimpleVertex); + UINT offset = 0; + g_pImmediateContext->IASetVertexBuffers(0, 1, &g_pVertexBuffer, &stride, &offset); + + // Create index buffer + const WORD indices[] = + { + 3,1,0, + 2,1,3, + 6,4,5, + 7,4,6, + 11,9,8, + 10,9,11, + 14,12,13, + 15,12,14, + 19,17,16, + 18,17,19, + 22,20,21, + 23,20,22 + }; const WORD hud_indices[] = { 0,1,2,2,1,3 }; bd.Usage = D3D11_USAGE_DEFAULT; - bd.ByteWidth = sizeof(WORD) * 36; - bd.BindFlags = D3D11_BIND_INDEX_BUFFER; + bd.ByteWidth = sizeof(WORD) * 36; + bd.BindFlags = D3D11_BIND_INDEX_BUFFER; bd.CPUAccessFlags = 0; - InitData.pSysMem = indices; - hr = g_pd3dDevice->CreateBuffer(&bd, &InitData, &g_pIndexBuffer); - if (FAILED(hr)) - return hr; + InitData.pSysMem = indices; + hr = g_pd3dDevice->CreateBuffer(&bd, &InitData, &g_pIndexBuffer); + if (FAILED(hr)) + return hr; bd.ByteWidth = sizeof(WORD) * 6; InitData.pSysMem = hud_indices; @@ -491,20 +491,20 @@ HRESULT InitDevice() if (FAILED(hr)) return hr; - // Set index buffer - g_pImmediateContext->IASetIndexBuffer(g_pIndexBuffer, DXGI_FORMAT_R16_UINT, 0); + // Set index buffer + g_pImmediateContext->IASetIndexBuffer(g_pIndexBuffer, DXGI_FORMAT_R16_UINT, 0); - // Set primitive topology - g_pImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + // Set primitive topology + g_pImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); // Create the constant buffer bd.Usage = D3D11_USAGE_DEFAULT; bd.ByteWidth = sizeof(ConstantBuffer); bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER; bd.CPUAccessFlags = 0; - hr = g_pd3dDevice->CreateBuffer(&bd, nullptr, &g_pConstantBuffer); - if (FAILED(hr)) - return hr; + hr = g_pd3dDevice->CreateBuffer(&bd, nullptr, &g_pConstantBuffer); + if (FAILED(hr)) + return hr; D3D11_DEPTH_STENCIL_DESC depthStencilDesc; depthStencilDesc.DepthEnable = FALSE; @@ -518,15 +518,15 @@ HRESULT InitDevice() if (FAILED(hr)) return hr; - // Initialize the world matrices + // Initialize the world matrices g_World = XMMatrixIdentity(); - // Initialize the view matrix - g_View = XMMatrixLookAtLH(XMVectorSet(0.0f, 4.0f, -10.0f, 0.0f), - XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f), + // Initialize the view matrix + g_View = XMMatrixLookAtLH(XMVectorSet(0.0f, 4.0f, -10.0f, 0.0f), + XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f), XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f)); - // Initialize the projection matrix + // Initialize the projection matrix updateProjectionMatrix(); // Configure the Ansel SDK @@ -587,14 +587,14 @@ HRESULT InitDevice() ansel::addUserControl(ui_position_slider); } - return S_OK; + return S_OK; } // Clean up the objects we've created void CleanupDevice() { - if (g_pImmediateContext) g_pImmediateContext->ClearState(); - if (g_pConstantBuffer) g_pConstantBuffer->Release(); + if (g_pImmediateContext) g_pImmediateContext->ClearState(); + if (g_pConstantBuffer) g_pConstantBuffer->Release(); if (g_pVertexBuffer) g_pVertexBuffer->Release(); if (g_pIndexBuffer) g_pIndexBuffer->Release(); if (g_pHudVertexBuffer) g_pVertexBuffer->Release(); @@ -605,35 +605,35 @@ void CleanupDevice() if (g_pHudVertexShader) g_pVertexShader->Release(); if (g_pHudPixelShader) g_pPixelShader->Release(); if (g_pDepthStencil) g_pDepthStencil->Release(); - if (g_pDepthStencilView) g_pDepthStencilView->Release(); - if (g_pRenderTargetView) g_pRenderTargetView->Release(); + if (g_pDepthStencilView) g_pDepthStencilView->Release(); + if (g_pRenderTargetView) g_pRenderTargetView->Release(); if (g_pDepthStencilStateDepthDisable) g_pDepthStencilStateDepthDisable->Release(); if (g_pSwapChain) g_pSwapChain->Release(); - if (g_pImmediateContext) g_pImmediateContext->Release(); + if (g_pImmediateContext) g_pImmediateContext->Release(); if (g_pd3dDevice) g_pd3dDevice->Release(); } // Called every time the application receives a message LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - PAINTSTRUCT ps; - HDC hdc; - - switch (message) - { - case WM_PAINT: - hdc = BeginPaint(hWnd, &ps); - EndPaint(hWnd, &ps); - break; + PAINTSTRUCT ps; + HDC hdc; - case WM_DESTROY: - PostQuitMessage(0); - break; + switch (message) + { + case WM_PAINT: + hdc = BeginPaint(hWnd, &ps); + EndPaint(hWnd, &ps); + break; + + case WM_DESTROY: + PostQuitMessage(0); + break; - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - return 0; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + return 0; } // Render a frame @@ -641,16 +641,16 @@ void Render() { // Simple solution, but not the best one: we would like to run at 100 hz Sleep(10); - // Update our time - static float t = 0.0f; - if (!g_Pause) - { - static ULONGLONG timeStart = 0; - ULONGLONG timeCur = GetTickCount64(); - if (timeStart == 0) - timeStart = timeCur; - t = (timeCur - timeStart) / 1000.0f; - } + // Update our time + static float t = 0.0f; + if (!g_Pause) + { + static ULONGLONG timeStart = 0; + ULONGLONG timeCur = GetTickCount64(); + if (timeStart == 0) + timeStart = timeCur; + t = (timeCur - timeStart) / 1000.0f; + } // Before Ansel SDK integration: // Rotate cube around the origin @@ -686,14 +686,14 @@ void Render() else g_World = XMMatrixRotationY(t); // Rotate cube around the origin - // Clear the back buffer - g_pImmediateContext->ClearRenderTargetView(g_pRenderTargetView, Colors::MidnightBlue); + // Clear the back buffer + g_pImmediateContext->ClearRenderTargetView(g_pRenderTargetView, Colors::MidnightBlue); - // Clear the depth buffer to 1.0 (max depth) - g_pImmediateContext->ClearDepthStencilView(g_pDepthStencilView, D3D11_CLEAR_DEPTH, 1.0f, 0); + // Clear the depth buffer to 1.0 (max depth) + g_pImmediateContext->ClearDepthStencilView(g_pDepthStencilView, D3D11_CLEAR_DEPTH, 1.0f, 0); - // Update matrix variables and lighting variables - ConstantBuffer cb1; + // Update matrix variables and lighting variables + ConstantBuffer cb1; cb1.mWorld = XMMatrixTranspose(g_World); cb1.mView = XMMatrixTranspose(g_View); cb1.mProjection = XMMatrixTranspose(g_Projection); @@ -726,6 +726,6 @@ void Render() g_pImmediateContext->DrawIndexed(6, 0, 0); } - // Present our back buffer to our front buffer - g_pSwapChain->Present(0, 0); + // Present our back buffer to our front buffer + g_pSwapChain->Present(0, 0); } |