전체 글 35

엔진공부 2일차 ( Static Library 만들기 ... feat. 윈도우 생성오류)

Direct2D 관련 코드를 분리하여 D2DRenderer Class화 하기. 대충 main엔 이렇게만 코드가 실행될 예정이다.Winmain(){ DemoApp App; App.Initialize(); // 윈도우 생성, D2DRenderer 초기화 App.Run(); // 게임 루프 App.Uninitialize(); // D2DRenderer 해제}여기서 DemoApp이 뭐냐면, 이제부터 만들 정적 라이브러리의 GameApp을 상속받아 만들어진 클래스다.GameApp 클래스의 기능은 위의 주석에서 파악 할 수 있다. Renderer를 만들기전에 생각해본 것들...일단 D2D는 윈도우 화면에 띄워지는 것들이기 때문에 너무나 당연한 말 일 수 있지만, ..

D2D와 게임엔진 2024.08.07

Direct2D 기본 사용법 3 (이미지 출력)

랜더타겟에 있는 함수인 DrawBitmap() 함수를 이용한다. 그리고 저 함수는 ID2D1Bitmap 요놈이 필요하다.  갑자기 WICImagingFactory가 뭔가 싶을 것이다. (수업 때 들었는지 기억도 안남)WIC란 WindowsImageComponent의 약자다.아무튼 얘가 필요한 이유는 이미지파일로 D2D1Bitmap을 생성하려고 하기 때문임.파일확장자 BMP,GIF,ICO,JPG,PNG,TIF,DDS 다 된다. 이제 코드로 알아보자.// 처음과 이어지는 코드입니다. 밑의 헤더와 라이브러리 추가하기#include #pragma comment(lib,"windowscodecs.lib")// D2D1비트맵 생성을 위한 이미지 처리 인터페이스IWICImagingFactory* _pWICFactor..

D2D와 게임엔진 2024.08.05

Direct2D 기본 사용법 2 (텍스트 출력)

D2D1Factory 로 랜더타겟을 생성한 것처럼 Write를 위한 팩토리가 있고, 필수적인 format이 있다.// 추가적으로 추가해야하는 것들#include #pragma comment(lib,"dwrite.lib")// 또 다른 팩토리IDWriteFactory* g_pDWriteFactory;IDWriteTextFormat* g_pDWriteTextFormat;BOOL InitDirect2D(){ // 슬슬 형태가 익숙하죠? // DirectWrite 팩토리 생성하기 hr = DWriteCreateFactory( DWRITE_FACTORY_TYPE_SHARED, __uuidof(g_pDWriteFactory), reinterpret_cast(&g_pDWriteFactory)); ..

D2D와 게임엔진 2024.08.05

Direct2D 기본 사용법 1 (기하도형 출력)

먼저, d2d1.h에 선언된 CreateD2D1Factory 함수로 ID2D1Factory 인터페이스를 얻어야 한다.바로 이전 포스팅을 다시 보면 _pD2DFactory가 CreateHwndRenderTarget() 해서 얻은 _pRenderTarget.요게 어떻게 쓰이는지 알 수 있게 된다. RenderTarget은 그리기 동작을 수행하거나, 그리기를 위한 리소스들을 생성한다. 1. 기하도형 출력하기저 Brush를 필수로 생성해야한다.// 아무튼 뭔지 모르겠는 Brush도 Direct2D에 이미 있다.ID2D1SolidColorBrush* _pBlackBrush; // 이름은 내멋대로 검은색 브러쉬라 지은것.ID2D1SolidColorBrush* _pGrayBrush; // 얜 대충 회색브러쉬.BO..

D2D와 게임엔진 2024.08.05

엔진공부 1일차 (feat. Direct2D 사용하기)

COM (Component Object Model)개념 : 마이크로소프트가 언어에 상관없이 쓸 수 있게 DLL 내부 개체 함수(인터페이스)를 노출시키는 방식이다. D2D1 DLL의 내부구현이 COM개체이므로, 이를 사용하기 위한 ¹준비과정과 ²생성과정이 필요하다. 예)#include #include // 코드에서 d2d1.lib 라이브러리를 링크하기#pragma comment(lib, "d2d1.lib")// 프로젝트 속성에서 링크하려면 -> 링커 -> 입력 -> 추가 종속성 -> d2d1.lib 추가// 윈도우 관련 변수,함수HINSTANCE _hInst; HWND _hWnd;// D2D 개체(객체, object) 인터페이스 포인터 변수들...ID2D1Factory* ..

D2D와 게임엔진 2024.08.05