wglUseFontOutlinesW 関数 (wingdi.h)
wglUseFontOutlines 関数は、現在のレンダリング コンテキストで使用するために、デバイス コンテキストの現在選択されているアウトライン フォントのグリフごとに 1 つずつ、一連の表示リストを作成します。 表示リストは、TrueType フォントの 3-D 文字を描画するために使用されます。 各表示リストには、グリフのアウトラインが浮動小数点座標で記述されています。
グリフの実行は、指定されたデバイス コンテキストのフォントのfirstglyphで始まります。 フォントの四角形のサイズ (フォントが収まる元のフォント アウトラインの概念グリッド サイズ) は、表示リストの x 座標と y 座標の 1.0 にマップされます。 3-D パラメーターは、フォントの z 方向の奥行きを設定します。
lpgmfparameter は、文字セル内の各グリフの配置と向きに関する情報を含む GLYPHMETRICSFLOAT 構造体を返します。
構文
BOOL wglUseFontOutlinesW(
HDC unnamedParam1,
DWORD unnamedParam2,
DWORD unnamedParam3,
DWORD unnamedParam4,
FLOAT unnamedParam5,
FLOAT unnamedParam6,
int unnamedParam7,
LPGLYPHMETRICSFLOAT unnamedParam8
);
パラメーター
unnamedParam1
目的のアウトライン フォントを持つデバイス コンテキストを指定します。 hdc のアウトライン フォントは、現在のレンダリング コンテキストで表示リストを作成するために使用されます。
unnamedParam2
フォント アウトライン表示リストを形成するグリフのセットの最初のセットを指定します。
unnamedParam3
フォント アウトライン表示リストの形成に使用されるグリフセット内のグリフの数を指定します。 wglUseFontOutlines 関数は、一連のグリフ内の各グリフに対して 1 つの表示リストであるカウント表示リストを作成します。
unnamedParam4
開始表示リストを指定します。
unnamedParam5
元のアウトラインからの最大和音偏差を指定します。 偏差が 0 の場合、和音偏差は元のフォントの 1 つのデザイン単位に相当します。 偏差の値は、0 以上である必要があります。
unnamedParam6
フォントを負の z 方向に押し出す量を指定します。 値は 0 以上である必要があります。 0 の場合、表示リストは押し出されません。
unnamedParam7
表示リストで使用する形式 (WGL_FONT_LINESまたはWGL_FONT_POLYGONS) を指定します。 format がWGL_FONT_LINESの場合、wglUseFontOutlines 関数は行セグメントを含むフォントを作成します。 format がWGL_FONT_POLYGONSされると、wglUseFontOutlines は多角形を含むフォントを作成します。
unnamedParam8
グリフのメトリックを受け取る COUNTGLYPHMETRICSFLOAT 構造体の配列を指します。 lpgmf が NULL の場合、グリフ メトリックは返されません。
戻り値
関数が成功すると、戻り値は TRUE になります。
関数が失敗すると、戻り値は FALSE になり、表示リストは生成されません。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
wglUseFontOutlines 関数は、現在のレンダリング コンテキストで表示リストを持つアウトライン フォントのグリフを定義します。 wglUseFontOutlines 関数は TrueType フォントでのみ機能します。ストロークとラスター フォントはサポートされていません。
各表示リストは、線分またはポリゴンで構成され、 listBase 番号から始まる一意の識別番号を持っています。
wglUseFontOutlines 関数は、アウトラインと補間された中間点の間の距離が偏差で指定された値内になるまで、アウトラインの 2 次 B スプライン曲線を線分に分割することによってグリフアウトラインを近似します。 これは、format がWGL_FONT_LINESされるときに使用される最終的な 形式 です。 WGL_FONT_OUTLINESを指定すると、作成された表示リストに法線は含まれません。したがって、照明は正しく動作しません。 線の正しい照明を取得するには、WGL_FONT_POLYGONSを使用して glPolygonMode( GL_FRONT, GL_LINE) を設定します。 WGL_FONT_POLYGONS書式を指定すると、アウトラインは別々の三角形、三角形のファン、三角形のストリップ、または四角形のストリップに分割され、各グリフのサーフェスが作成されます。 WGL_FONT_POLYGONSでは、作成された表示リストは glFrontFace( GL_CW ) または glFrontFace( GL_CCW ) を呼び出します。したがって、現在の前面の値が変更される可能性があります。 WGL_FONT_POLYGONSを含むテキストの外観を最適に表示するために、次のように背面をカリングします。
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
GLYPHMETRICSFLOAT 構造体には、文字セル内の各グリフの配置と向きに関する情報が含まれています。 lpgmf パラメーターは、フォントのグリフのセット全体を保持する GLYPHMETRICSFLOAT 構造体の配列です。 各表示リストは、対応する GLYPHMETRICSFLOAT 構造体の gmfCellIncX および gmfCellIncY メンバーで指定された変換で終わります。 変換を使用すると、 glCallLists を 1 回呼び出して、連続する文字を自然な方向に描画できます。
例
次のコード例は、 wglUseFontOutlines を使用してテキストを描画する方法を示しています。
HDC hdc; // A TrueType font has already been selected
HGLRC hglrc;
GLYPHMETRICSFLOAT agmf[256];
// Make hglrc the calling thread's current rendering context
wglMakeCurrent(hdc, hglrc);
// create display lists for glyphs 0 through 255 with 0.1 extrusion
// and default deviation. The display list numbering starts at 1000
// (it could be any number)
wglUseFontOutlines(hdc, 0, 255, 1000, 0.0f, 0.1f,
WGL_FONT_POLYGONS, &agmf);
// Set up transformation to draw the string
glLoadIdentity();
glTranslate(0.0f, 0.0f, -5.0f)
glScalef(2.0f, 2.0f, 2.0f);
// Display a string
glListBase(1000); // Indicates the start of display lists for the glyphs
// Draw the characters in a string
glCallLists(24, GL_UNSIGNED_BYTE, "Hello Windows OpenGL World.");
注意
wingdi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして wglUseFontOutlines を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wingdi.h |
Library | Opengl32.lib |
[DLL] | Opengl32.dll |