我需要一些帮助才能在 opengl 3d 场景上打印字符串。
我在使用模型 View 矩阵和投影矩阵时遇到了一些问题。据我了解,投影矩阵用于场景设置,模型 View 矩阵用于绘制和变换场景中的对象。所以,要在 3D 场景上绘制一些东西,我知道接下来的程序最需要完成:
这是正确的程序吗?
最佳答案
对于 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/