wglUseFontOutlinesA 函式 (wingdi.h)
wglUseFontOutlines函式會建立一組顯示清單,一個用於裝置內容目前選取大綱字型的每個字元,以便與目前的轉譯內容搭配使用。 顯示清單可用來繪製 TrueType 字型的 3D 字元。 每個顯示清單都會描述浮點座標中的字元外框。
字元的執行會以指定裝置內容字型的firstglyph 開頭。 字型的 em 平方大小,是顯示清單中的 x 座標和 Y 座標中,原始字型外框的指標格線大小,會對應至 1.0。 立體化參數會設定字型在 z 方向的深度。
lpgmfparameter 會傳回 GLYPHMETRICSFLOAT 結構,其中包含字元儲存格中每個字元的位置和方向的相關資訊。
語法
BOOL wglUseFontOutlinesA(
HDC unnamedParam1,
DWORD unnamedParam2,
DWORD unnamedParam3,
DWORD unnamedParam4,
FLOAT unnamedParam5,
FLOAT unnamedParam6,
int unnamedParam7,
LPGLYPHMETRICSFLOAT unnamedParam8
);
參數
unnamedParam1
指定具有所需外框字型的裝置內容。 hdc的大綱字型是用來在目前的轉譯內容中建立顯示清單。
unnamedParam2
指定形成字型大綱顯示清單的第一組圖像。
unnamedParam3
指定用來形成字型外框顯示清單之字元集合中的字元數目。 wglUseFontOutlines函式會建立計數顯示清單,一個顯示清單用於一組字元中的每個字元。
unnamedParam4
指定開始顯示清單。
unnamedParam5
指定與原始外框的最大周框偏差。 當偏差為零時,折線偏差相當於原始字型的設計單位。 偏差的值必須等於或大於 0。
unnamedParam6
指定字型以負 z 方向立體化多少字型。 值必須等於或大於 0。 當 立體 化為 0 時,顯示清單不會立體化。
unnamedParam7
指定要在顯示清單中使用的格式,WGL_FONT_LINES或WGL_FONT_POLYGONS。 當 格式 WGL_FONT_LINES時, wglUseFontOutlines 函 式會建立具有線條線段的字型。 當格式WGL_FONT_POLYGONS時,wglUseFontOutlines會建立具有多邊形的字型。
unnamedParam8
指向要接收圖像計量的計數 GLYPHMETRICSFLOAT結構陣列。 當 lpgmf 為 Null時,不會傳回任何字元計量。
傳回值
函式成功時,傳回值為 TRUE。
當函式失敗時,傳回值為 FALSE ,而且不會產生任何顯示清單。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
wglUseFontOutlines函式會定義大綱字型的字元,以及目前轉譯內容中的顯示清單。 wglUseFontOutlines 函式僅適用于 TrueType 字型;不支援筆劃和點陣字型。
每個顯示清單是由線條線段或多邊形所組成,而且具有從 listBase 編號開始的唯一識別編號。
wglUseFontOutlines函式會將外框的二次方 B 曲線曲線細分為線條線段,直到外框與內插點中間點之間的距離在偏差所指定的值內,來近似圖像外框。 這是 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,以自然方向繪製連續字元。
範例
下列程式碼範例示範如何使用 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 標頭會將 wglUseFontOutlines 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | wingdi.h |
程式庫 | Opengl32.lib |
Dll | Opengl32.dll |