Clayman的专栏

It's all about XNA & GPU Programming

用户操作
[即时聊天] [发私信] [加为好友]
claymanID:soilwork
192830次访问,排名382好友0人,关注者13
soilwork的文章
原创 85 篇
翻译 15 篇
转载 0 篇
评论 330 篇
clayman的公告
嘿嘿 ^o^....
最近评论
ffffk:研究到这的都是高手
jym5596337:我也不知道我怎么就走到了你的路上来了呵呵...
太晕了,我们专业就学的C#... 那我就凑合着用它学习MDX喽,但到了2008你的这个时期,感觉形式有点尴尬,以前的人说 在中国搞软件是 前有微软,后有盗版。
现在是 前有XNA后有C++ ... MDX 学习资料太太太难找了。。太太太少了。 师兄给介绍下你学历路途中的资料目录咯。。。我好找来学习咯。。 感谢哦感谢。。
jym5596337:好象没有继续哇 ...
shapin:ATI的网站有个支持HLSL语法高亮的vs插件,可以支持其他版本,只要修改相应的那个注册表就行
flip:To linxv :
貼圖座標有用投影嗎?
文章分类
收藏
    相册
    blogs
    David Weller
    nVidia Developer blog
    Rico Mariani
    Shawn Hargreaves
    XNA Team blog
    XNA资源
    XNA Creators Club
    ZBuffer
    Ziggyware XNA Resources
    中国XNA开发网
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 xna教程(四)——在xna中绘制字体收藏

    新一篇: 《The Complete Effect and HLSL Guide》翻译连载(一) | 旧一篇: XNA教程(三)—— sprite绘制效率

    作者:clayman
    仅供个人学习使用,请勿转载,勿用于任何商业用途。
    由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。
    Blog:
    http://blog.csdn.net/soilwork
    clayman_joe@yahoo.com.cn
      

              在XNA中绘制字体是一件很麻烦的事。由于XNA是跨平台的,而在Xbox 360中,并不存在系统字体,所以,目前的xna并不支持绘制字体。虽然我们仍然可以使用一些方法,在xna中调用GDI+来绘制字体,但这样你的程序就失去了跨平台性,同时,调用GDI+也会影响绘图的效率,因此,这不是一个推荐的方法。那应该如何来做呢?
             目前较好的解决方案是使用位图字体(Bitmap Font)。所谓位图字体,其实就是预先把字体制作为一张位图,之后,就可以把位图当作字体来使用了。需要注意,由于字体已经制作为了位图,因此,大小是固定,所以应该根据需要,创建不同大小版本。当然,位图字体也提供了我们为游戏创建独一无二字体的能力。为了方便使用,通常把很多字体绘制到一张位图中,这就带来了另一个问题: 如何从一张图片中识别某个字符呢?很简单,常见的位图字图创建工具在创建位图的同时,还会创建一个xml文件。在这个文件中,记录了每个字符在位图中的位置,大小,下面是某个xml文件中,标示字母“A”的代码:
    <glyph ch="A" code="0041" bm="0" origin="95,27" size="15x27" aw="14" lsb="0" />
            
                就像查字典一样,通过这个xml文件,我们就能定位所要的字符。
    (一张Bitmap Font)
             Bitmap Font BuilderBitmap Font Generator都是创建位图字图不错的工具。特别是Bitmap Font Generator,会根据字体大小来排列字体,尽量减少位图尺寸。但这两个工具都不能很好的支持Unicode,也就是说,如果需要创建中文,那么可能会遇到一些问题。这里推荐使用XNAExtras工具包。XNAExtrasXNA Diares提供的一系列助手程序和类。包含了BMFontGen,一个用于创建位图字体的,支持Unicode的小工具;BitmapFont,可以使用BMFontGen创建的位图字体,方便的绘制字体的类。此外,他还包含了一些Demo,和一些用于绘制sprite的工具。如果有时间,最好仔细研究一下BitmapFont的源码,能让你对使用位图字体有更加深入的认识。万一觉得代码太复杂,那么不妨先看看 ziggyware 上另外一篇创建和绘制字体的教程。
    --------------------------------------------------------------------------------上古分割线------------------------------------------------------
         
           上一次提到把Game类的AllowUserResizing设置为true就能改变窗口大小。不知你发现没有,缩放窗口时会出现一个bug,当前窗口会跑到桌面上所有窗口之下(如果你开了很多窗口)。解决方法是添加System.Windows.Forms;引用,接下来在程序初始化代码中为this.Window.ClientSizeChanged事件添加一个eventhandler,然后在eventhandler中添加如下代码:
    ((System.Windows.Forms.Form)System.Windows.Forms.Form.FromHandle(Window.Handle)).BringToFront();
    ps:10月分的DirectX SDK中,将不再包含MDX 2.0,纪念一下~~~
     
       

    发表于 @ 2006年09月25日 22:26:00|评论(loading...)|编辑

    新一篇: 《The Complete Effect and HLSL Guide》翻译连载(一) | 旧一篇: XNA教程(三)—— sprite绘制效率

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © clayman