📄 tutorial_43.htm
字号:
glDisable(GL_LIGHTING);<br>
glEnable(GL_TEXTURE_2D);<br>
glDisable(GL_DEPTH_TEST);<br>
glEnable(GL_BLEND);<br>
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); </p>
<p> glListBase(font);</p>
<pre> float modelview_matrix[16]; <br> glGetFloatv(GL_MODELVIEW_MATRIX, modelview_matrix);</pre>
<p> <span class="theme">// 下面的代码完成具体的绘制过程</span> <br>
for(int i=0;i<lines.size();i++) {<br>
glPushMatrix();<br>
glLoadIdentity();<br>
glTranslatef(x,y-h*i,0);<br>
glMultMatrixf(modelview_matrix);</p>
<p> <span class="theme">//调用显示列表绘制 </span><br>
glCallLists(lines[i].length(), GL_UNSIGNED_BYTE, lines[i].c_str());</p>
<p> glPopMatrix();<br>
}</p>
<p> glPopAttrib(); </p>
<p> pop_projection_matrix();<br>
}</p>
<p>} <br>
</p>
<pre>}
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="tc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="100%"></td>
<td class="tr"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="back3" valign="top" width="100%">FreeType库我们就写好了,现我们在13课的代码上来做一些修改,当然首先我们需要包含freetype.h的头文件</td>
<td class="r"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="bc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="br"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre>#include "freetype.h"</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="tc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="100%"></td>
<td class="tr"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="back3" valign="top" width="100%">现在我们就可以调用freetype库绘制字符串了</td>
<td class="r"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="bc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="br"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre>// 保存我们创建的字体的信息<br>freetype::font_data our_font;</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="tc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="100%"></td>
<td class="tr"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="back3" valign="top" width="100%">接下来使用test.ttf文件初始化字体</td>
<td class="r"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="bc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="br"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre>our_font.init("Test.ttf", 16);</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="tc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="100%"></td>
<td class="tr"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="back3" valign="top" width="100%">在程序结束时记得释放内存资源</td>
<td class="r"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="bc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="br"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre>our_font.clean();</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="tc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="100%"></td>
<td class="tr"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="back3" valign="top" width="100%">下面是我们具体的绘制函数</td>
<td class="r"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="bc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="br"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre>int DrawGLScene(GLvoid) <br>{<br> glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); <br> glLoadIdentity(); <br> glTranslatef(0.0f,0.0f,-1.0f); </pre>
<p> <span class="theme">// 蓝色文字</span><br>
glColor3ub(0,0,0xff);</p>
<p> <span class="theme">// 绘制WGL文字</span><br>
glRasterPos2f(-0.40f, 0.35f);<br>
glPrint("Active WGL Bitmap Text With NeHe - %7.2f", cnt1); </p>
<p> <span class="theme">// 红色文字</span><br>
glColor3ub(0xff,0,0);</p>
<p> glPushMatrix();<br>
glLoadIdentity();<br>
glRotatef(cnt1,0,0,1);<br>
glScalef(1,.8+.3*cos(cnt1/5),1);<br>
glTranslatef(-180,0,0);<br>
<span class="theme">//绘制freetype文字 </span><br>
freetype::print(our_font, 320, 200, "Active FreeType Text - %7.2f",
cnt1);<br>
glPopMatrix();</p>
<p> cnt1+=0.051f; <br>
cnt2+=0.005f; <br>
return TRUE; <span class="theme">// 成功返回</span><br>
}</p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="tc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="100%"></td>
<td class="tr"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="back3" valign="top" width="100%"><p>最后我们介绍一些实用的创建字体的相关站点</p>
<p>OGLFT 非常漂亮的基于FreeType2的字体库,下面是它的站点<a href="http://oglft.sourceforge.net/">http://oglft.sourceforge.net</a>.
</p>
<p>FTGL 是为OS X设计的第三方字体库. <a href="http://homepages.paradise.net.nz/henryj/code/#FTGL">http://homepages.paradise.net.nz/henryj/code/#FTGL.</a>
</p>
<p>FNT 一个非FreeType库,它使用自己定义的字体格式,但它具有非常好的界面<a href="http://plib.sourceforge.net/fnt">http://plib.sourceforge.net/fnt</a>.</p>
<table border="1" width="100%">
<tbody><tr>
<td width="27%"><img src="Tutorial_43_files/logo%25203.jpg" align="middle" height="200" width="209"></td>
<td width="73%">版权与使用声明:<br>
我是个对学习和生活充满激情的普通男孩,在网络上我以DancingWind为昵称,我的联系方式是zhouwei02@mails.tsinghua.edu.cn,如果你有任何问题,都可以联系我。
<p>引子<br>
网络是一个共享的资源,但我在自己的学习生涯中浪费大量的时间去搜索可用的资料,在现实生活中花费了大量的金钱和时间在书店中寻找资料,于是我给自己起了
个昵称DancingWind,其意义是想风一样从各个知识的站点中吸取成长的养料。在飘荡了多年之后,我决定把自己收集的资料整理为一个统一的资源库。</p>
<p>版权声明<br>
所有DancingWind发表的内容,大多都来自共享的资源,所以我没有资格把它们据为己有,或声称自己为这些资源作出了一点贡献。故任何人都可以复
制,修改,重新发表,甚至以自己的名义发表,我都不会追究,但你在做以上事情的时候必须保证内容的完整性,给后来的人一个完整的教程。最后,任何人不能以
这些资料的任何部分,谋取任何形式的报酬。</p>
<p>发展计划<br>
在国外,很多资料都是很多人花费几年的时间慢慢积累起来的。如果任何人有兴趣与别人共享你的知识,我很欢迎你与我联系,但你必须同意我上面的声明。</p>
<p>感谢<br>
感谢我的母亲一直以来对我的支持和在生活上的照顾。<br>
感谢我深爱的女友田芹,一直以来默默的在精神上和生活中对我的支持,她甚至把买衣服的钱都用来给我买书了,她真的是我见过的最好的女孩,希望我能带给她幸福。</p>
<p>资源下载: <br>
文档 <a href="http://www.owlei.com/DancingWind/Res/mht/NeHe%20OpenGL%20Chinese%20Course%2043.mht">网页格式</a>
<a href="http://www.owlei.com/DancingWind/Res/pdf/OpenGL_Nehe_Course_Tutorial_43.pdf">PDF格式</a><br>
源码 <a href="http://www.owlei.com/DancingWind/Res/Src/43_FreeTypeFont.rar">RAR格式</a></p></td>
</tr>
</tbody></table>
<font class="text">
<table border="0" width="100%">
<tbody>
<tr>
<td align="left" width="50%"><b><font size="-1"><a href="http://www.owlei.com/DancingWind/Course/Tutorial_42.htm">< 第42课</a></font></b></td>
<td align="right" width="50%"><b><font size="-1"><a href="http://www.owlei.com/DancingWind/Course/Tutorial_44.htm">第44课 > </a></font></b></td>
</tr>
</tbody>
</table>
</font> </td>
<td class="r"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="bc" width="100%"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td>
<td class="br"><img alt="" src="Tutorial_43_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -