다이렉트x로 텍스트를 출력하는게 귀찮아서 클래스로 만들어놓고 디버그용 텍스트출력 매니저로 사용했던 소스코드 입니다.
cText.h 파일
#pragma once class cText { private: static cText* TextInst; ID3DXFont* m_pFont; int m_nMax_X; int m_nMax_Y; cText(void); public: ~cText(void); void Init(void); void Print( LPCSTR cSTR, int nX/*문자열의 왼쪽좌표*/ = 0, int nY/*문자열의 윗쪽좌표*/ = 0, D3DXCOLOR ARGB = 0xFFFFFFFF ); static cText* GetInst(void); void FreeInst(void); }; // 사용법 //TCHAR str_Text[256]; // 문자열 변수 //ZeroMemory(str_Text,sizeof(str_Text)); //문자열 변수 초기화 ////sprintf(변수명,이후로는 printf처럼 사용); //sprintf(str_Text,"출력 : %d",A0); // 이런식으로 사용 //TEXTMGR->Print(str_Text); // 텍스트출력 //sprintf(str_Text,"출력 : %d",A1); // 이런식으로 사용 //TEXTMGR->Print(str_Text); // 텍스트출력 //sprintf(str_Text,"출력 : %d",A2); // 이런식으로 사용 //TEXTMGR->Print(str_Text); // 텍스트출력 //sprintf(str_Text,"출력 : %d",A3); // 이런식으로 사용 //TEXTMGR->Print(str_Text); // 텍스트출력 //한개 변수로 출력후에 재사용 가능 //dx D3DFRAME->GetDevice()->BeginScene();과 D3DFRAME->GetDevice()->EndScene(); 사이에 넣을것
cText.cpp 파일
#include "cText.h" // cText* cText::TextInst = NULL; cText::cText(void) { Init(); } cText::~cText(void) { } void cText::Init(void) { D3DXFONT_DESC DXFont_DESC; ZeroMemory(&DXFont_DESC, sizeof(D3DXFONT_DESC)); DXFont_DESC.Height = 15; // 전체 글자 높이 DXFont_DESC.Width = 15; // 전체 글자 넓이 DXFont_DESC.Weight = FW_NORMAL; // 긁자 굵기 ( FW_BOLD 하면 굵음 ) DXFont_DESC.MipLevels = D3DX_DEFAULT; DXFont_DESC.Italic = false; // 이텔릭 DXFont_DESC.CharSet = DEFAULT_CHARSET; DXFont_DESC.OutputPrecision = OUT_DEFAULT_PRECIS; DXFont_DESC.Quality = DEFAULT_QUALITY; DXFont_DESC.PitchAndFamily = DEFAULT_PITCH; DXFont_DESC.FaceName, TEXT("돋움체"); // 글씨체 m_nMax_X = 1280; // 윈도우 최대 X m_nMax_Y = 960; // 윈도우 최대 Y D3DXCreateFontIndirect(D3DFRAME->GetDevice(),&DXFont_DESC, &m_pFont); } void cText::Print( LPCSTR cSTR, int nX/*문자열의 왼쪽좌표*/, int nY/*문자열의 윗쪽좌표*/, D3DXCOLOR ARGB ) { RECT rt = { nX, nY, m_nMax_X, m_nMax_Y }; #ifdef UNICODE // 유니코드 부분 m_pFont->DrawTextW(0, cSTR, -1, &rt, DT_TOP|DT_LEFT, ARGB); #else m_pFont->DrawTextA(0, cSTR, -1, &rt, DT_TOP|DT_LEFT, ARGB); #endif } cText* cText::GetInst(void) { if ( !TextInst ) { TextInst = new cText; RSCMGR->m_bTEXT_MGR = true; } return TextInst; } void cText::FreeInst(void) { if ( TextInst ) { m_pFont->Release(); delete TextInst; TextInst = NULL; RSCMGR->m_bTEXT_MGR = false; } }
'Programming > DirectX' 카테고리의 다른 글
색상 입히기 (0) | 2013.12.13 |
---|---|
인덱스 버퍼(Index Buffer) / 버텍스 버퍼(Vertex Buffer) (1) | 2013.12.12 |
기본 Winmain.cpp 다이렉트x 초기화 포함 (0) | 2013.11.30 |