精华内容
下载资源
问答
  • ftgl-2.1.2

    2013-03-28 20:45:54
    下载后,直接在windows里解压,得到ftgl-2.1.2文件夹,这个文件夹可以直接在linux中使用。
  • OpenGL学习笔记--字体库freetype2、FTGL

    千次阅读 2017-07-05 16:47:56
    #include <FTGL/ftgl.h> #include #ifdef WIN32 #pragma comment(lib, "glew32.lib") #pragma comment(lib, "freeglut.lib") #pragma comment(lib, "freetype2410.lib") #pragma comment(lib, "ftgl_...

    freetype2

    FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。

    FTGL

    FTGL即FreeType Graphics Library,它相当于在freetype的基础上又封装了一道接口,更加方便使用。

    下载编译

    分别到各自官网上下载即可,如果是ubuntu下可直接使用apt-cache search搜索相关的安装包,进行安装,windows下下载源代码后使用VC打开对应工程编译即可,没有提供VC工程的,一般也会提供cmake文件去生成。
    注意的是因为FTGL是依赖于freetype的,所以需要先编译好freetype2,并在VC目录中添加头文件和库文件路径

    FTGL使用基本流程图

    Created with Raphaël 2.1.0 开始 构造字体对象 FTGLPixmapFont* pFont = new FTGLPixmapFont 设置字高 pFont- >FaceSize 设置字符集 pFont- >CharMap 绘画字符串 pFont- >Render 析构字体对象 delete pFont 结束

    代码示例

    #include <gl/glut.h>
    
    #include <freetype2/ft2build.h>
    #include <freetype2/freetype/freetype.h>
    #include <FTGL/ftgl.h>
    #include <locale.h>
    
    #ifdef WIN32
    #pragma comment(lib, "glew32.lib")
    #pragma comment(lib, "freeglut.lib")
    #pragma comment(lib, "freetype2410.lib")
    #pragma comment(lib, "ftgl_static.lib")
    #endif
    
    struct DrawInfo{
        int left;
        int right;
        int top;
        int bottom;
        GLuint color;
    };
    
    #define R(color) (((color) >> 24) & 0xFF)
    #define G(color) (((color) >> 16) & 0xFF)
    #define B(color) (((color) >>  8) & 0xFF)
    
    FTGLPixmapFont* pFont = NULL;
    void initFont(const char* fname, unsigned int h){
        if (!pFont){
            pFont = new FTGLPixmapFont(fname);
            pFont->FaceSize(h);
            pFont->CharMap(FT_ENCODING_UNICODE);
        }
    }
    
    void releaseFont(){
        if (pFont){
            delete pFont;
            pFont = NULL;
        }
    }
    
    void drawStr(const char* str, DrawInfo* di){
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0.0, glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT), 0.0, -1.0, 1.0);
    
        const char* mbs = str;
        int len_mbs = strlen(mbs);
        // linux下使用locale -a可以查看支持的本地化字符集,windows下使用chcp命令查看活动代码页
    #ifdef WIN32
        setlocale(LC_ALL,".936");
    #else 
        setlocale(LC_ALL,"ch_ZN.utf8");
    #endif
        int len_wcs = mbstowcs(NULL, mbs, 0);
        wchar_t* wcs = new wchar_t[len_wcs + 1];
        mbstowcs(wcs, mbs, strlen(mbs)+1);
    
        //windows也可使用MultiByteToWideChar这个API来进行多字节与宽字节的转化
    
        int r = R(di->color);
        int g = G(di->color);
        int b = B(di->color);
        glColor3ub(R(di->color), G(di->color), B(di->color));
        glRasterPos2i(di->left, di->bottom);
        pFont->Render(wcs);
        glColor3ub(255,255,255);
    
        delete[] wcs;
    }
    
    void reshape(int w, int h){
        glViewport(0, 0, w, h);
    
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0.0, w, h, 0.0, -1.0, 1.0);
    
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
    }
    
    void display(){
        glClearColor(0.0, 0.0, 0.0, 1.0);
        glClear(GL_COLOR_BUFFER_BIT);
    
        DrawInfo di;
        di.left = 200;
        di.bottom = 200;
        di.color = 0xFFFF00FF;
        drawStr("FTGL使用范例", &di);
    
        glutSwapBuffers();
    }
    
    int main(int argc, char* argv[]){
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
        glutInitWindowPosition(0, 0);
        glutInitWindowSize(640, 480);
    
        int mainwnd = glutCreateWindow("glut window");
    
        glutReshapeFunc(reshape);
        glutDisplayFunc(display);
    
        // ttf文件可以到网上下载,windows下也可在C盘直接搜索*.ttf
        initFont("D:/simfang.ttf", 36);
    
        glutMainLoop();
    
        releaseFont();
    
        return 0;
    }

    效果图:
    ftgl

    展开全文
  • FTGL在OpenGL下显示中文

    千次阅读 2015-11-21 11:24:51
    前言简介FTGL在使用QopenGLWidget中,由于需要绘制三维空间中的文本标注。而由于Qt的新版本中并没有引入QGLWidget中的绘制函数:void renderText(double x, double y, double z, const QString & str, const QFont &...

    前言简介

    FTGL

    在使用QopenGLWidget中,由于需要绘制三维空间中的文本标注。而由于Qt的新版本中并没有引入QGLWidget中的绘制函数:

    void renderText(double x, double y, double z, const QString & str, const QFont & font = QFont())

    所以在我找到了第三方字体引擎库FTGL,通过阅读简介明确了他对OpenGL有很好的支持。简单灵活、跨平台,基于FreeType库,采用标准的字体库格式,可以直接读取字体文件,支持位图、抗锯齿、贴图映射、轮廓线、多边形格网、突出(挤压)多边形格网。

    运行环境

    • OS:Windows 7 旗舰版 64位
    • VS:Visual Studio 2013

    出现问题

    在下面的代码测试中出现如图所示的问题:

    这里写图片描述

    操作步骤

    1. 下载FreeType与FTGL:在FreeType官方网站的下载页面以及FTGL库下载需要的文件,这里我选用FreeType和FTGL分别是图中解压的两个文件。
      这里写图片描述
    2. 编译FreeType: 在目录.\freetype-2.3.4\builds\win32\visualc下,双击打开freetype.sln。在配置管理器中我选择的是Debug Multithreaded,在项目属性页中选择配置管理器,并注意查看下输出文件目录在objs文件夹下。
      这里写图片描述
      点击菜单项中的“生成解决方案”,在目录\freetype-2.3.4\objs下找到静态链接库freetype234_D.lib
      这里写图片描述

    3. 拷贝包含文件: 将生成的freetype234_D.lib拷贝到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib下,再将\freetype-2.3.4\include下的freetype文件夹以及ft2build.h拷贝到VC目录C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
      这里写图片描述

    4. 编译FTGL: 在目录\ftgl-2.1.3~rc5\msvc\vc8中点击ftgl.sln,由于我是要生成lib文件,所以右键点击ftgl_static的属性,设置附加包含目录与附加库目录、依赖项。
      这里写图片描述
      这里写图片描述
      设置好属性后生成解决方案。

    5. 拷贝包含文件:将生成的ftgl_static_D.lib拷贝到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib下,再将\ftgl-2.1.3~rc5\src下的FTGL文件夹拷贝到VC目录C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include

    解决方案

    在排查原因后,发现是由于在设置项目“属性”页的时候没有加入FreeType的lib库导致的。主要是由于自己的马虎大意,而且认为FTGL与FreeType之间有依赖关系。事实上,在运行程序时,需要同时引入FreeType与FTGL的lib库,同时还要注意不要忘了添加include目录下的文件。

    测试代码

    #include <stdlib.h>
    #include <stdio.h>
    #include <GL/glut.h>
    #include <iostream>
    #include <FTGL/FTGLPixmapFont.h>
    using namespace std; 
    
    FTGLPixmapFont *freeTypeFont = NULL;
    
    void init(void)
    {
        glShadeModel(GL_SMOOTH); // 启用阴影平滑
        glClearDepth(1.0f); // 设置深度缓存
        glEnable(GL_DEPTH_TEST); // 启用深度测试
        glDepthFunc(GL_LEQUAL); // 所作深度测试的类型
    
        //FTGL初始化
        char filePath[256] = { 0 };
        sprintf_s(filePath, "C:\\WINDOWS\\Fonts\\simhei.ttf");
    
        freeTypeFont = new FTGLPixmapFont(filePath);
        if (freeTypeFont == NULL)
        {
            char buf[] = "Font C:\\WINDOWS\\Fonts\\simhei.ttf can not be fond.\r\n";
            printf("%s", buf);
            exit(0);
        }
        else
        {
            freeTypeFont->FaceSize(24); // 必须
        }
    }
    
    wchar_t str[128] = L"FTGL 中文输出测试";
    
    void display(void)
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存
    
        glMatrixMode(GL_PROJECTION); // 切换到投影矩阵
        glLoadIdentity(); // 重置投影矩阵
        glOrtho(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 10.0f);
    
        glMatrixMode(GL_MODELVIEW); // 切换到模型视图矩阵
        glLoadIdentity(); // 重置模型视图矩阵
    
        //FTGL 输出测试,
        glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
        glRasterPos2f(0.2, 0.5);
        freeTypeFont->Render(str); 
    
        glutSwapBuffers();
    }
    
    void reshape(int w, int h)
    {
        glViewport(0, 0, (GLsizei)w, (GLsizei)h);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45.0, (GLdouble)w / (GLdouble)h, 1.0, 10.0);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        glutPostRedisplay();
    }
    
    int main(int argc, char** argv)
    {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
        glutInitWindowSize(600, 600);
        glutInitWindowPosition(100, 100);
        glutCreateWindow("FTGL 中文输出测试");
        init();
        glutReshapeFunc(reshape);
        glutDisplayFunc(display);
        glutMainLoop();
        return 0;
    }

    结果显示

    这里写图片描述

    展开全文
  • centos7 编译ftgl

    2021-11-24 18:52:14
    centos7 编译ftgl库 下载ftgl源码 git clone git://git.sv.nongnu.org/freetype/freetype2-demos.git 执行检查安装脚本 $ ./autogen.sh 根据提示安装缺少的依赖 $ yum -y install autoconf $ yum -y install ...

    centos7 编译ftgl库

    下载ftgl源码

    git clone git://git.sv.nongnu.org/freetype/freetype2-demos.git
    

    执行检查安装脚本

    $ ./autogen.sh
    

    根据提示安装缺少的依赖

    $ yum -y install autoconf
    $ yum -y install automake
    $ yum -y install libtool
    

    开始编译

    $ ./configure
    $ make
    $ sudo make install
    

    提示freetype2缺失需要安装

    $ yum install freetype-devel
    

    进入Demo文件夹执行

    chmod +x FTGLDemo
    ./FTGLDemo
    

    示例正常运行
    在这里插入图片描述

    展开全文
  • FTGL 编译和配置,以及运行Demo

    千次阅读 2016-10-28 19:17:49
    其次,下载https://sourceforge.net/projects/ftgl/?source=navbar,在msvc目录下找到vc8,使用VS打开: 直接编译是 不行的,需要将编译好的FreeType的inluce路径以及静态库路径配置好。 编译,OK。 然后打开下...

    欢迎关注公众号可以查看更多完整文章

     

    首先,下载Freetype源码,并编译,这在上一篇中已经说明如何进行。

    其次,下载FTGL download | SourceForge.net,在msvc目录下找到vc8,使用VS打开:

    直接编译是 不行的,需要将编译好的FreeType的inluce路径以及静态库路径配置好。

    编译,OK。

    然后打开下图Demo解决方案:

    也是无法直接编译成功的,需要使用GLUT的库,将GLUT的头文件和静态库加入VS配置页。

    现在还是无法编译通过的,需要将FTGL.sln解决方案中生成的两个静态库同样添加到属性页,编译OK。

    Demo中的字体文件的路径是不对的,需要设置好字体文件在自己电脑上的路径(win7下:C:\Windows\Fonts),就可以运行了。

    运行效果:

    本文地址:FTGL 编译和配置,以及运行Demo_GreenArrowMan-CSDN博客-CSDN博客

    展开全文
  • ./ftgl-2.1.2/lib/pkgconfig/ftgl.pc:prefix=/home/hs/OpenCASCADE/3rdparty/ftgl-2.1.2 ./ftgl-2.1.2/lib/pkgconfig/ftgl.pc:Libs: -lGLU -L/usr/lib -lGL -L/home/hs/OpenCASCADE/3rdparty/freetype-2.3.7/lib -...
  • ftgl 绘制文字

    2016-03-20 20:24:00
    FTFont* ftfont = new FTGLPixmapFont();  ftfont->Open("D:/SIMHEI.ttf");...主要是利用3dlayer实现,先编译成显示列表,再使用ftgl实现 转载于:https://www.cnblogs.com/lizhengjin/p/5299478.html
  • FTGL库初步剖析

    千次阅读 2015-05-25 22:51:18
    ftgl的初步剖析之一
  • FTGL用户指南 2.1.3~rc5

    2015-11-24 19:47:08
    FTGL的诞生就像其他任何应用程序需要在OpenGL应用程序处理文字。 例如,当使用Adobe Photoshop或Microsoft Word你不需要一个中间预处理步骤使用高质量的可伸缩的字体。 文档 FTGL教程 C API参考 FTGlyph...
  • FTGL库剖析之二----纹理文字

    千次阅读 2015-05-26 00:25:25
    FTGL中的纹理文字
  • 花了半天时间对FTGL源码进行修改和编译,最终生成DLL形式的文件。 删除了非windows平台的文件,使用vs2008直接编译即可使用。 其中freetype采用静态链接形式,只生成.lib文件。 FTGL采用动态链接形式,生成.dll .lib...
  • ftgl opengl font

    2010-01-19 22:33:26
    good thing for render font in opengl
  • 使用FtGl

    千次阅读 2009-07-16 21:13:00
    #include #include #define GLUT_DISABLE_ATEXIT_HACK#include #include #pragma comment(lib,"Font_debug.lib")FTGLPixmapFont *freeTypeFont = NULL;void init(void){ glShadeModel(G
  • 在View窗口中添加显示FTGL字体

    千次阅读 2014-01-07 21:50:28
    以MFC界面为例进行讲解:MFC工程名为 AddFont 在配置好Opengl环境的MFC工程中,在AddFontView.h文件中添加#include 文件, 还有相应的lib添加 .h文件声明FTGLPixmapFont* freeTypeFont;...
  • freetype2+ftgl中QOpenGlWidget中绘制字符串 关于Linux下编译ftgl库可以参考下面文章 https://blog.csdn.net/sinat_33607221/article/details/121522302?spm=1001.2014.3001.5501 首先将freetype2与ftgl的include...
  • 在Xcode中编译FreeType和FTGL

    千次阅读 2010-11-17 16:21:00
    跨平台的OpenGL程序如果要实现平滑字体显示,就必须利用FreeType2和FTGL库,这些库在Windows很容易配置,但是在mac下就有些麻烦,特别是在Xcode下开发Cocoa类程序时更是如此。这些库的源代码都有一些Makefile...
  • [img=https://img-bbs.csdn.net/upload/201406/03/1401810238_61816.png...。。 FTGLPolygonFont *font = new FTGLPolygonFont("c:\\windows\\fonts\\simhei.ttf"); font->FaceSize((m_text[i].font_size));...
  • "Unlike other OpenGL font libraries FTGL uses standard font file formats so doesn't need a preprocessing step to convert the high quality font data into a lesser quality, proprietary format." ...
  • 一、查看当前cmake的版本 cmake --version 二、从网址上获得cmake3.12.2的压缩包 wget https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz ...mv cmake-3.12.2-Linux-x86_64 /opt...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 197
精华内容 78
关键字:

FTGL