基于XNA的例子下了几个,不寒而栗。主要是代码看起来让人有种回到过去的感觉,那个刚会堆叠代码,为实现一点小功能欣喜若狂的过去。

说句托大的话,很多例子的编码方式,看起来就像是未经任何程序训练,学会了凑几句语法,就在从事开发的初学者的处女作。结构和思路完全找不到清晰的脉络,代码复用和扩展性完全没有进入作者的大脑。这些看法仅代表个人意见,如果令人不快,请见谅。

如果这种水平代表了国内XNA开发者的平均水准,那我们拥有着一个并不乐观的未来。我从来不认为XNA和dotnet framework是一个玩具,打从微软在中国推广dotnet平台的那天起,我第一时间弄到了vs2003,时刻关注着它的发展。高级语言是趋势,是不可逆转的趋势,然而因为糊口或者种种原因,我一直没有成为一个专职的dotnet开发者。或许这种关注和自己并未投身其中的遗憾,让我面对国内dotnet 平台图形开发的囧境格外的敏感。

然而囧境还远不止于此。dotnet平台过去因为发行的不便造成很多应用不采用dotnet,在pc 平台因为面对原生c++和directX无力还击,在Xbox live因为正规厂商用原生sdk开发并且零售,后娘养的XNA始终无法占据主流。过去的一切悲痛随之逝去,留下一颗健壮的心,准备承受现在的悲痛。

XNA3.1 登陆ZuneHD,成为唯一的图形接口。windows phone 7确定XNA4为唯一的图形接口,XNA4 with shader model3。好消息,因为唯一,可以远离语言之争,zune 和 windows phone,dotnet开发者所期待的舞台,微软终于把它带到这个市场上。我可以相信这一切只是开始,在操作系统上,归于应用也是一种趋势,对于底层的,原生的开发方式,将会越来越小众。对于微软,dotnet就是未来,之于图形,XNA就是未来。之于微软死忠的我们,现在不正是前途明朗,应该投入其中的时候么?无论是为掘金还是为了兴趣。

XNA4,你今天加入了嘛?

希望与失望总是形影不离,XNA开发的群我加了几个,论坛我也逛了几个。面对满篇没有营养的基础提问,面对对于zune和windows phone的漠视,面对用xna非要在pc上死磕的悲壮,我无奈,我失望。即使dotnet成为主流的那一天,站在舞台上的也决不会是这些浑浑噩噩的人。

XNA4尚未正式发布,兄弟,你在哪里。我并非XNA的义务推广者,在pc平台,我是一个专职的c++开发者。我对于XNA没有特别的感情,只是因为windows phone 7,所以dotnet,所以XNA。花了一个星期,前方竟然没有发现潜在的竞争者,这是何其无聊的局面。

志同者何在,掘金windows phone 7,一起出发吧。

xna4的游戏定位,微软的平台提供者身份,注定了XNA是只有draw的设计,DX的弟弟。XNA4 到 最终产品 中间所缺失环节是我着力关注的部分。我前行,我所取得的进展,对于后来者来说就是宝贵的财富。

这几天我得空的时候在搞场景管理,对于图形,没有最好,只有最合适。况且基础的部分已然扫平了技术障碍,但shader还不能在windows phone 7 上应用。又加上这几天我发现在XNA上中文竟然一直没有一个优雅的解决方案。那些用gdi+解决的方案,我的评价只有两个字:脑残。被pc平台绑架的解决方案我的评价还是只有两个字:壮烈。对于花那么多精力做壮烈的事儿的人,就只能称为无聊了。

头上呆毛一颤,我看到一个商机。我开发一个优雅的truetype字体解决方案,大概花一两个月,按我自我的价值认知判断价值5W。等到后来者加入这个行列时,他投入5W搞开发应该可以实现和我同等的功能,如果他投入不足5w就能实现同等功能,我这些年程序就白当了。这些吹牛的话听听就算了,重要的是一个优雅的XNA中文显示方案,绝对是有商业价值的。由于是由商业价值的计划,就恕我只放出库,源码就隐了^_^.

    XNA图形引擎计划变动,truetype显示方案,优先级提升到比地形更高。

另外还有输入方案,内嵌在游戏中的输入法,这个先挂起,这要看到时候windows phone7多国语言支持的情况了。手机上没有中文输入法还在中国卖,这样的笑柄是不可能发生的。关键是这个中文输入法,能不能再XNA应用中呼出,这个可能性不大,横向对比其他手机平台,游戏中的输入还都是很尴尬的。

假设windows phone 7 还是无视XNA应用中的输入法问题,我再开发一个XNA输入法模块,这毫无疑问也有着直接的商业价值。

    扯了半天,字体没说一句,正题正题。

http://www.microsoft.com/typography/SpecificationsOverview.mspx

我的方案是直接载入ttf文件解析,在内存中动态生成字模。上面的链接是微软对ttf文件的格式说明,我昨夜搞到半夜,以simsunb.ttf为测试对象,将字体文件的基本数据读取分析完成了,剩下就是对于轮廓数据的解析和显示。就整个方案来说10%完成度。

使用方法如下,都是伪代码

clge_font font =new clge_font(“simsunb.ttf”);

最终输出方案我还没写,不过脑子里已经构造的很清楚了。

输出一,输出到模型,其实就是采用输出二来实现,将会提供源码

