C++和OpenGL实现3D游戏编程【连载30】——文字的多行显示
1、本节要实现的内容
OpenGL本身不直接支持文字渲染,需要通过外部库或自定义方法实现。常见方法包括使用位图字体、FreeType库或显示列表(Display Lists)。本节我们着重进行显示列表的方法去实现文字的输入,并实现文字的多行显示、自动换行处理,根据字体样式、大小动态改变多行显示效果,并实现多个文字字符串的拼接显示,以应变游戏中对文字处理的简单需要,在后续文章中再扩展其他两种文字显示方法。
2、使用显示列表渲染文字
显示列表是OpenGL中预编译的图形命令序列,适合静态内容(如固定字体文字)。
2.1、对英文字符的显示
OPENGL没有提供直接绘制文字的功能,需要借助于操作系统。OPENGL利用显示列表显示文字,程序可以创建一系列显示列表,每个字符对应一个列表编号。例如,'A’对应列表编号1000,'B’对应列表编号1001,以此类推。绘制一个字符串时,依次调用字符串中每个字符所对应的列表编号即可。在Windows操作系统上,可以使用wglUseFontBitmaps函数来批量的产生显示字符用的显示列表。
//输出字符串函数,只能输出ASCII字符,无法输出汉字,所有显示列表首次运行时创建