目前我正在寻找一种适用于Linux系统的文本编辑器,它需要进行特定的文本/字体高亮显示,并涉及OpenGL渲染。是否有人有关于在Linux(尤其是Ubuntu)上良好运行的C++图形渲染库的建议?
如果有关于如何开始渲染3D文本的建议,将不胜感激!
编辑:仅为澄清,渲染3D文本是该项目的严格要求。
目前我正在寻找一种适用于Linux系统的文本编辑器,它需要进行特定的文本/字体高亮显示,并涉及OpenGL渲染。是否有人有关于在Linux(尤其是Ubuntu)上良好运行的C++图形渲染库的建议?
如果有关于如何开始渲染3D文本的建议,将不胜感激!
编辑:仅为澄清,渲染3D文本是该项目的严格要求。
优势是:
通用性-您可以为字体的每个字母使用任意全彩色图像。
纹理字体可以旋转和缩放-尽管它们总是“平面”的。
很容易将其他类型的字体转换为纹理地图。
您可以在3D场景中绘制它们,并且它们会被正确照明。
速度!每个字母仅需要发送一个四边形到硬件。这可能比光栅或几何字体快一个数量级。由于低端3D硬件高度优化了绘制简单纹理多边形,因此速度也得到提高,因为您通过渲染器处于“快速路径”。 (警告:在仅软件OpenGL中,纹理字体会很慢。)
一些免费字体库的链接:
Freetype: http://freetype.sourceforge.net/index2.html And: http://oglft.sourceforge.net/
Freetype是一款免费的字体渲染引擎,它可以在各种操作系统上处理字体文件,并将其转换为可用于屏幕显示或打印的图像。OGLFT是一个基于OpenGL的字体渲染库,它提供了高质量的字体呈现效果,并支持多种语言和字符集。我使用基于freetype的FTGL库。要创建3D浮雕文字,我需要进行以下调用:
#include <FTGL/ftgl.h>
#include <FTGL/FTFont.h>
...
FTFont* font = new FTExtrudeFont("path_to_Fonts/COOPBL.ttf");
font->Depth(.5); // Text is half as 'deep' as it is tall
font->FaceSize(1); // GL unit sized text
...
FTBBox bounds = font->BBox("Text");
glEnable(GL_NORMALIZE); // Because we're scaling
glPushMatrix();
glScaled(.02,.02,.02);
glTranslated(-(bounds.Upper().X() - bounds.Lower().X())/2.0,yy,zz); // Center the text
font->Render("Text");
glPopMatrix();
glDisable(GL_NORMALIZE);