목록Programing (133)
공부중
C++14에서 생긴 내용이라고 한다. 코드는 아래와 같다. #include int main() { //C++14 2진수 리터럴 int binary = 0b01010101; //1+4+16+64 == 85 std::cout
// Create synchronization objects and wait until assets have been uploaded to the GPU. { ThrowIfFailed(m_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&m_fence))); m_fenceValue = 1; // Create an event handle to use for frame synchronization. m_fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); if (m_fenceEvent == nullptr) { ThrowIfFailed(HRESULT_FROM_WIN32(GetLastError())); }..
이번 글에서 볼 코드 전문이다. // Create the command list. ThrowIfFailed(m_device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocator.Get(), m_pipelineState.Get(), IID_PPV_ARGS(&m_commandList))); // Command lists are created in the recording state, but there is nothing // to record yet. The main loop expects it to be closed, so close it now. ThrowIfFailed(m_commandList->Close()); // Crea..
이번에 볼 코드는 아래와 같다 // Create the pipeline state, which includes compiling and loading shaders. { ComPtr vertexShader; ComPtr pixelShader; #if defined(_DEBUG) // Enable better shader debugging with the graphics debugging tools. UINT compileFlags = D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION; #else UINT compileFlags = 0; #endif ThrowIfFailed(D3DCompileFromFile(GetAssetFullPath(L"shaders.hlsl").c..
Win32Aplication.cpp 에서 Win32Application::Run() 함수 내부를 살펴보는데 그중 우리가 살펴봐야할것들은 전달인자로 받은 sample에서 호출하는 멤버함수들이다. 먼저 OnInit 함수부터 살펴보면... void D3D12HelloTriangle::OnInit() { LoadPipeline(); LoadAssets(); } 특별히 달라진 내용은 없다. LoadPipeline( )을 보자 void D3D12HelloTriangle::LoadPipeline() { UINT dxgiFactoryFlags = 0; #if defined(_DEBUG) // Enable the debug layer (requires the Graphics Tools "optional feature")..
이번 프로젝트는 실행하면 위와같이 삼각형이 하나 찍혀 나오는것이다. 이전 프로젝트와 비교를 통해서 이전 프로젝트의 코드와 겹치는 부분은 거의 빠르게 넘어갈 예정이다. 먼저 해당 프로그램의 시작점부터 순서대로 가보자.... #include "stdafx.h" #include "D3D12HelloTriangle.h" _Use_decl_annotations_ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { D3D12HelloTriangle sample(1280, 720, L"D3D12 Hello Triangle"); return Win32Application::Run(&sample, hInstance, nCmdShow); } ..
void D3D12HelloWindow::OnRender() { // 장면을 렌더링 하는데 필요한 모든 명령을 기록 PopulateCommandList(); // 명령 리스트 실행. ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() }; m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists); // 프레임 전환 ThrowIfFailed(m_swapChain->Present(1, 0)); WaitForPreviousFrame(); } PopulateCommandList에서 주석에 적힌대로 렌더링시 필요한 모든 명령을 기록했었다. 그리고 명령리스트 배열을 만들어서 m_..
LRESULT CALLBACK Win32Application::WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { DXSample* pSample = reinterpret_cast(GetWindowLongPtr(hWnd, GWLP_USERDATA)); switch (message) { case WM_CREATE: { // Save the DXSample* passed in to CreateWindow. LPCREATESTRUCT pCreateStruct = reinterpret_cast(lParam); SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast(pCreateStruct->lpCre..