KoreanFoodie's Study

DirectX 11 2D 게임 프로그래밍 - 2. Direct SDK 연결, Double Buffering 본문

Game Dev/DirectX

DirectX 11 2D 게임 프로그래밍 - 2. Direct SDK 연결, Double Buffering

GoldGiver 2021. 10. 22. 20:37


DirectX 11 2D 게임 프로그래밍 - 2. Direct SDK 연결, Double Buffering

 

이번 시간에는 기본적인 개념과 Graphics를 다루는 기초 개념에 대해 학습한다. Direct SDK연결은 라이브러리 연결과 Graphics.h의 코드 주석을 통해 익힐 수 있다.

알아두어야 할 개념으로는 Double Buffering이 있다.

 

stdafx.h

stdafx.h에 Graphics.h에서 사용할 라이브러리들을 연결해 준다.

#pragma once

//Window
#include <Windows.h>
#include <assert.h>

//DirectX
#include <D3Dcompiler.h>
#include <d3d11.h>
#include <D3DX10math.h>

// 라이브러리를 연결하는 전처리기 코드의 표현
#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "d3dcompiler.lib")

 

Graphics.h

Graphics.h에 어떤 그림을 보여줄 것인지 세부 스펙을 설정한다.

#pragma once

// final : 더는 상속될 수 없다
class Graphics final
{
public:
	Graphics();
	~Graphics();

private:
	// I가 붙은 녀석들 - COM interface(Component Object Model), 내가 만든 게 아니라 가져다 쓰는 것만 가능 (4개)
	// COM Interface는 Description을 가진다!
	ID3D11Device* device = nullptr;
	ID3D11DeviceContext* device_context = nullptr;

	// DXGI : DirectX Graphics Infrastructure : 하부구조, 제조사마다 GPU 구조가 다른데, 프로그래머가 편하게 기능을 사용할 수 있게 해 준다.
	// SwapChain : 여러 DXGI 객체 중 하나. 두 개의 버퍼를 번갈아 가며 렌더링하여 깜빡임, 찢어짐 현상 방지! (더블 버퍼링) -> 이게 사슬처럼 생김
	// 백 버퍼를 관리한다고 보면 편함
	IDXGISwapChain* swap_chain = nullptr;

	// RenderTarget 이 도화지라고 보면 된다. View는 ResourceView라는 의미
	ID3D11RenderTargetView* render_target_view = nullptr;

	// viewport : 어떤 영역에 그릴 것인가. 이미지의 방향이나 위치 등
	D3D11_VIEWPORT viewport = { 0 };

	// {r, g, b, a} 의 구조체. a는 투명도 정보 (각 타입은 float임 -> 그래서 정규화라는 과정을 거친다.)
	// 뭔가 지울 만한 것이 생겼다? -> 같은 색깔로 칠하는 것이 더 빠르다. 그래서 clear라고 이해하자.
	// 내부에서 16진수를 처리하는 녀석이 있다. unsigned int 형식임!
	// 직관적으로 4바이트임을 잘 알 수 있다.
	D3DXCOLOR clear_color = 0xff555566; 
	

	
};

// DirectX - API들의 집합, 그런데 렌더링에 관여를 함
// OpenGL

// GPU

더 자세한 내용이 궁금하시다면 직접 들어보시는 걸 추천드립니다!

Comments