欢迎来到天天文库
浏览记录
ID:56636280
大小:184.50 KB
页数:13页
时间:2020-07-01
《OpenGL进行文字显示的方法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.任何一个DEMO、仿真项目、游戏,都少不了文字这种媒体。这不可不说是对图形视觉媒体的补充——我们还有一些无法超越文字来向观众表达的心事,或是补充说明,或是感悟,或是感激。—— ZwqXin.一般的文字不属于图形渲染部分,而属于用户界面部分,这在游戏引擎中看或许一目了然,但是在底层的图形渲染API——OPENGL或D3D中,文字的显示“并不是必须”,但它是多么深深地被需要着口牙。所以,把字体设置、文字显示作为一种图形学技术而非单纯的完全我属或他属,我是这么想的。(同样,拾取也算是这样吧?[乱弹OpenGL选择-拾取机制Ⅰ])本文来源于 ZwqXin (.zwqxin
2、./),请注明 原文地址:.zwqxin./archives/opengl/opengl-font-setting-showing.html怎么表达文字呢?在OpenGL中,我们没有什么现成的东西可用,但确实有办法让我们“得到这种技术”。让我最记忆深刻的是NEHE的两三篇教程(貌似都是十几课吧),讲述的就是今天的这个主题。可以到NEHE或者在DANCINGWIND的中文翻译(见[搜集的优良OpenGL教程])看看~。而我所知道的这三种方法,前两种应该就是来自那里吧(记得~~),当时要努力完成课程DEMO,于是胡胡混混地就把相应的那两三课学了,而且把它的文字
3、显示方法应用到自己的程序中(还经历了一段艰辛的探索史...连我当时的MyFont类也记录了这份小辛酸,现在看来,是因为当时的知识水平不够理解吧)。然后后来又一个课程DEMO,老师后来觉得我应该“写中文”,于是我又去探索中文字体显示方法了,并在一个开源DEMO中找到,分析代码段后就拿来主义了,至昨不曾好好考究——这就是我所知的第三种方法。三种方法都是三步曲:在初始化的时候“创建字体”[Build],在渲染阶段“应用字体”(显示文字)[Print],在程序结束或不再需要文字显示的时候“销毁字体”[kill]。其中前两步比较重要,着重讨论讨论哈~1.常规的屏幕字体打印(N
4、ormalFont)应用得比较广,大名鼎鼎的AZURE以前的DEMO就是用这个的。NEHE教程中作为首次出现的字体显示方法,介绍应该比较全面,大家想仔细了解的话请务必从上面网址进入学习(当然还有因为我理解不透不敢乱讲的缘由)。1. /////////一般的英语字体打印2.void MyFont::BuildGLFont(int fontHeight)3.{4. HDC hDC =::GetDC(HWND_DESKTOP); //////就是这里搞晕了半晚5. 6. int tFontHeight = -1 * fontHeight;7. 8.
5、 NormalFontBase = glGenLists(96); // Storage For 96 Characters9. HFONT font = CreateFont( -tFontHeight, // Height Of Font10. 0, // Width Of Font11. 0,
6、 // Angle Of Escapement..1. 0, // Orientation Angle2. FW_BOLD, // Font Weight3. TRUE, // Italic4.
7、 FALSE, // Underline5. FALSE, // Strikeout6. ANSI_CHARSET, // Character Set Identifier7. OUT_TT_PRECIS,
此文档下载收益归作者所有