aboutsummaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
Diffstat (limited to 'samples')
-rw-r--r--samples/AnselSDKIntegration/AnselSDKIntegration.cpp662
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);
}