목록Programing/DirectX (26)
공부중
DirectX SDK 2010(June)을 사용하여 컴파일 에러가 아래와 같이 발생했을때의 문재 해결방법 DXGI_JPEG_AC_HUFFMAN_TABLE DXGI_JPEG_DC_HUFFMAN_TABLE DXGI_JPEG_QUANTIZATION_TABLE 위의 구문 오류가 발생했을때의 해결 방법은 아래와 같다. '프로젝트 옵션'에서 '포함 디렉터리'에 '$(WindowsSDK_IncludePath)'를 맨 위에 추가해주면 해결된다. 그냥 추가만 하면 안된다. $(DXSDK_DIR)Include 보다 위에 존재해야 한다.
이전글에서도 썻었던 내용인데... 2018/04/11 - [Programing/DirectX] - [DirectX12]Hello Wolrd Sample - D3D12HelloWindow - 5 저 글에서 중간에 swap chain에 대해서 설명한 내용이 있는데 저 내용 그대로다...(글의 내용이 많이 겹칠것이다) 더블 버퍼링 미적용(시작시간 6초) 더블 버퍼링 적용(시작시간 8초) 결론부터 말하자면 위의 영상처럼 화면을 그리는데 깜박이는 현상을 없애기 위해서 더블버퍼링이라는것을 필요로 하게됬다. 화면의 하나의 프레임 전체를 화면에 바로 출력하는것이 아닌 버퍼를 두어서 버퍼에 그림을 그린다 (back buffer) 이 버퍼에 그린 그림을 다 그렸으면 화면에 출력하고 다음 버퍼에 다음에 출력할 프레임 전체를..
// Close the command list and execute it to begin the initial GPU setup. ThrowIfFailed(m_commandList->Close()); ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() }; m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists); // Create synchronization objects and wait until assets have been uploaded to the GPU. { ThrowIfFailed(m_device->CreateFence(0, D3D12_FENCE_FLAG..
// Note: ComPtr은 CPU 개체이지만 이 리소스는 이를 참조하는 명령 목록이 // GPU에서 실행을 마칠 때까지 범위에 있어야합니다. // 자원이 조기에 파괴되지 않도록 // 이 방법의 끝에서 GPU를 플러시합니다. ComPtr textureUploadHeap; // Create the texture. { // Describe and create a Texture2D. D3D12_RESOURCE_DESC textureDesc = {}; textureDesc.MipLevels = 1; textureDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; textureDesc.Width = TextureWidth; textureDesc.Height = TextureHeight; ..
// 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))); // Create the vertex buffer. { // Define the geometry for a triangle. Vertex triangleVertices[] = { { { 0.0f, 0.25f * m_aspectRatio, 0.0f }, { 0.5f, 0.0f } }, { { 0.25f, -0.25f * m_aspectRatio, 0.0f }, { 1.0f, 1...
// 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_str(), nullptr, ..
void D3D12HelloTexture::OnInit() { LoadPipeline(); LoadAssets(); } 저번 글에서는 LoadPipeline에 관해서 적었다. 이번 글에서는 LoadAssets안을 살펴보도록 하자. // Load the sample assets. void D3D12HelloTexture::LoadAssets() { // Create the root signature. { D3D12_FEATURE_DATA_ROOT_SIGNATURE featureData = {}; // This is the highest version the sample supports. //If CheckFeatureSupport succeeds, the HighestVersion returned will..
저번 글에서는 크게 바뀐점은 없었고 컬러값을 직접 지정해준것에 비해서 Texture의 값을 가지고 색상을 출력해 주기 때문에 이에 따른 값을 전달해주기 위한 Vertex의 color을 uv로 변경 및 텍스쳐 데이터를 저장하기위한 멤버 변수 선언 등등을 보았다. 이제 Init할때 어떤점이 다른지 살펴보자. 저번 글에서 적었다 싶이 pSample->OnInit( );의 내부를 살펴볼 예정이다. void D3D12HelloTexture::OnInit() { LoadPipeline(); LoadAssets(); } 저번 프로젝트와 다르지 않게 LoadPipeline과 LoadAssets를 콜해주고 끝난다. 먼저 LoadPipeline을 살펴보자. // Load the rendering pipeline depen..