字体和文本 (OpenGL)

Microsoft 在 Windows 中实现 OpenGL 支持单缓冲 OpenGL 窗口中的 GDI 图形。 它不支持双缓冲 OpenGL 窗口中的 GDI 图形。 因此,只能调用标准 GDI 字体和文本函数,以在单缓冲 OpenGL 窗口中绘制文本;不能调用这些函数来在双缓冲 OpenGL 窗口中绘制文本。

对于双缓冲窗口中的文本限制,有一种解决方法:为字符位图图像生成 OpenGL 显示列表,然后执行这些显示列表来绘制字符。 此过程有三个main步骤:

  1. 选择设备上下文的字体,根据需要设置字体属性。
  2. 基于设备上下文字体中的字形创建一组位图显示列表,为应用程序将绘制的每个字形创建一个显示列表。
  3. 使用这些位图显示列表绘制字符串中的每个字形。

若要创建显示列表,请调用 wglUseFontBitmapswglUseFontOutlines 函数。 若要使用这些显示列表在字符串中绘制字符,请调用 glCallLists

若要创建易于本地化且使用资源的少部分应用程序,必须仔细管理这些字形图像显示列表的创建和存储。 与英语不同,许多语言都有字母表,其字符代码范围在相对较大的值集上。

字体和文本函数