summaryrefslogtreecommitdiff
path: root/src/mesh/assimp-master/samples/SimpleTexturedDirectx11/SimpleTexturedDirectx11/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesh/assimp-master/samples/SimpleTexturedDirectx11/SimpleTexturedDirectx11/main.cpp')
-rw-r--r--src/mesh/assimp-master/samples/SimpleTexturedDirectx11/SimpleTexturedDirectx11/main.cpp599
1 files changed, 0 insertions, 599 deletions
diff --git a/src/mesh/assimp-master/samples/SimpleTexturedDirectx11/SimpleTexturedDirectx11/main.cpp b/src/mesh/assimp-master/samples/SimpleTexturedDirectx11/SimpleTexturedDirectx11/main.cpp
deleted file mode 100644
index f7b3502..0000000
--- a/src/mesh/assimp-master/samples/SimpleTexturedDirectx11/SimpleTexturedDirectx11/main.cpp
+++ /dev/null
@@ -1,599 +0,0 @@
-// ---------------------------------------------------------------------------
-// Simple Assimp Directx11 Sample
-// This is a very basic sample and only reads diffuse texture
-// but this can load both embedded textures in fbx and non-embedded textures
-//
-//
-// Replace ourModel->Load(hwnd, dev, devcon, "Models/myModel.fbx") this with your
-// model name (line 480)
-// If your model isn't a fbx with embedded textures make sure your model's
-// textures are in same directory as your model
-//
-//
-// Written by IAS. :)
-// ---------------------------------------------------------------------------
-
-#include <Windows.h>
-#include <shellapi.h>
-#include <stdexcept>
-#include <windowsx.h>
-#include <d3d11_1.h>
-#include <dxgi1_2.h>
-#include <DirectXMath.h>
-#include <d3dcompiler.h>
-#include "ModelLoader.h"
-#include "UTFConverter.h"
-#include "SafeRelease.hpp"
-
-#ifdef _MSC_VER
-#pragma comment (lib, "d3d11.lib")
-#pragma comment (lib, "Dxgi.lib")
-#pragma comment(lib,"d3dcompiler.lib")
-#pragma comment (lib, "dxguid.lib")
-#endif // _MSC_VER
-
-using namespace DirectX;
-using namespace AssimpSamples::SharedCode;
-
-#define VERTEX_SHADER_FILE L"VertexShader.hlsl"
-#define PIXEL_SHADER_FILE L"PixelShader.hlsl"
-
-// ------------------------------------------------------------
-// Structs
-// ------------------------------------------------------------
-struct ConstantBuffer {
- XMMATRIX mWorld;
- XMMATRIX mView;
- XMMATRIX mProjection;
-};
-
-// ------------------------------------------------------------
-// Window Variables
-// ------------------------------------------------------------
-#define SCREEN_WIDTH 800
-#define SCREEN_HEIGHT 600
-
-const char g_szClassName[] = "directxWindowClass";
-
-static std::string g_ModelPath;
-
-UINT width, height;
-HWND g_hwnd = nullptr;
-
-// ------------------------------------------------------------
-// DirectX Variables
-// ------------------------------------------------------------
-D3D_DRIVER_TYPE g_driverType = D3D_DRIVER_TYPE_NULL;
-D3D_FEATURE_LEVEL g_featureLevel = D3D_FEATURE_LEVEL_11_0;
-ID3D11Device *dev = nullptr;
-ID3D11Device1 *dev1 = nullptr;
-ID3D11DeviceContext *devcon = nullptr;
-ID3D11DeviceContext1 *devcon1 = nullptr;
-IDXGISwapChain *swapchain = nullptr;
-IDXGISwapChain1 *swapchain1 = nullptr;
-ID3D11RenderTargetView *backbuffer = nullptr;
-ID3D11VertexShader *pVS = nullptr;
-ID3D11PixelShader *pPS = nullptr;
-ID3D11InputLayout *pLayout = nullptr;
-ID3D11Buffer *pConstantBuffer = nullptr;
-ID3D11Texture2D *g_pDepthStencil = nullptr;
-ID3D11DepthStencilView *g_pDepthStencilView = nullptr;
-ID3D11SamplerState *TexSamplerState = nullptr;
-ID3D11RasterizerState *rasterstate = nullptr;
-ID3D11Debug* d3d11debug = nullptr;
-
-XMMATRIX m_World;
-XMMATRIX m_View;
-XMMATRIX m_Projection;
-
-// ------------------------------------------------------------
-// Function identifiers
-// ------------------------------------------------------------
-
-void InitD3D(HINSTANCE hinstance, HWND hWnd);
-void CleanD3D(void);
-void RenderFrame(void);
-
-void InitPipeline();
-void InitGraphics();
-
-HRESULT CompileShaderFromFile(LPCWSTR pFileName, const D3D_SHADER_MACRO* pDefines, LPCSTR pEntryPoint, LPCSTR pShaderModel, ID3DBlob** ppBytecodeBlob);
-void Throwanerror(LPCSTR errormessage);
-
-// ------------------------------------------------------------
-// Our Model
-// ------------------------------------------------------------
-
-ModelLoader *ourModel = nullptr;
-
-LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg)
- {
- case WM_CLOSE:
- DestroyWindow(hwnd);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
-}
-
-int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/,
- LPWSTR /*lpCmdLine*/, int nCmdShow)
-{
- int argc;
- LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
- if (!argv) {
- MessageBox(nullptr,
- TEXT("An error occurred while reading command line arguments."),
- TEXT("Error!"),
- MB_ICONERROR | MB_OK);
- return EXIT_FAILURE;
- }
-
- // Free memory allocated from CommandLineToArgvW.
- auto free_command_line_allocated_memory = [&argv]() {
- if (argv) {
- LocalFree(argv);
- argv = nullptr;
- }
- };
-
- // Ensure that a model file has been specified.
- if (argc < 2) {
- MessageBox(nullptr,
- TEXT("No model file specified. The program will now close."),
- TEXT("Error!"),
- MB_ICONERROR | MB_OK);
- free_command_line_allocated_memory();
- return EXIT_FAILURE;
- }
-
- // Retrieve the model file path.
- g_ModelPath = UTFConverter(argv[1]).str();
-
- free_command_line_allocated_memory();
-
- WNDCLASSEX wc;
- MSG msg;
-
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = 0;
- wc.lpfnWndProc = WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
- wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
- wc.hbrBackground = nullptr;
- wc.lpszMenuName = nullptr;
- wc.lpszClassName = g_szClassName;
- wc.hIconSm = LoadIcon(nullptr, IDI_APPLICATION);
-
- if (!RegisterClassEx(&wc))
- {
- MessageBox(nullptr, "Window Registration Failed!", "Error!",
- MB_ICONEXCLAMATION | MB_OK);
- return 0;
- }
-
- RECT wr = { 0,0, SCREEN_WIDTH, SCREEN_HEIGHT };
- AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE);
-
- g_hwnd = CreateWindowEx(
- WS_EX_CLIENTEDGE,
- g_szClassName,
- " Simple Textured Directx11 Sample ",
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, wr.right - wr.left, wr.bottom - wr.top,
- nullptr, nullptr, hInstance, nullptr
- );
-
- if (g_hwnd == nullptr)
- {
- MessageBox(nullptr, "Window Creation Failed!", "Error!",
- MB_ICONEXCLAMATION | MB_OK);
- return 0;
- }
-
- ShowWindow(g_hwnd, nCmdShow);
- UpdateWindow(g_hwnd);
-
- width = wr.right - wr.left;
- height = wr.bottom - wr.top;
-
- try {
- InitD3D(hInstance, g_hwnd);
-
- while (true)
- {
-
- if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
-
- if (msg.message == WM_QUIT)
- break;
- }
-
- RenderFrame();
- }
-
- CleanD3D();
- return static_cast<int>(msg.wParam);
- } catch (const std::exception& e) {
- MessageBox(g_hwnd, e.what(), TEXT("Error!"), MB_ICONERROR | MB_OK);
- CleanD3D();
- return EXIT_FAILURE;
- } catch (...) {
- MessageBox(g_hwnd, TEXT("Caught an unknown exception."), TEXT("Error!"), MB_ICONERROR | MB_OK);
- CleanD3D();
- return EXIT_FAILURE;
- }
-}
-
-void InitD3D(HINSTANCE /*hinstance*/, HWND hWnd)
-{
- HRESULT hr;
-
- UINT createDeviceFlags = 0;
-#ifdef _DEBUG
- createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
-#endif
-
- D3D_DRIVER_TYPE driverTypes[] =
- {
- D3D_DRIVER_TYPE_HARDWARE,
- D3D_DRIVER_TYPE_WARP,
- D3D_DRIVER_TYPE_REFERENCE,
- };
- UINT numDriverTypes = ARRAYSIZE(driverTypes);
-
- D3D_FEATURE_LEVEL featureLevels[] =
- {
- D3D_FEATURE_LEVEL_11_1,
- D3D_FEATURE_LEVEL_11_0,
- D3D_FEATURE_LEVEL_10_1,
- D3D_FEATURE_LEVEL_10_0,
- };
- 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, &dev, &g_featureLevel, &devcon);
-
- 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, &dev, &g_featureLevel, &devcon);
- }
-
- if (SUCCEEDED(hr))
- break;
- }
- if (FAILED(hr))
- Throwanerror("Directx Device Creation Failed!");
-
-#if _DEBUG
- hr = dev->QueryInterface(IID_PPV_ARGS(&d3d11debug));
- if (FAILED(hr))
- OutputDebugString(TEXT("Failed to retrieve DirectX 11 debug interface.\n"));
-#endif
-
- UINT m4xMsaaQuality;
- dev->CheckMultisampleQualityLevels(
- DXGI_FORMAT_R8G8B8A8_UNORM, 4, &m4xMsaaQuality);
-
-
- // Obtain DXGI factory from device (since we used nullptr for pAdapter above)
- IDXGIFactory1* dxgiFactory = nullptr;
- {
- IDXGIDevice* dxgiDevice = nullptr;
- hr = dev->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))
- Throwanerror("DXGI Factory couldn't be obtained!");
-
- // Create swap chain
- IDXGIFactory2* dxgiFactory2 = nullptr;
- hr = dxgiFactory->QueryInterface(__uuidof(IDXGIFactory2), reinterpret_cast<void**>(&dxgiFactory2));
- if (dxgiFactory2)
- {
- // DirectX 11.1 or later
- hr = dev->QueryInterface(__uuidof(ID3D11Device1), reinterpret_cast<void**>(&dev1));
- if (SUCCEEDED(hr))
- {
- (void)devcon->QueryInterface(__uuidof(ID3D11DeviceContext1), reinterpret_cast<void**>(&devcon1));
- }
-
- DXGI_SWAP_CHAIN_DESC1 sd;
- ZeroMemory(&sd, sizeof(sd));
- sd.Width = SCREEN_WIDTH;
- sd.Height = SCREEN_HEIGHT;
- sd.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- sd.SampleDesc.Count = 4;
- sd.SampleDesc.Quality = m4xMsaaQuality - 1;
- sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- sd.BufferCount = 1;
-
- hr = dxgiFactory2->CreateSwapChainForHwnd(dev, hWnd, &sd, nullptr, nullptr, &swapchain1);
- if (SUCCEEDED(hr))
- {
- hr = swapchain1->QueryInterface(__uuidof(IDXGISwapChain), reinterpret_cast<void**>(&swapchain));
- }
-
- dxgiFactory2->Release();
- }
- else
- {
- // DirectX 11.0 systems
- DXGI_SWAP_CHAIN_DESC sd;
- ZeroMemory(&sd, sizeof(sd));
- sd.BufferCount = 1;
- sd.BufferDesc.Width = SCREEN_WIDTH;
- sd.BufferDesc.Height = SCREEN_HEIGHT;
- 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 = hWnd;
- sd.SampleDesc.Count = 1;
- sd.SampleDesc.Quality = m4xMsaaQuality - 1;
- sd.Windowed = TRUE;
-
- hr = dxgiFactory->CreateSwapChain(dev, &sd, &swapchain);
- }
-
- // Note this tutorial doesn't handle full-screen swapchains so we block the ALT+ENTER shortcut
- dxgiFactory->MakeWindowAssociation(g_hwnd, DXGI_MWA_NO_ALT_ENTER);
-
- dxgiFactory->Release();
-
- if (FAILED(hr))
- Throwanerror("Swapchain Creation Failed!");
-
- ID3D11Texture2D *pBackBuffer;
- swapchain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
-
- dev->CreateRenderTargetView(pBackBuffer, nullptr, &backbuffer);
- pBackBuffer->Release();
-
- D3D11_TEXTURE2D_DESC descDepth;
- ZeroMemory(&descDepth, sizeof(descDepth));
- descDepth.Width = SCREEN_WIDTH;
- descDepth.Height = SCREEN_HEIGHT;
- descDepth.MipLevels = 1;
- descDepth.ArraySize = 1;
- descDepth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- descDepth.SampleDesc.Count = 4;
- descDepth.SampleDesc.Quality = m4xMsaaQuality - 1;
- descDepth.Usage = D3D11_USAGE_DEFAULT;
- descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL;
- descDepth.CPUAccessFlags = 0;
- descDepth.MiscFlags = 0;
- hr = dev->CreateTexture2D(&descDepth, nullptr, &g_pDepthStencil);
- if (FAILED(hr))
- Throwanerror("Depth Stencil Texture couldn't be created!");
-
- // 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 = dev->CreateDepthStencilView(g_pDepthStencil, 0, &g_pDepthStencilView);
- if (FAILED(hr))
- {
- Throwanerror("Depth Stencil View couldn't be created!");
- }
-
- devcon->OMSetRenderTargets(1, &backbuffer, g_pDepthStencilView);
-
- D3D11_RASTERIZER_DESC rasterDesc;
- rasterDesc.AntialiasedLineEnable = false;
- rasterDesc.CullMode = D3D11_CULL_BACK;
- rasterDesc.DepthBias = 0;
- rasterDesc.DepthBiasClamp = 0.0f;
- rasterDesc.DepthClipEnable = true;
- rasterDesc.FillMode = D3D11_FILL_SOLID;
- rasterDesc.FrontCounterClockwise = false;
- rasterDesc.MultisampleEnable = false;
- rasterDesc.ScissorEnable = false;
- rasterDesc.SlopeScaledDepthBias = 0.0f;
-
- dev->CreateRasterizerState(&rasterDesc, &rasterstate);
- devcon->RSSetState(rasterstate);
-
- D3D11_VIEWPORT viewport;
- ZeroMemory(&viewport, sizeof(D3D11_VIEWPORT));
-
- viewport.TopLeftX = 0;
- viewport.TopLeftY = 0;
- viewport.MinDepth = 0.0f;
- viewport.MaxDepth = 1.0f;
- viewport.Width = SCREEN_WIDTH;
- viewport.Height = SCREEN_HEIGHT;
-
- devcon->RSSetViewports(1, &viewport);
-
- InitPipeline();
- InitGraphics();
-}
-
-void CleanD3D(void)
-{
- if (swapchain)
- swapchain->SetFullscreenState(FALSE, nullptr);
-
- if (ourModel) {
- ourModel->Close();
- delete ourModel;
- ourModel = nullptr;
- }
- SafeRelease(TexSamplerState);
- SafeRelease(pConstantBuffer);
- SafeRelease(pLayout);
- SafeRelease(pVS);
- SafeRelease(pPS);
- SafeRelease(rasterstate);
- SafeRelease(g_pDepthStencilView);
- SafeRelease(g_pDepthStencil);
- SafeRelease(backbuffer);
- SafeRelease(swapchain);
- SafeRelease(swapchain1);
- SafeRelease(devcon1);
- SafeRelease(dev1);
- SafeRelease(devcon);
-#if _DEBUG
- if (d3d11debug) {
- OutputDebugString(TEXT("Dumping DirectX 11 live objects.\n"));
- d3d11debug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL);
- SafeRelease(d3d11debug);
- } else {
- OutputDebugString(TEXT("Unable to dump live objects: no DirectX 11 debug interface available.\n"));
- }
-#endif
- SafeRelease(dev);
-}
-
-void RenderFrame(void)
-{
- static float t = 0.0f;
- static ULONGLONG timeStart = 0;
- ULONGLONG timeCur = GetTickCount64();
- if (timeStart == 0)
- timeStart = timeCur;
- t = (timeCur - timeStart) / 1000.0f;
-
- float clearColor[4] = { 0.0f, 0.2f, 0.4f, 1.0f };
- devcon->ClearRenderTargetView(backbuffer, clearColor);
- devcon->ClearDepthStencilView(g_pDepthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
-
- devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
-
- m_World = XMMatrixRotationY(-t);
-
- ConstantBuffer cb;
- cb.mWorld = XMMatrixTranspose(m_World);
- cb.mView = XMMatrixTranspose(m_View);
- cb.mProjection = XMMatrixTranspose(m_Projection);
- devcon->UpdateSubresource(pConstantBuffer, 0, nullptr, &cb, 0, 0);
-
- devcon->VSSetShader(pVS, 0, 0);
- devcon->VSSetConstantBuffers(0, 1, &pConstantBuffer);
- devcon->PSSetShader(pPS, 0, 0);
- devcon->PSSetSamplers(0, 1, &TexSamplerState);
- ourModel->Draw(devcon);
-
- swapchain->Present(0, 0);
-}
-
-void InitPipeline()
-{
- ID3DBlob *VS, *PS;
- if(FAILED(CompileShaderFromFile(SHADER_PATH VERTEX_SHADER_FILE, 0, "main", "vs_4_0", &VS)))
- Throwanerror(UTFConverter(L"Failed to compile shader from file " VERTEX_SHADER_FILE).c_str());
- if(FAILED(CompileShaderFromFile(SHADER_PATH PIXEL_SHADER_FILE, 0, "main", "ps_4_0", &PS)))
- Throwanerror(UTFConverter(L"Failed to compile shader from file " PIXEL_SHADER_FILE).c_str());
-
- dev->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), nullptr, &pVS);
- dev->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), nullptr, &pPS);
-
- D3D11_INPUT_ELEMENT_DESC ied[] =
- {
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }
- };
-
- dev->CreateInputLayout(ied, 2, VS->GetBufferPointer(), VS->GetBufferSize(), &pLayout);
- devcon->IASetInputLayout(pLayout);
-}
-
-void InitGraphics()
-{
- HRESULT hr;
-
- m_Projection = XMMatrixPerspectiveFovLH(XM_PIDIV4, SCREEN_WIDTH / (float)SCREEN_HEIGHT, 0.01f, 1000.0f);
-
- D3D11_BUFFER_DESC bd;
- ZeroMemory(&bd, sizeof(bd));
-
- bd.Usage = D3D11_USAGE_DEFAULT;
- bd.ByteWidth = sizeof(ConstantBuffer);
- bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
- bd.CPUAccessFlags = 0;
-
- hr = dev->CreateBuffer(&bd, nullptr, &pConstantBuffer);
- if (FAILED(hr))
- Throwanerror("Constant buffer couldn't be created");
-
- D3D11_SAMPLER_DESC sampDesc;
- ZeroMemory(&sampDesc, sizeof(sampDesc));
- sampDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
- sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;
- sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;
- sampDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;
- sampDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
- sampDesc.MinLOD = 0;
- sampDesc.MaxLOD = D3D11_FLOAT32_MAX;
-
- hr = dev->CreateSamplerState(&sampDesc, &TexSamplerState);
- if (FAILED(hr))
- Throwanerror("Texture sampler state couldn't be created");
-
- XMVECTOR Eye = XMVectorSet(0.0f, 5.0f, -300.0f, 0.0f);
- XMVECTOR At = XMVectorSet(0.0f, 100.0f, 0.0f, 0.0f);
- XMVECTOR Up = XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f);
- m_View = XMMatrixLookAtLH(Eye, At, Up);
-
- ourModel = new ModelLoader;
- if (!ourModel->Load(g_hwnd, dev, devcon, g_ModelPath))
- Throwanerror("Model couldn't be loaded");
-}
-
-HRESULT CompileShaderFromFile(LPCWSTR pFileName, const D3D_SHADER_MACRO* pDefines, LPCSTR pEntryPoint, LPCSTR pShaderModel, ID3DBlob** ppBytecodeBlob)
-{
- UINT compileFlags = D3DCOMPILE_ENABLE_STRICTNESS | D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR;
-
-#ifdef _DEBUG
- compileFlags |= D3DCOMPILE_DEBUG;
-#endif
-
- ID3DBlob* pErrorBlob = nullptr;
-
- HRESULT result = D3DCompileFromFile(pFileName, pDefines, D3D_COMPILE_STANDARD_FILE_INCLUDE, pEntryPoint, pShaderModel, compileFlags, 0, ppBytecodeBlob, &pErrorBlob);
- if (FAILED(result))
- {
- if (pErrorBlob != nullptr)
- OutputDebugStringA((LPCSTR)pErrorBlob->GetBufferPointer());
- }
-
- if (pErrorBlob != nullptr)
- pErrorBlob->Release();
-
- return result;
-}
-
-void Throwanerror(LPCSTR errormessage)
-{
- throw std::runtime_error(errormessage);
-}