Render 3D Texts with OpenGL!
这是一个用OpenGL渲染3D文字的程序,想要全面了解其原理,需要具备以下知识:
- C/C++
- OpenGL & GLSL(OpenGL基本的绘制方式以及顶点着色器和片元着色器)
- 计算机图形学(二次贝塞尔曲线)
- FreeType2(涉及FT_Outline_Decompose函数,需要了解字形轮廓的分解)
- 计算几何相关算法(多边形的三角剖分)
当前的实现版本使用GLU库进行三角剖分,不过GLU库非常古老,不太好用了~不久后将会实现我们自己的三角剖分程序!
先来看一下基本的流程:
- 使用FreeType2获取字形的轮廓信息,我们将获取到的信息封装为FreeTypeFont这个类型;
- 使用GLU库对获取到的字形轮廓进行多边形的三角剖分,生成三角网格面片,注意,这时的字形还不是3D文字,而是只有一个面;
- 使用在上一步生成的字形三角网格面生成3D文字的背面和侧面;
- 使用OpenGL对3D文字模型进行渲染;
注:
所有第三方依赖库都放在了3rdParty.rar里面,而实现文件都在Text3D文件夹下面!
FreeType的文档请看这里:https://www.freetype.org/freetype2/docs/documentation.html
在处理图形学中的数学类型时,我们使用了glm库,参考这里:https://github.com/g-truc/glm/tags
GLU库的文档可以看这里https://khronos.org/registry/OpenGL/specs/gl/glu1.3.pdf
Windows系统的字体文件可以在C:\Windows\Fonts路径下找到!
Text3D工程中需要包含的第三方依赖库如下图:
Render_with_OpenGL工程中需要包含的第三方依赖库如下图:
其中opengl32.lib和glu32.lib是已经在Windows系统中存在的了,其他系统尚不清楚,抱歉~
下图为实现效果:
项目仍在持续更行中,敬请期待!
文档尚未完成,README NOT COMPLETED YET!