목록Programing/DirectX (26)
공부중
이번 프로젝트는 위와같이 삼각형에 텍스쳐(Texture)를 입히는 프로젝트이다. 역시 이전 프로젝트와 겹치는 부분은 되도록 빠르게 넘어갈 예정이다. 이번에도 해당 프로젝트의 시작인 Main부분 부터 살펴보도록 하자.. #include "stdafx.h" #include "D3D12HelloTexture.h" _Use_decl_annotations_ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { D3D12HelloTexture sample(1280, 720, L"D3D12 Hello Texture"); return Win32Application::Run(&sample, hInstance, nCmdShow); } 특별히 다..
그러고보니 깜빡하고 셰이더 코드를 안적어 놓은것 같다. struct PSInput { float4 position : SV_POSITION; float4 color : COLOR; }; PSInput VSMain(float4 position : POSITION, float4 color : COLOR) { PSInput result; result.position = position; result.color = color; return result; } float4 PSMain(PSInput input) : SV_TARGET { return input.color; } shaders.hlsl 파일의 모든 내용이고 해당 파일 안에 VertexShader와 PixelShader가 같이 있다. 이전글 D3D12He..
// Main message handler for the sample. 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_USERDAT..
// 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); } ..