clge_font.MakeMesh(顶点格式,string 输入字符串,模型尺寸)

输出二,输出成路径。

路径就是点列表。

用户可以使用这些路径去做效果,那我就不管了。比如在每条路径上搞一个闪光特效,结合楼上的输出一,就可以实现有一个围着字的边缘放烟花的效果。用户可以使用路径创建模型,我提供一些从路径创建模型的示例,比如创建带导角,和空心字模型。

clge_font.MakePathList(string 输入字符串)

输出三,输出到贴图

clge_font.WriteToTexture(ushort 字符,int 字号,RECT 目标输出区域)

输出四,直接绘制String

这个只是对输出三的封装,将会提供源码

ShowFont sfont = new ShowFont(clge_font 字体,int 字号,bool 采用动态缓存还是静态缓存)

//动态缓存就是只创建一张贴图,根据词频调整删除最早使用的。静态缓存在贴图放满字模时会再创建一张

SpriteBatch.begin();

sfont.draw(SpriteBatch,string 显示字符串,int x,int y);//提供采用SpriteBatch输出的实现,用户如果采用其他引擎做UI输出,对应修改源码即可。

SpriteBatch.end();

转载于:https://www.cnblogs.com/crazylights/archive/2010/11/03/1868390.html

windows phone 7开发日志(正题二,字体)相关推荐

  1. 基于WPF+XMPP的IM程序开发日志 之二 WPF线程模型

    循例地在开始正文前说些废话.正如这篇博客的题目--开发日志,这系列的博客是我在编写这个IM的一些日志,或者另外一个说法:笔记.并不是一些系统的文章,例如"XX学习教程".这些博客里 ...

  2. [明日方舟抽卡数据库]开发日志(二)

    明日方舟抽卡数据库 上一章:[明日方舟抽卡数据库]开发日志https://blog.csdn.net/qq_37439115/article/details/125608849 目录 前言 一.新增功 ...

  3. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  4. Windows c++界面开发初学(二)win32

    今天跟着微软的文档和一些博客写了个win32的hello world. 因为代码注释写的比较详细了就不加太多描述了. 这里放一下文档链接和博客链接: 微软文档:创建传统的 Windows 桌面应用程序 ...

  5. 3dContactPointAnnotationTool开发日志(二十)

      为了使工具更人性化,我又在每个status的text上绑了个可以拖拽实现值改变的脚本,但是不知道为啥rotx那个值越过+-90范围后连续修改就会产生抖动的现象,试了很多方法也没能弄好,不过实际用起 ...

  6. VSTO进行时––开发日志之二(VSTO Development diary II)

    原文见  [url]http://www.5ushare.com/vsto/vsto%e8%bf%9b%e8%a1%8c%e6%97%b6%e2%80%93%e2%80%93%e5%bc%80%e5% ...

  7. 3dContactPointAnnotationTool开发日志(二一)

      今天完成了修改按钮颜色,添加smpl模型到工具,以及可以显示物体子物体对应选项卡的功能.把之前的meshRenderer+meshFilter都改成了skinnedMeshRenderer,因为s ...

  8. 3dContactPointAnnotationTool开发日志(二二)

      昨天是实现了显示GameObject子GameObject的选项卡功能,今天就是要让statusPanel可以控制它们的位置.旋转和缩放了.   没什么难的,对应选项卡绑定上对应的物体或子物体即可 ...

  9. 【Lolttery】项目开发日志 (二) 数据库的二三事

    基本的框架定好了之后,就是数据库的问题咯.在框架上我们选用了现在比较流行的mybatis框架. mybatis与spring的整合十分简单: <!-- 配置sqlSessionFactory - ...

最新文章

  1. Linux系统文件类型
  2. MySQL的错误:No query specified
  3. 输入 vscode_【Python技术入门2】Python集成开发环境VSCode搭建
  4. [计算机网络] - IP基础知识
  5. python写一个计时器_Python 实现一个计时器
  6. 跟女朋友约会一般都干些什么?
  7. 2020年入门数据分析选择Python还是SQL?七个常用操作对比!
  8. 在finally块中使用try catch,并且catch的时候抛出异常的一个问题
  9. 【转载】深入理解Java内存模型——final
  10. 5.PHP 命令行模式
  11. 【转载】ARX程序再VS2002中的调试初探
  12. 谁有《线性系统理论习题与解答》郑大钟
  13. Windows配置Rsync同步,安装cwRsync
  14. 转行学习IT技术要做哪些准备
  15. 2022游戏出海实用发行策略
  16. 【六类网线的制作方法】
  17. vuepress-theme-reco主题相关配置 + gitee pages 部署
  18. Freemarker模板---引擎学习
  19. 笔试题——硬币与金币(概率)
  20. Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记

热门文章

  1. Rocket MQ(四)Topic,Topic分片和Queue
  2. 锐捷——RIP基础配置
  3. 02 数学软件与建模---MATLAB入门
  4. GitHub 高星开源项目今日发起
  5. Rhyme/Spring是如何简化Java开发的(POJO、DI、AOP、模板)
  6. Linux进程KILL--Quit,INT,HUP,QUIT,和TERM、PIPE的解释
  7. 全国2010年10月考试电子商务与电子政务试题
  8. javascriptDOM知识脑图_henry_dx_新浪博客
  9. 数据库—查询(有无回调函数)
  10. 下一个马克·扎克伯格会是人工智能吗?