폰트 출력
회사에서도 맨날 폰트하는데....죽겠구만!!!!!!
폰트를 쓰는건 여러가지 방법이 있다.
1. CDXUTTextHelper의 사용
이 방식은 dxut에서 사용하는 방식이다.
// 폰트의 생성
V_RETURN( D3DX10CreateFont( pd3dDevice, 15, 0, FW_BOLD, 1, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
L"Arial", &g_pFont10 ) );
V_RETURN( D3DX10CreateSprite( pd3dDevice, 512, &g_pSprite10 ) );
g_pTxtHelper = new CDXUTTextHelper( g_pFont9, g_pSprite9, g_pFont10, g_pSprite10, 15 );
// 폰트의 출력
TCHAR strMsg[512];
g_pTxtHelper->Begin();
g_pTxtHelper->SetInsertionPos(2, 0); // 출력위치
g_pTxtHelper->SetForegroundColor( D3DXCOLOR(1.0f, 1.0f, 0.0f, 1.0f ));
g_pTxtHelper->DrawTextLine(DXUTGetFrameStats(TRUE)); // framestats 출력
g_pTxtHelper->DrawTextLine(DXUTGetDeviceStats()); // devicestats 출력
float* pfParam = MgApp::Instance()->m_afDebugParam;
_stprintf_s(strMsg,512,_T("Debug Parameter [0]%.2f [1]%.2f [2]%.2f [3]%.2f [4]%.2f [5]%.2f [6]%.2f [7]%.2f"),
pfParam[0],pfParam[1],pfParam[2],pfParam[3],
pfParam[4],pfParam[5],pfParam[6],pfParam[7]);
g_pTxtHelper->DrawTextLine(strMsg);
2. D3DX10_FONT_DESC 구조체의 사용
D3DX10_FONT_DESC fontDesc;
ZeroMemory(&fontDesc, sizeof(D3DX10_FONT_DESC));
fontDesc.Height = 25; // 0으로 하면 디폴트 높이 사용
fontDesc.Width = 0; // 0으로 하면 윈도창의 가로세로비에 맞는 폰트 너비 사용
fontDesc.Weight = FW_NORMAL; // 폰트의 가중치 (fw_thin, fw_bold)
fontDesc.MipLevels = 0;
fontDesc.Italic = FALSE;
fontDesc.CharSet = DEFAULT_CHARSET;
fontDesc.OutputPrecision = 0; // 출력되는 모양이 요청한 사용과 얼마나 부합되는가.
fontDesc.Quality = 0;
fontDesc.PitchAndFamily = 0;
wcscpy_s(fontDesc.FaceName, TEXT("굴림"));
if(FAILED(D3DX10CreateFontIndirect(pkDevice, &fontDesc, &pkFont)))
{
::MessageBox(0, L"D3DX10CreateFontIndirect() - FAILED", 0, 0);
::PostQuitMessage(0);
}
// 출력할 영역 지정
RECT rect;
::SetRectEmpty(&rect);
pkFont->DrawText(NULL, fpsString, -1, &rect, DT_CALCRECT|DT_LEFT|DT_TOP, D3DXCOLOR(1,0,0,1));
pkFont->DrawText(NULL, fpsString, -1, &rect, DT_LEFT|DT_TOP, D3DXCOLOR(1,0,0,1));
// 출력
rect.left=100;
rect.right=300;
rect.top=50;
rect.bottom=450;
pkFont->DrawText(NULL, L"나그네 어쩌고 저쩌고 시\0", -1, &rect, DT_LEFT|DT_TOP|DT_WORDBREAK, D3DXCOLOR(0,0,1,1) );
pkFont->DrawText(NULL, L"- 박목월 -", -1, &rect, DT_RIGHT|DT_BOTTOM, D3DXCOLOR(0,0,1,1) );
위의 D3DX10CreateFontIndirect을 사용하지 않고 D3DX10CreateFont를 사용하면
'Study > Directx 10' 카테고리의 다른 글
삼각형 렌더링 (0) | 2010.05.05 |
---|---|
sprite 출력 (0) | 2010.05.02 |
2d 점찍기 (0) | 2010.05.02 |
dx10 사각형 그리기 (0) | 2010.04.28 |
dx10 창생성 (0) | 2010.04.21 |