影响 HarfBuzz 的 GLFW window 创建选项

GLFW window creation options affecting the HarfBuzz

我正在使用 HarfBuzz 和 freetype 来呈现区域语言印地语。

如果我为 window 创建写这三个选项,字体不会呈现,我只会看到空白屏幕。

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

如果没有这三个选项,字体将正确呈现。

我很想知道这些选项在 window 创作中有什么不同?

那是因为你创建了核心配置文件OpenGL Context (GLFW_OPENGL_CORE_PROFILE).
与默认的兼容性配置文件上下文 (GLFW_OPENGL_COMPAT_PROFILE) 相比,Legacy OpenGL OpenGL 指令无效并导致 OpenGL 错误。

主要区别在于,您不能分别使用 glBegin/glEnd sequences, fixed function attributes (e.g. glVertexPointer) 客户端功能或当前矩阵堆栈。
如果要绘制几何图形,则必须创建 Vertex Array Objects and to use Shader 程序。

完整的区别可以在OpenGL 3.3 Compatibility Profile specification or for the most recent OpenGL version OpenGL 4.6 API Compatibility Profile Specification中看到,其中仅在兼容性配置文件规范中而不在核心规范中的功能以橙色排版。