[DirectX11] 1. 기본 설정

유기태·2023년 11월 29일
0

DirectX강의 필기

목록 보기
2/14

1. 설정

client
출력 디렉토리 설정
디버깅 폴더 작업 디렉토리 바꾸기(bin 폴더로)
External
Engine 프로젝트
Library
출력 디렉토리 libraray에 출력하게끔
Include
header 파일들은 include 쪽으로
bat 파일로 실행하게끔
(exclusive_list 만들기 bat 파일 만들고 빌드 이벤트 설정)

대상 이름 바꾸기
종속성 체크

영상 안보고 해보기! 성공!
kernel32.lib error는 라이브러리 디렉터리 설정을 유심히 확인해보자!

2-1. Singleton 설정

atexit(함수포인터) 함수

  • 프로그램 정상 종료시 실행할 함수를 레코드(저장)해놓는 함수

singleton class를 선언받는 자식 객체는 생성자를 private으로 막아놔 부모 객체(singleton)에 함수로만 접근할 수 있도록 만든다.

이를 위해 singleton 클래스를 friend class로 설정함


template<typename T>
class Singleton
{
private:
	static T* m_This;

public:
	static T* GetInst()
	{
		if (m_This == nullptr)
		{
			m_This = new T();
		}
		return m_This;
	}

	static void Destroy()
	{
		if (m_This != nullptr)
		{
			delete m_This;
			m_This = nullptr;
		}
	}
	
public:
	Singleton()
	{
		typedef void(*FUNC_TYPE)(void);
		// 메인 함수 종료시 호출함
		atexit((FUNC_TYPE)Singleton::Destroy());
	}
	~Singleton()
	{

	}
};

template<typename T>
T* Singleton<T>::m_This = nullptr;

2. Device

FAILED

  • 실패시 E_FAIL
  • 성공시 S_OK

Device 클래스는 GPU 제어 하는 용도

기본 DirectX Header

// DirectX 11 헤더 및 라이브러리 참조
#include <d3d11.h>
#include <d3dcompiler.h>
#include <DirectXMath.h>

using namespace DirectX;

#pragma comment(lib,"d3d11");
#pragma comment(lib,"d3dcompiler");

Device

  • GPU 메모리 관리, 객체 생성
  • resourcedata, buffer 관련

DeviceContext

  • GPU 렌더링 명령에 관련해 사용함
  • comptr 알아보기 스마트 포인터
  • 여타 스마트 포인터와 마찬가지로 참조횟수가 0이되면 자동으로 메모리를 반환한다.
  • Get() 함수
    : COM 객체의 포인터를 반환
  • GetAddressOf() 함수
    : COM 객체의 포인터의 주소를 반환(포인터의 포인터)(더블 포인터 반환)

다음 수업 예습

OM(OutptMangerState)

SwapChain : 더블 버퍼링 관련 최종 물체
Texture2D : 렌더타켓 텍스쳐 , 깊이 스텐실 텍스쳐
렌더타켓 뷰
깊이 스텐실 뷰
샘플러 스테이트

profile
게임프로그래머 지망!

0개의 댓글