string - 如何在 OpenGL 中的 3d 场景上打印字符串

标签 string opengl fonts bitmap

我需要一些帮助才能在 opengl 3d 场景上打印字符串。
我在使用模型 View 矩阵和投影矩阵时遇到了一些问题。据我了解,投影矩阵用于场景设置,模型 View 矩阵用于绘制和变换场景中的对象。所以,要在 3D 场景上绘制一些东西,我知道接下来的程序最需要完成:

  • 为 3d 场景设置投影矩阵
  • 为 3d 场景设置模型 View 矩阵
  • 画opengl的东西
  • 为 2d 叠加设置投影矩阵
  • 为 2d 叠加设置模型 View 矩阵
  • 为 hud 绘制 opengl 的东西

  • 这是正确的程序吗?

    最佳答案

    对于 2D 渲染,您可以将投影矩阵视为 Canvas ,将移动 View 视为文本的位置。您想像这样设置正交投影:

    glOrtho(0.0F, windowWidth, 0.0F, windowHeight, -1.0F, 1.0F);

    对于此投影,每个单位表示一个像素(glTranslate2f(120.0, 100.0) 会将您的文本定位在像素 (120, 100) 处。此投影将 (0,0) 映射到屏幕左下角。如果您想将其映射到左上角,您可以执行以下操作:

    glOrtho(0.0F, windowWidth, windowHeight, 0.0F, -1.0F, 1.0F);

    至于如何渲染文本,OpenGL 默认不支持它,这意味着您必须创建一个字体渲染库或使用现有的。在此之前,您需要牢记您对文本渲染的需求:是平面还是 3D?它将是静态的或变换的(缩放、旋转)等。

    在这里,您可以找到关于具有优缺点和库的 opengl 文本渲染技术的调查:
    http://www.opengl.org/archives/resources/features/fontsurvey/

    我开始使用 FTGL 来渲染 TTF 字体,但是这个库破坏了我的游戏性能。所以我决定实现我自己的字体库并使用纹理字体,这并不比 TTF 好,但它可以满足我的需求。

    我用过这个程序:http://www.angelcode.com/products/bmfont/
    它采用 TTF 字体并导出纹理和文件描述符,其中包含您将用于渲染的纹理中的每个字母位置、大小和填充。

    希望有帮助。

    关于string - 如何在 OpenGL 中的 3d 场景上打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10824564/

    相关文章:

    ios - 如何为 UITextView 中的特定单词设置样式?

    Java:尽管字符串是不变的,但如何将字符串设为 "mutate"?

    android - 在android设计支持TabLayout中更改标签文本的字体

    macos - Cocoa WebView (MacApp) - 如何使用自定义字体?

    c++ - 通过 TCS 和 TES 传递数据

    html - 是字体系列 : arial something that will work on every computer and mobile device?

    php - MYSQL 列中有 9,000 个字符串 - 使用哪种数据类型?

    c++ - 在 C++ 中反转字符串时出现意外输出

    java - 在 3D 游戏中使用高度图与模型有何优缺点

    objective-c - 将 iPhone openGLES 应用程序移植到 OSX?