﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-组件工厂-随笔分类-3D UI Framework与字体</title><link>http://www.cppblog.com/flashboy/category/6417.html</link><description>------3D游戏研发</description><language>zh-cn</language><lastBuildDate>Wed, 16 Dec 2009 09:22:13 GMT</lastBuildDate><pubDate>Wed, 16 Dec 2009 09:22:13 GMT</pubDate><ttl>60</ttl><item><title>WOW字体研究报告</title><link>http://www.cppblog.com/flashboy/archive/2009/12/01/102347.html</link><dc:creator>RedLight</dc:creator><author>RedLight</author><pubDate>Tue, 01 Dec 2009 09:13:00 GMT</pubDate><guid>http://www.cppblog.com/flashboy/archive/2009/12/01/102347.html</guid><wfw:comment>http://www.cppblog.com/flashboy/comments/102347.html</wfw:comment><comments>http://www.cppblog.com/flashboy/archive/2009/12/01/102347.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/flashboy/comments/commentRss/102347.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flashboy/services/trackbacks/102347.html</trackback:ping><description><![CDATA[我喜欢玩WOW的UI风格，尤其是它的高清字体-------任务窗口的内容总感觉十分舒畅。这是从魔兽世界中任务窗口的游戏截图<br><img src="http://www.cppblog.com/images/cppblog_com/flashboy/6771/finish.jpg" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="http://www.cppblog.com/images/cppblog_com/flashboy/font.JPG" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="http://www.cppblog.com/images/cppblog_com/flashboy/6771/font2.jpg" border=0><br><br>经研究， 其实，上面的字体是用方正楷体(不是windows楷体)字体来做的， 用Freetype类库得到每个字符的对应图，并组装排版到一张预先创建好的空纹理中(256*256),&nbsp; 组成一张灰度图，这样可以防止重复字符贴图两遍，提高效率，就像活字印刷术一样灵活组合。<br>渲染的时候，采用字体颜色RGB + 灰度图合成最终效果。<br><br>也许你会发现，左图为什么这么清晰，右图好像稍差一点。对了，其实人的眼睛很奇怪，对颜色的识别是通过对比的，wow正是利用这一点，背景色采用以黄色为主色调，夹杂一些噪声，然后再渲上黑色的文字，这样可以给人感觉到很清晰。<br><br>其实wow中还是其他一些文字效果，比方说：阴影文字，原理是渲染两次同一字符，并在第二次遍渲染作偏移即可。当然，还有那种字体外边包起来的效果，不过这种我还没研究它的算法。<br><br>怎么说呢？一个游戏世界中，字体我觉得相当重要，丰富的字体表现会给人相当美满的效果，带给人美好的印象，所以还是相当重要的。我也在做我的文字配置系统，祝福我早日完成吧！ 谢谢！ 
<img src ="http://www.cppblog.com/flashboy/aggbug/102347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flashboy/" target="_blank">RedLight</a> 2009-12-01 17:13 <a href="http://www.cppblog.com/flashboy/archive/2009/12/01/102347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>3D游戏UI在多分辨率下的底图拼接问题（OpenGL渲染）</title><link>http://www.cppblog.com/flashboy/archive/2009/05/19/83405.html</link><dc:creator>RedLight</dc:creator><author>RedLight</author><pubDate>Tue, 19 May 2009 12:37:00 GMT</pubDate><guid>http://www.cppblog.com/flashboy/archive/2009/05/19/83405.html</guid><wfw:comment>http://www.cppblog.com/flashboy/comments/83405.html</wfw:comment><comments>http://www.cppblog.com/flashboy/archive/2009/05/19/83405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flashboy/comments/commentRss/83405.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flashboy/services/trackbacks/83405.html</trackback:ping><description><![CDATA[在3D游戏中，UI这一块也是挺重要的， 它提供了用户友好的操作接口。一般的话，需要一个控件库，都基本采用自绘来组织。基本上都是贴图及位置计算，布局，消息传递等。我之前也做过两年信息系统的UI，感觉应该没什么问题，跟游戏大致相同。不过游戏要求要适应多分辨率布局支持，好了，这下麻烦了，由于早期OpenGL一般只支持256*256以下的图片，而要做一张512*512的底图显然需要四张256*256的小贴图拼接而成，虽然说OpenGL会提供相当的图片像素点插值来扩大或缩小贴图，但如果你移动窗口底图到某个地方的话， 很显然的会出现 + 裂缝，经过各种方式都未能搞定。 大家有做过这种问题的， 或者有什么好的建议的好， 跟我说一下， 谢谢！<br><br>注：WOW的UI窗口底图也是256*256的底图拼接而成，但它为什么就不会出现裂缝呢？而且它的UI界面还可以调整缩放的，真的好强，但我不明白它当中的道理， 闷就只有一个字， 对你说一次， 有搞过的， 一定要对我说喔， 十分感谢！ <br><br>问题终于解决了, 原来OpenGL的纹理没有镜像寻址方式, 所以很麻烦, 暂时没想到更好的方法, 只能让窗口的底图有一张图。后来我改用了D3D，知道D3D有一种纹理寻址方式叫D3DTADDRESS_MIRROR, 过滤方式使用线性插值就可以了。现在窗口的底图完全可以像wow一样，用四张图拼成，每张图不超过256*256, 以适应配置更低的机器使用。
<img src ="http://www.cppblog.com/flashboy/aggbug/83405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flashboy/" target="_blank">RedLight</a> 2009-05-19 20:37 <a href="http://www.cppblog.com/flashboy/archive/2009/05/19/83405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>