OpenGL 文字の表示

GLUTによる文字描画 glut.h
・glutStrokeCharacter

関数の定義-参考HP1より
void drawStrokeString(GLfloat x, GLfloat y, float xscl, float yscl,void *font, char *string)
{
	glPushMatrix();
		glTranslatef(x, y, 0);
		glScalef(xscl, yscl, 1.0f);
		while (*string)
			glutStrokeCharacter(font, *string++);
	glPopMatrix();
}
使用例
case WM_PAINT:
	glClearColor((GLclampf)0.7, (GLclampf)0.8, (GLclampf)0.8, 0.0);
	glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
	//視点の変換行列の初期化
	glLoadIdentity();
		CalcCameraPosition(camera_theta,camera_phi,camera_distance,camera_centerX,camera_centerY,camera_centerZ,&camera_positionX,&camera_positionY,&camera_positionZ,&camera_upY);
	//視点の決定
	gluLookAt(camera_positionX, camera_positionY, camera_positionZ,0.0,0.0,0.0,0.0,camera_upY,0.0);// camera_centerX,camera_centerY,camera_centerZ, 0.0,1.0,0.0);

	glPushMatrix();
		glTranslated(5.0,0.0,0.0);
		drawStrokeString(1.0f,1.0f,0.02f,0.02f,GLUT_STROKE_ROMAN,"5");
	glPopMatrix();

	glFlush();
	mygraph.Draw(hMemDC,0,0,MEM_WIDTH,MEM_HEIGHT);
	hdc = BeginPaint(hWnd, &ps);
	// TODO: 描画コードをここに追加してください...
	BitBlt(hdc,0,0,WINDOW_WIDTH,WINDOW_HEIGHT,hMemDC,0,0,SRCCOPY);//ここでhMemDCに書き込んだ内容を一気hdcに転送する
	EndPaint(hWnd, &ps);
	break;

FTGLによる文字描画
・FTGLPolygonFont


#include <FTGLPolygonFont.h>
#define FONT "C:\\WINDOWS\\Fonts\\meiryo.ttc"//sazanami-mincho.ttf"//sazanami-gothic.ttf
#define SIZE  5.0
#define DEPTH 1.5
FTFont *font;
使用例
case WM_CREATE:
	font = new FTGLPolygonFont(FONT);
	if (font->Error()) exit(1);                        // can't open font file
	if (!font->FaceSize(SIZE)) exit(1);                // can't set font size
	if (!font->CharMap(ft_encoding_unicode)) exit(1);  // can't set charmap 
	break;

case WM_PAINT:
	glClearColor((GLclampf)0.7, (GLclampf)0.8, (GLclampf)0.8, 0.0);
	glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
	//視点の変換行列の初期化
	glLoadIdentity();
	CalcCameraPosition(camera_theta,camera_phi,camera_distance,camera_centerX,camera_centerY,camera_centerZ,&camera_positionX,&camera_positionY,&camera_positionZ,&camera_upY);
	//視点の決定
	gluLookAt(camera_positionX, camera_positionY, camera_positionZ,0.0,0.0,0.0,0.0,camera_upY,0.0);// camera_centerX,camera_centerY,camera_centerZ, 0.0,1.0,0.0);
	glPushMatrix();
		glColor3d(0.0, 0.0, 0.0);
		glTranslated(0.0, 5.0, 0.0);
		font->Render(TEXT("こんにちわ"));
	glPopMatrix();
	
	glFlush();
	mygraph.Draw(hMemDC,0,0,MEM_WIDTH,MEM_HEIGHT);
	hdc = BeginPaint(hWnd, &ps);
	// TODO: 描画コードをここに追加してください...
	BitBlt(hdc,0,0,WINDOW_WIDTH,WINDOW_HEIGHT,hMemDC,0,0,SRCCOPY);//ここでhMemDCに書き込んだ内容を一気hdcに転送する
	EndPaint(hWnd, &ps);
	break;

参考HP

1.http://www.exa-corp.co.jp/solution/UBIQ/OpenGL/OpenGL-text-091.pdf
2.http://www.kushiro-ct.ac.jp/yanagawa/project/ftgl/ FTGLPolygonFontの使用方法
3.http://pages.cpsc.ucalgary.ca/~pneumann/wiki/pmwiki.php?n=MyUniversity.NotePad
 ビルド済みFreeType2とFTGLのインクルードヘッダとDLLとlibがダウンロードできるが,私の環境では動かなかった。
4.http://nanabit.net/programming/python-prog/ 一部ビルド方法
5.http://www.xmission.com/~nate/glut.html glutのダウンロード
6.http://shade-lounge.e-frontier.co.jp/modules/newbb/viewtopic.php?topic_id=799&forum=2

Microsoft VisualStudio2005 Professional Editionにてのビルド方法
1.sourceforgeからFTGLとfreetypeとcppunitをダウンロードし、それらを展開してProgram Filesにおく
ダウンロードしたファイル名
  • ftgl-2.1.2.tar.gz
  • ft235.zip
  • cppunit-1.12.0.tar.gz
2.ツール-オプション-プロジェクトおよびソリューション-VC++ディレクトリ にて
FreeTypeとFTGLおよびcppunitの インクルードディレクトリ および ライブラリディレクトリ を指定する

 ディレクトリを表示するプロジェクト:インクルードファイルの項目を以下のように設定する
C:\Program Files\cppunit-1.12.0\include
C:\Program Files\FTGL\include
C:\Program Files\freetype-2.3.5\include
 ディレクトリを表示するプロジェクト:ライブラリファイルの項目を以下のように設定する
C:\Program Files\cppunit-1.12.0\lib
C:\Program Files\FTGL\win32_vcpp\build
C:\Program Files\freetype-2.3.5\objs

3.C:\Program Files\FTGL\win32_vcpp\のなかのftgl.dswを開く
4.freetype204MT_D.libの数字などを実際のものに書き換えてあげる。

 ここでは,ftgl_static_libプロジェクト以外の以下のプロジェクトの
 プロパティ-構成プロパティ-リンカ-入力-追加の依存ファイルの の項目を以下のように修正する

Debug
 ftgl_demo  freetype235MT_D.lib ftgl_static_MT_d.lib
 ftgl_demo2 freetype235MT_D.lib ftgl_static_MT_d.lib
 ftgl_dll  freetype235MT_D.lib
 unit_tests freetype235MT_D.lib ftgl_static_MT_d.lib cppunitd_dll.lib
Debug DLL
 ftgl_demo  freetype235_D.lib ftgl_dynamic_MT_d.lib
 ftgl_demo2 freetype235_D.lib ftgl_dynamic_MT_d.lib
 ftgl_dll  freetype235_D.lib
 unit_tests freetype235MT_D.lib ftgl_static_MT_d.lib cppunitd_dll.lib
Debug MT
 ftgl_demo  freetype235_D.lib ftgl_dynamic_MT_d.lib
 ftgl_demo2 freetype235_D.lib ftgl_dynamic_MT_d.lib
 ftgl_dll  freetype235_D.lib
 unit_tests freetype235MT_D.lib ftgl_static_MT_d.lib cppunitd_dll.lib
5.参考HP6のようにプロジェクトプロパティ-リンカ-入力-特定のライブラリを無視 MSVCRTD.lib を追加
6.cppunit-1.12.0\examples\cppunittest\CppUnitTestMain.dsw をビルド

7.C:\Program Files\freetype-2.3.5\builds\win32\visualc\freetype.sln をビルド

glutの設定
1.参考HP5にてglut-3.7.6-bin.zipをダウンロードして展開すると以下のファイルが含まれている
  glut.h
  glut32.dll
  glut32.lib
2.C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\glのなかに
  glut.hをいれる
3.C:\WINDOWS\system32 内にglut32.dllがなければ入れておく
4.C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib 内にglut32.libを同様に入れておく

FTGL使用のためのVisualStudioの設定
1.プロジェクト-プロパティ-リンカ-入力-追加の依存ファイル に
freetype235MT_D.lib ftgl_dynamic_MT_d.libを追加
2.C:\WINDOWS\system32 内に以下のDLLを追加 
 ftgl_dynamic_MT_d.dll
 ftgl_dynamic_MTD.dll
 ftgl_dynamic_MTD_d.dll
最終更新:2007年11月22日 15:43