본문 바로가기

Programming

색상 입히기 다이렉트x 색상 함수로는 DWORD로 정의된 D3DCOLOR가 있다.D3DCOLOR은 네개의 8bit 로 나누어 각각의 8bit당 색상의 진하기를 저장한다.( 알파값 | 빨강값 | 초록값 | 파랑값 ) 으로 구성되어진다. D3DXCOLOR_ARGB( 255, 255, 0, 0 ); // A R G BD3DXCOLOR_XRGB( 255, 0, 0 ); // 알파값을 넣을 필요 없다. 이는 16진수로 간단히 표현할 수 있는데 다음과 같이 설정할 수 있다.0x ff ff ff ff 첫번째 0x는 16진수를 뜻한다. 첫번째 ff는 알파값, 두번째 ff는 빨강값, 두번째 ff는 초록값, 세번째 ff는 파랑값을 뜻한다.즉 ARGB이다. 색상별 표현은 아래와 같다.0xffff0000 = 빨강0xff00ff00 = 초.. 더보기
인덱스 버퍼(Index Buffer) / 버텍스 버퍼(Vertex Buffer) Dxd9를 사용하며 제가 용책이라 불리는 책을 공부한 내용입니다. 소스코드는 제일 밑에 있습니다.쉐이더를 사용하지 않은 버전입니다. 쉐이더를 통한 버전은 나중에 다시 올리겠습니다. 버텍스 버퍼 = 점들의 위치를 저장한 것이라 보면 된다. ( 0, 0, 0 ) ( 1, 1, 0 ) 같은 버텍스를 가지고 있는 주머니인 것이다. 인덱스 버퍼 = 말 그대로 인덱스 데이터를 보관하는 주머니다. 인덱스를 사용하는 이유 - 인덱스를 사용하지 않고 그리려면 중복되는 점도 또 저장해 줘야 한다. 하지만 인덱스를 사용하면 ( 1, 0. 2 ) 같은 버텍스를 저장하는 대신 몇번째 점 인지만 숫자 하나 써주면 되기 때문에 효율적이다.※ 인덱스 순서는 되도록 시계방향으로 하도록 하자. - 컬모드로 매쉬의 앞 뒤를 구분할때 시계.. 더보기
상태패턴을 활용한 Game Scene 변경 매니져 - 2 상태패턴 씬 매니져cSceneMgr.h #pragma once #include "cScene.h" #include "cGame.h" #include "cIntro.h" #include "cMenu.h" // 씬을 다 인클루드 본래는 헤더파일에서 이렇게 참조해대면 안좋습니다. 웬만하면 cpp에서 참조하도록 짤것 enum Scene_State // 씬상태를 표시할 enum { INTRO, MENU, GAME }; class cScene_Mgr { private: cScene_Mgr(void); staticcScene_Mgr*m_cScene_Mgr_Inst; //씬매니져 싱글톤을 위한 클래스 포인터 변수 CScene*m_pcScene; Scene_Statem_RsvScene;// 변경될 씬 예약 Rsv = R.. 더보기
상태패턴을 활용한 Game Scene 변경 매니져 게임 씬별로 나누는 것을 상태패턴으로 간단히 설명하자면 부모씬 cScene -> 자식1 cIntro -> 자식2 cMenu -> 자식3 cGame 이런식으로 부모를 상속받은 자식들을 만들어줍니다. 이렇게 하는 이유는 부모의 *는 자식의 *를 받을 수 있기 때문입니다. 좀 더 자세히 설명하자면 cScene* m_pScene = new cIntro; 이러한 것이 되는겁니다. 그럼 이러한 것을 활용한 매니져 소스코드를 공개하겠습니다. 부모가 될 클래스 cScene cScene.h #pragma once class CScene { public: CScene(void); virtual ~CScene(void); // 가상소멸자 에 주의 virtual void Init(void) =0; // virtual 함수 사.. 더보기
DirectX Text 출력 클래스 다이렉트x로 텍스트를 출력하는게 귀찮아서 클래스로 만들어놓고 디버그용 텍스트출력 매니저로 사용했던 소스코드 입니다. cText.h 파일#pragma once class cText { private: staticcText*TextInst; ID3DXFont*m_pFont; intm_nMax_X; intm_nMax_Y; cText(void); public: ~cText(void); voidInit(void); void Print( LPCSTR cSTR, int nX/*문자열의 왼쪽좌표*/ = 0, int nY/*문자열의 윗쪽좌표*/ = 0, D3DXCOLOR ARGB = 0xFFFFFFFF ); staticcText*GetInst(void); voidFreeInst(void); }; // 사용법 //TCHA.. 더보기
Key 매니져 매니져는 여러 Class에서 공통적으로 쓰이며 어떠한 것을 관리해주는 클래스를 말한다 이러한 클래스를 쉽게 사용하기 위해 싱글톤 패턴을 활용하여 만든 후 #define 을 통해 사용한다. KeyMgr.h #pragma once const intKEYMAX=256; // 넉넉하게 255를 잡았지만 109키 키보드와 마우스 2버튼을 포함한 111로 잡아도 무관 class cKey { private: staticcKey*m_pInstance;// 클래스 포인터 boolm_bKeyDown[KEYMAX];// 키가 눌렸는지 체크할 배열 boolm_bKeyUp[KEYMAX];// 키가 떼졌는지 체크할 배열 private: cKey(void); public: ~cKey(void); staticcKey*GetInst(.. 더보기
기본 Winmain.cpp 다이렉트x 초기화 포함 #include #include #pragmacomment ( lib, "d3d9.lib" ) #pragma comment ( lib, "d3dx9.lib" ) #pragma comment ( lib, "winmm.lib" ) //사용자 추가 전역 변수 intActiveFlage=TRUE;// 반복 체크 LPDIRECT3D9pDX=NULL;// dx객체 LPDIRECT3DDEVICE9pDevice=NULL;// dx디바이스 D3DPRESENT_PARAMETERSstParam;// 파라메터 구조체 // 사용자 추가 핸들 // 콜백 함수 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); // 다이렉트x 초기화 VOIDDevice_Init(INTWIDTH, IN.. 더보기