wglUseFontBitmapsA 函数 (wingdi.h)

wglUseFontBitmaps 函数创建一组位图显示列表,以便在当前 OpenGL 呈现上下文中使用。 位图显示列表集基于设备上下文中当前所选字体中的字形。 然后,可以使用位图在 OpenGL 图像中绘制字符。

wglUseFontBitmaps 函数创建计数显示列表,每个计数字形一次,该字形以 hdc 参数所选字体中的第一个字形开头。

语法

BOOL wglUseFontBitmapsA(
  HDC   unnamedParam1,
  DWORD unnamedParam2,
  DWORD unnamedParam3,
  DWORD unnamedParam4
);

参数

unnamedParam1

指定设备上下文,其当前所选字体将用于在当前 OpenGL 呈现上下文中形成字形位图显示列表。

unnamedParam2

指定将用于形成字形位图显示列表的字形运行中的第一个字形。

unnamedParam3

指定将用于形成字形位图显示列表的字形运行中的字形数。 该函数创建 计数 显示列表,该列表针对运行中的每个字形创建一个。

unnamedParam4

指定开始显示列表。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE。 要获得更多的错误信息,请调用 GetLastError。

注解

wglUseFontBitmaps 函数定义当前 OpenGL 呈现上下文中的计数显示列表。 每个显示列表都有一个标识号,从 listBase 开始。 每个显示列表都包含对 glBitmap 的单个调用。 位图 listBase + i 的定义取自 hdc 指定的设备上下文中当前所选字体的第一个 + 字形i。 如果未定义字形,则该函数将为其定义一个空的显示列表。

wglUseFontBitmaps 函数在屏幕平面中创建位图文本。 它允许在 OpenGL 中标记对象。

在 Microsoft OpenGL 的当前版本中,不能对具有双缓冲像素格式的设备上下文进行 GDI 调用。 因此,不能将 GDI 字体和文本函数用于此类设备上下文。 可以使用 wglUseFontBitmaps 函数来规避此限制,并在双缓冲设备上下文中绘制文本。

函数确定每次调用 glBitmap 的参数,如下所示。

glBitmap 参数 含义
width 字形位图的宽度,在字形的 GLYPHMETRICS 结构的 gmBlackBoxX 成员中返回。
height 字形位图的高度,在字形的 GLYPHMETRICS 结构的 gmBlackBoxY 成员中返回。
xorig 标志符号原点的 x 偏移量,在字形的 GLYPHMETRICS 结构的 gmptGlyphOrigin.x 成员中返回。
yorig 字形原点的 y 偏移量,在字形的 GLYPHMETRICS 结构的 gmptGlyphOrigin.y 成员中返回。
xmove 与下一个字符单元格原点的水平距离,在字形的 GLYPHMETRICS 结构的 gmCellIncX 成员中返回。
ymove 与标志符号的 GLYPHMETRICS 结构的 gmCellIncY 成员中返回的下一个字符单元格原点的垂直距离。
位图 GetGlyphOutline 返回的字形位图, uFormat 等于 1。
 

示例

下面的代码示例演示如何使用 wglUseFontBitmaps 绘制一些文本。

HDC    hdc; 
HGLRC  hglrc; 
 
// create a rendering context  
hglrc = wglCreateContext (hdc); 
 
// make it the calling thread's current rendering context  
wglMakeCurrent (hdc, hglrc); 
 
// now we can call OpenGL API  
 
// make the system font the device context's selected font  
SelectObject (hdc, GetStockObject (SYSTEM_FONT)); 
 
// create the bitmap display lists  
// we're making images of glyphs 0 thru 254  
// the display list numbering starts at 1000, an arbitrary choice  
wglUseFontBitmaps (hdc, 0, 255, 1000); 
 
// display a string:  
// indicate start of glyph display lists  
glListBase (1000); 
// now draw the characters in a string  
glCallLists (24, GL_UNSIGNED_BYTE, "Hello Windows OpenGL World");

注意

wingdi.h 标头将 wglUseFontBitmaps 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wingdi.h
Library Opengl32.lib
DLL Opengl32.dll

另请参阅

GLYPHMETRICS

GetGlyphOutline

Windows 上的 OpenGL

WGL 函数

glBitmap

glCallLists

glListBase

wglUseFontOutlines