목록Game Dev (261)
KoreanFoodie's Study
DirectX 11 2D 게임 프로그래밍 - 6. Input Assembler Stage 세팅하기 Rendering Pipeline에는 다음과 같은 스테이지가 있다. IA - VS - RS - PS - OM : 이 중, 오늘은 IA 스테이지인 Input Assembler Stage를 세팅하도록 하겠다. 먼저, DirectX의 기본 데이터인 정점(Vertex)를 만들고, 그 정점들을 파이프라인에 연결할 Buffer형 자원들 만든다. 그 후, Device Context를 활용하여 파이프라인에 Buffer형 자원을 세팅한다. 마지막으로 Primitive Topology 정보로 어떻게 정점을 연결할지 세팅할 수 있다. 알아두어야 할 개념 : 1. vector 란 무엇인가? 2. D3D11_USAGE에 대해 조사..
DirectX 11 2D 게임 프로그래밍 - 5. Window 창에 DirectX 연결(연동)하기 이번 시간에는 이전에 띄웠던 Window 창에 DirectX요소를 넣어 연동해본다. 알아두어야 할 개념 : 1. Design Pattern 조사 2. 정적 변수 복습 -> static member는 class 내부에 하나 밖에 없으며, 클래스에서 공유하는 자원이다. 3. 16진수로 표현되는 색상 정보 조사해보기 -> D3DXCOLOR 변수는 실제로 float[4]로 표현 가능 4. const int* vs int* const 차이? -> 왼쪽은 포인터가 상수인 것. 따라서 가리키는 것을 바꿀 수 있고, 참조하는 변수의 값을 바꿀 수는 있지만, *ptr = new_value식으로는 바꿀 수 없다. 오른쪽은 상..
DirectX 11 2D 게임 프로그래밍 - 3. ID3D11Device, SwapChain, Resource View 개념 및 간단한 초기화 Grahpics.h, Graphics.cpp 파일을 이용하여 백버퍼를 만들고 ID3D11Device(Context)등의 파일들을 초기화해 보자. 알아두어야 할 개념 : 1. Device와 DeviceContext, SwapChain 초기화하면서 사용한 옵션 정리 : 주석으로 정리 2. bpc(bit per color), Anti Aliasing 3. UUID, GUID 4. dangling pointer Graphics.h #pragma once // final : 더는 상속될 수 없다 class Graphics final { public: Graphics(); ..
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 #include //DirectX #include #include #include // 라이브러리를 연결하는 전처리기 코드의 표현 #pragma comment(lib, "dxgi.lib") #pragma com..
DirectX 11 2D 게임 프로그래밍 - 1. Window 창 띄우기 먼저 기본적인 Windows API의 기능들을 짚어 나가면서 창을 띄우는 것부터 시작을 해 보자. 알아두어야 할 개념으로는 1. Calling Convention 2. Casting in C++ 3. inline 함수 4. Callback 함수 정도가 있다. stdafx.h 먼저, 미리 컴파일된 헤드를 만들어 주자. stdafx.cpp에서는 stdafx.h를 include 해주기만 하면 된다. #pragma once //Window #include #include typedef unsigned int uint; Windows.h #pragma once #include "stdafx.h" namespace Window { static..
윈도우 API 프로그래밍 10 : 백버퍼와 픽 메시지 백 버퍼는 화면에 그려지는 버퍼에 바로 렌더를 살 경우 버퍼가 지워지는 순간 또는 버퍼에 전체가 다 그려지기 전에 화면에 그려지기 전에 화면에 그려질 경우 덜 그려진 부분이 화면에서 잠깐 지워진 상태가 되기 때문에 깜빡이는 것처럼 보이는 현상이 생긴다. 이때, 백 버퍼를 생성하여 백 버퍼에 모든 내용을 그리고 백 버퍼를 화면에 렌더하는 방식으로 위의 문제를 해결할 수 있다. 백퍼퍼와 픽 메시지 기존에는 WM_TIMER를 이용하여 업데이트를 처리했지만 이는 모든 메시지 중에서 우선 순위가 가장 낮고 최대 속도가 0.01초이다. 이를 극복하고 cpu 성능을 제대로 활용하기 위해 픽 메시지를 사용한다! HDC hdc = GetDC(g_hWnd); g_hDC..
윈도우 API 프로그래밍 9 : 키매니저(키 입력 받기), bitset 예제 이번 글에서는 싱글톤 패턴을 이용해서 키 입력을 받는 방법과 간단한 bitset 메소드를 이용해 보겠다. SingletonBase.h 먼저, 싱글톤 클래스를 이용할 템플릿 클래스인 SingletonBase.h를 정의해 보았다. #pragma once /* 싱글톤 패턴 : 단일 객체 관리 방법 - 인스턴스를 호출 시 처음 호출 하는 경우 인스턴스를 생성하고 생성 된 인스턴스를 반환 한다. - 인스턴스를 호출 시 이전에 호출되어 생성이 되어 있는 경우 그 생성 되어 있는 인스턴스를 반환 한다. 템플릿(Template, 형판) : 함수 또는 클래스를 만들어 내기 위한 틀 - 정해지지 않은 자료형에 대한 선언을 템플릿을 사용하여 하고 ..
윈도우 API 프로그래밍 8 : 객체 지향적인 윈도우 API 프로그래밍 "모든 것은 객체로 이루어져 있다". 객체 지향적으로 코드를 짜면 유지 보수가 편하며 새로운 기능을 안전하고 효율적으로 구현할 수 있다. 이 글에서는 실제 기능 구현을 보며 그 부분에 대한 기초를 간략히 서술한다. 기능 예시1 . 더 자세한 내용이 궁금하시다면 직접 들어보시는 걸 추천드립니다!
윈도우 API 프로그래밍 7 : 게임 프레임워크 구성 지금은 간단한 게임이니까 WindowsProject1.cpp라는 단일 파일에 모든 기능을 구현했지만, 프로그램이 복잡해지면 사실 필요한 코드를 필요한 파일에 분할해서 구성해야 한다. 이 글에서는 이를 위한 밑작업을 어떻게 하는지를 다루고자 한다. GameNode : 먼저 스켈레톤 클래스를 만들자 #pragma once class GameNode { public: GameNode(); ~GameNode(); virtual void Init() = 0; // 순수 가상 함수 virtual void Update() = 0; virtual void Render() = 0; }; 먼저 가장 기본적으로 Init, Update, Render라는 가상 메소드를 가진..
윈도우 API 프로그래밍 6 : 간단한 UI 구현과 똥피하기 게임 예제 이전 글에 이어서 추가적인 기능을 약간 추가해 보자. 전역 변수 재설정 struct tagBox { RECTrt; floatspeed; }; vectorvecBox;// 떨어지는 렉트들의 정보 intnDelay = 50; struct tagBox를 새로 선언하여 RECT를 대체했다. 그 이유는, 각각의 상자마다 떨어지는 속도를 다르게 만들기 위해서인데, 이는 난이도나 약간의 재미 요소를 첨가하는데 사용될 수 있다. WM_TIMER : 점수 계산과 타입 수정 case WM_TIMER:// 타이머에 의해서 호출 { InvalidateRect(hWnd, NULL, true); nLevel = nScore / 100 + 1; // 포지션 위..