폰트 출력

반응형

회사에서도 맨날 폰트하는데....죽겠구만!!!!!!

폰트를 쓰는건 여러가지 방법이 있다.
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
TAGS.

Comments