自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (12)
  • 收藏
  • 关注

原创 VS 2012 单元测试简单配置

写算法时大多依靠简单输入验证,经常遇到小范围输入正常,大范围或特殊情况输入结果错误的问题。所以写程序之前最好先想好几个特殊用例来测试,以验证算法是否正确。单元测试就是个不错的工具,而VS 2012提供了很方便的单元测试功能。

2013-07-15 07:41:06 7488 1

原创 [HTML5]使用Box2dWeb模拟射箭效果并添加能量槽

上次已实现箭矢的飞行效果,但是箭在碰到墙壁时直接反弹回来,像钢棍而不是箭。在Box2d中,可以利用关节(Joint)将箭和靶子连接起来,组成一个整体,实现射击效果。使用关节要在文件开头添加新的变量,方便后面使用:var b2Joints = Box2D.Dynamics.Joints;var b2Contacts = Box2D.Dynamics.Contacts;var b2List

2013-03-26 08:03:27 2810

原创 [HTML5]使用Box2dWeb模拟飞行箭矢

Box2d是一个2D游戏物理引擎,由Erin Catto开发,于2007年发布。很多2D游戏都用过Box2d,其中最有名的自然是愤怒的小鸟。Box2d本身是C++编写,但在不同平台都有它的衍生版本,像Flash版的Box2dFlash,JS版的Box2dJS和Box2dWeb。最近偶然看到一篇使用Box2dFlash模拟箭矢飞行效果的文章:http://www.emanueleferonato

2013-03-18 09:14:24 6833 1

原创 Project Euler Problem 27小结

Project Euler上有很多有意思的问题,刚做到第27题,对这个问题做个小结。 Problem 27:Euler有一个著名的方程n^2+n+41,当n=0到39时,方程结果均为质数。如今人们用电脑计算,发现了另一个方程n^2-79n+1601,当n=0到79时,方程结果也均为质数。设一方程形如n^2+an+b,其中|a|求使得公式能获得最多质数的a和b,输出结果为a*b。

2013-02-24 10:14:30 1640

原创 Windows 8 DirectX 开发学习笔记(十六)使用Terragen生成自然环境贴图

DirectX 游戏编程入门中提到一个Terragen软件可以生成环境贴图,所以登陆它的官方网站看了下。没想到Terragen生成的图片和照片一样,效果非常好,很多电影里有用到,所以下载免费版尝试一下。免费版有功能限制,不过足够学习使用。软件下载地址:http://planetside.co.uk/index.php?option=com_content&view=article&id=3

2013-02-10 23:12:41 5263 1

原创 Windows 8 DirectX 开发学习笔记(十五)使用Billboard实现树木贴图

要使用DirectX来获得三维效果,一般首先要生成一个三维模型,然后计算它在可视空间中的投影。这样得到的二维图像十分真实,但是计算量也很大。在大规模场景渲染中,随着模型精度的提高,这样的处理方式十分消耗资源。人眼的分辨率是有限的,对于远处的模型,模糊一些不会影响到整体效果。Billboard技术就是用二维图片来模拟三维模型的投影,从而提高渲染效率。只要距离足够远,通过将二维图片旋转至合适角度,实际

2013-01-22 07:57:21 9425 5

原创 Windows 8 Directx 开发学习笔记(十四)使用几何着色器实现三角形细分

几何着色器是从DirectX 10才引入的着色器,是一个可选阶段,位于顶点着色器和像素着色器阶段之间。顶点着色器以顶点作为输入数据,而几何着色器以完整的图元作为输入数据,像点、直线、三角形等。之所以引进几何着色器是为了充分利用GPU的计算能力来生成几何结构和模型细节,减轻CPU的负担,让CPU更专注于逻辑控制。几何着色器的编程和其它着色器类似,在VS2012中默认生成的几何着色器代码如下:

2013-01-15 08:39:20 9359 8

原创 Windows 8 Directx 开发学习笔记(十三)利用模板实现木箱镜像

假设墙上有一面镜子,镜子前面有个木箱。如果观察角度合适,整个木箱镜像都会在镜子里,计算起来还比较简单;而变换个角度,木箱的镜像可能只有一部分在镜子里,这时单纯依靠计算来实现就很麻烦。DirectX提供了模板技术以方便地完成这个任务。我印象中用到模板就是喷漆的时候。将设计好的图案在一块板上刻出来,然后把这块板扣在要喷涂的地方,不管三七二十一直接喷漆,最后把板拿下来,图案就喷好了。DirectX中的模

2013-01-08 08:28:59 4672 8

原创 Windows 8 Directx 开发学习笔记(十二)利用混合实现浮在水面的木箱

在场景中绘制多个不透明物体时很简单,哪个物体离得近,看到的就是哪个物体。但如果加入一个透明的物体,像玻璃,如何渲染就有些麻烦。拿一块红色的玻璃挡住眼睛,看到的物体都偏红,换成蓝色的玻璃,物体都偏蓝。DirectX中的“混合(Blending)”技术可以解决这个问题。混合技术其实也不难,但是通过不同运算方式和系数的组合,它能实现很多效果。它的基本原理就是混合方程:其中乘号表示向量对应

2013-01-01 08:59:55 9700 2

原创 Windows 8 Directx 开发学习笔记(十一)地形纹理贴图

前一篇实现木箱贴图时,木箱的六个面都正好用一整张纹理图,即六个面的纹理坐标均在[0,1]内。然而在为比较大的模型贴图时,像山峰河谷模型,如果只用一张纹理图,那么每个三角形只得到几个纹理元素,无法为提供足够高的分辨率。这时可以在模型表面上平铺纹理贴图,像给墙面贴磁砖一样,只需要知道一个单位的贴图,就能铺满整个表面,从而获得较高的分辨率。实现起来其实很简单,只要变换纹理坐标的范围,同时将纹理寻址模式设

2012-12-25 09:13:42 7779 11

原创 Windows 8 Directx 开发学习笔记(十)纹理贴图实现旋转的木箱

纹理贴图映射(texturemapping)是可以显著提高场景细节和真实感的一种技术,基本原理是将图像数据映射到3D三角形表面(之前的文章提到过,三维模型其实是由很多个三角形拼接而成)。当使用纹理资源时,只要将每个3D三角形与纹理资源上的三角形对应,就可以实现贴图效果。如图1,有一个立方体模型和纹理贴图,将立方体上的点与纹理贴图上的点对应,就像给一个没有颜色的正方体贴一层木纹包装纸。

2012-12-18 08:31:20 7902 6

原创 Windows 8 Directx 开发学习笔记(九)材质定义及混合光照效果实现

在真实环境中,同一个物体在不同光源照射下的颜色并不一样,因为物体本身并没有颜色,而是它会反射不同颜色的光。物体对不同颜色光的吸收率、反射率,加上光泽度、透明度等其他物理属性组合在一起,定义了这个物体的材质。知道物体的材质,就能够方便地算出物体在不同光源照射下的颜色。这里简化山峰模型,统一使用陆地材质,水面则使用水材质,增加了平行光源、点光源和聚光灯三种光照模式,模拟一个更通用的山峰水波模型。实现流

2012-12-11 08:49:18 6633 12

原创 Windows 8 Directx 开发学习笔记(八)要有光

上一篇已经完成水波纹模型,但是只是在线框模式下能清晰的看到波动效果,实体填充时无法看出水面变化,主要原因就是没有引入光照。这里通过更改顶点着色器和像素着色器,引入水面的漫反射效果,让整个模型更加真实。为简化漫反射模型,假设光照射物体时,反射光会在物体表面均匀散开。这样,无论观察点在哪里,总能看到反射光。物体表面漫反射光的颜色可以用兰伯特余弦定理进行计算,如下图所示:n是法向量,

2012-12-03 15:06:34 3367

原创 Win8 DirectX 开发问题总结(一)

参照Win32下的DirectX 10代码,实现基于DirectX 11的Windows Store App,虽然是弯路,会遇到一些额外的问题,但是感觉在解决问题的过程中,能对DirectX理解的更深一些。而且这样做能够避免自己直接复制代码,不关注细节。这里对目前为止遇到过的问题进行总结,防止自己以后犯同样的错误。水模型之前的代码只是对VS2012模板代码进行简单改动,从没遇到问题,问题都出现在实

2012-11-30 09:00:57 2618

原创 Windows 8 Directx 开发学习笔记(七)水波纹的实现

使用DirectX实际开发中,模型的形状不可能都是一成不变,只依靠移动摄像机去实现动画。这里用实时更新顶点缓冲的方式生成一个水波模型,最终效果类似向水面扔石子时出现的水波纹。有了上一篇建立好的模型,实现这个效果仅需要更改WaterModel类和Renderer类里m_water的相关调用。首先更改WaterModel的头文件,添加模拟变量成员和临时缓冲区指针,并增加两个方法Disturb和Up

2012-11-19 14:23:17 6766 12

原创 Windows 8 Directx 开发学习笔记(六)添加水模型

HillExample已经完成山峰河谷的模型,可惜的是河谷是旱季的河谷,没有水。这次的目标就在河谷里注入水。首先新建HillWaterExample项目,其配置与HillExample项目相同。然后复制HillExample中CubeRenderer.cpp和CubeRenderer.h文件到HillWaterExample目录覆盖同名文件,这样可以省去重写生成山峰模型的代码。为了使代码结构更

2012-11-15 08:26:38 4091 1

原创 Windows 8 Directx 开发学习笔记(五)山峰河谷模型的简单实现

通过之前对DirectX示例程序代码的研究,基本了解DirectX最简单的工作过程,为了更好的理解整个过程,基于示例程序做一个山峰河谷的简单模型。首先还是根据模板创建正方体的示例程序,Visual C++ -〉Windows应用商店 -〉DirectX3D应用程序,如图1。设置好名称后完成创建。程序显示一个类似山峰河谷的模型,只要将正方体的数据替换成模型数据即可。在不改变示例程序其他部分的

2012-11-06 14:07:40 3675 2

原创 Windows 8 Directx 开发学习笔记(四)示例程序小结

VS2012的示例程序包括了最基本的DirectX流程,涉及许多知识,所以看完代码之后还是感觉没有头绪,打算对整个过程再整理一下,方便进一步的学习。正方体在空间中可以用它的8个顶点定义,而每个顶点可以包含除坐标外的信息,如颜色。设置好属性后,数据是以数组的形式存在内存中的。由于所有的数据都是浮点数,所有需要输入布局来控制读取数据,如下图。使用输入布局能够区分出各个顶点,把这些顶

2012-10-29 08:26:00 3149

原创 Windows 8 Directx 开发学习笔记(三)摄像机设置及控制正方体旋转

完成模型定义后就可以进行显示处理。CreateWindowSizeDependentResources方法首先根据窗口状态初始化显示比例,并设置可视角度为70度(DirectX只支持弧度,度转为弧度可通过常量XM_PI实现);0.01f和100.0f则用来设置可见距离。这些参数之间的详细介绍见directx10游戏编程入门 5.6。void CubeRenderer::CreateWi

2012-10-29 08:24:59 4728 1

原创 Windows 8 Directx 开发学习笔记(二)建立模型及初始化设备

上一篇中介绍的DirectxApp类给整个应用搭建了一个框架,而这篇文章涉及的CubeRenderer类则是负责填充框架,呈现实际内容:一个旋转的彩色立方体。CubeRenderer类中的方法通过名称就很容易理解,但是它们之间的联系和功能实现比较复杂,而且CubeRenderer类的成员较多,涉及到DirectX的基本原理和概念,看上去无从下手。没办法,打算按照代码的顺序去看,遇到哪里不明白就去查

2012-10-26 09:25:23 5142 6

原创 Windows 8 Directx开发学习笔记(一)应用基本框架

Windows 8系统10月25日就要正式发布,其应用可与Windows Phone 8应用兼容,所以打算转到Windows 8系列的开发。之前虽然开发过应用,但对游戏开发更感兴趣,随意开始学习Metro风格的Directx开发。同WindowsPhone 7开发一样,首先从最基本的应用开始看。但使用Directx不像之前那么简单,自己写不出示例代码,只好选择VS2012的模板项目开始学习。使

2012-09-25 15:28:57 5760 2

原创 Python随手记(二) 获取目录信息•改

之前已经完成获取目录信息的基本功能,但在内容比较多的目录下运行结果如图1。一个字形容就是“乱”,效果很不好,需要改进。图1 原始版显示效果首先感觉时间格式怪怪的,而且星期之类的也没有必要显示,所以从这里下手。查询手册(Python v3.2.3--15.3)找到两个有用的函数,一个是time.strftime(),一个是time.localtime ()[1],分别可以格式化时

2012-09-19 07:55:28 1129

原创 Python随手记(一) 获取目录信息

最近需要处理许多数据文件,常用matlab处理,虽然很方便,但是每次启动慢,很麻烦。用C语言之类的需要考虑细节,处理文件又只是随手用用,感觉不值得花费太多时间。后来发现Python是个不错的选择,小巧方便,因此找些资料开始学习下。入门细节不多说,直接用程序练习。目的是为了熟悉文件操作,所以想先写个脚本获取当前目录信息的小功能。需要输出的有:1、 文件名及子目录名2、 文件大小(单位KB

2012-09-19 07:55:12 1631 1

原创 Windows Phone 开发学习笔记(十一) RSS阅读器之显示数据

现在已经完成XML页面数据的获取和解析,接下来就要把数据展示在手机页面上。RSS阅读器的信息一般是一条条显示,所以选择ListBox控件。显示信息的基本结构和效果如图1:图1 基本结构和显示效果信息列表中,每条信息都有标题、内容、发布时间三个部分,所以创建一个信息类定义信息的各个属性。之后根据解析的数据创建信息对象集合,最后使用ListBox将集合内容显示在页面上。首先创建

2012-08-19 08:40:48 1671

原创 Windows Phone 开发学习笔记(十) RSS阅读器之解析数据

上一篇文章已经完成XML页面数据的获取,接着需要解析获得的数据。虽然只需读取有效内容,仍然要对XML格式有基本了解。XML(Extensible Markup Language)即可扩展标记语言,由一系列自定义标签和数据组成,可以结构化信息,方便存储和传输。下面是新浪科技新闻频道XML页面(http://rss.sina.com.cn/tech/rollnews.xml)源代码的一部分(去掉开

2012-08-06 07:59:27 1602

原创 Windows Phone 开发学习笔记(九) RSS阅读器之获取数据

Hello WindowsPhone的背后虽然有很多内容,但是展示出来的效果毕竟简单,因此想通过实现一个简单的RSS阅读器来熟悉更多应用层面的开发。其实在MSDN上有一个RSS阅读器的例子(http://msdn.microsoft.com/zh-cn/library/hh487167(v=vs.92)),不过说明比较少。这里从头开始实现一个RSS阅读器。常理推断,RSS阅读器的工作流程很简单,如

2012-07-29 19:22:33 1629

原创 Windows Phone 开发学习笔记(八) Hello Windows Phone之本性难移

之前的文章都在关注应用的代码,而一个能够发布的应用,仅实现功能是不够的。微软对发布到Marketplace上的应用属性还有要求,估计是为了便于管理。这里就介绍下应用的一些属性,看看Hello Windows Phone的真面目。首先看下Hello Windows Phone的项目结构:绿色边框包括的部分已经学完,只剩下红色边框内的内容没有看,而其中的内容在应用审核时比较重要。Ref

2012-05-27 20:42:10 1164

原创 Windows Phone 开发学习笔记(七) Hello Windows Phone之有始有终

本篇继续分析App构造函数。在Silverlight完成初始化后,App构造函数调用InitializePhoneApplication: private voidInitializePhoneApplication() { if(phoneApplicationInitialized) return;

2012-05-20 20:33:31 1377

原创 Windows Phone 开发学习笔记(六) Hello Windows Phone之生死有命

现在为止只不过对Windows Phone中的MainPage.xaml有所了解,项目中还有一个App.xaml没有看。既然MainPage是与页面内容相关,那么App肯定是与整个应用有关。而且App也是XAML类型的文件,它和MainPage.xaml结构应该类似,之前的研究也能派上用场。<Application x:Class="HelloWindowsPhone.App"

2012-05-09 20:59:13 886

原创 Windows Phone 开发学习笔记(五) Hello Windows Phone之虎头蛇尾

在上一篇中,只查了下x:Class="HelloWindowsPhone.MainPage"的解释,初步了解了XAML和CS文件之间的关系。而在MainPage.xaml中,还有很多行语句没有分析xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.micros

2012-05-05 07:52:57 733

原创 Windows Phone 开发学习笔记(四) Hello Windows Phone之心有灵犀

经过上一篇对页面布局的调整,对XAML文件有点了解。不过在看XAML文件和它对应的CS文件时发现一个问题:XAML文件与CS文件中控件的名称是共用的。而在CS文件中没有看到像using MainPage.xaml或者其他特别的语句,难道CS文件与XAML文件心有灵犀?下面是MainPage.xaml.cs文件的主要代码:namespace HelloWindowsPhone{public

2012-04-22 12:20:16 1189 1

原创 Windows Phone 开发学习笔记(三)Hello Windows Phone之深藏不露

如果说程序是一个人,那么界面就是他的相貌。虽说不要以貌取人,但多数时候相貌好总有点优势。开发Windows Phone应用时,更改单个控件的样式是很简单的:只要选中控件,打开属性窗口就能调整。而且通过字面意思就能了解绝大多数属性的作用,还能在设计视图实时查看属性改变对显示效果的影响。不过布局用到的控件,如Grid、StackPanel等,不方便查看,所以,理解如何进行界面布局,还要求助XAML源代

2012-04-14 19:43:51 1204

原创 Windows Phone 开发学习笔记(二) Hello Windows Phone之不费功夫

现在这个时代,各种技术层出不穷。很长一段时间里,在开发程序时我首先是搜索功能相近的例程,以它为基础,修改实现自己的功能。可这样只解决一时问题,一旦需要扩展功能或者程序出现问题,解决起来毫无头绪。慢慢意识到基础的重要,也想仔细读读书。可每部书都特别厚,字典一样,从头到尾读完真有点困难,而且学到新东西不实际应用一下总觉得没意思。因此想通过研究些小项目,结合相关书籍和文档来学习,这样不但能对书中介绍的知

2012-04-13 20:19:23 1002

原创 Windows Phone 开发学习笔记(一) 开发环境搭建

2010.2.15微软在全球移动通信大展上公布Windows Phone 72010.10.11微软正式发布WP72011.5.24微软正式发布WP7.1(Mango)2012.2.29微软marketplace中国区上线2012.3.21WP7.5正式登录中国市场随着WP7.5正式登陆中国市场,相信会有越来越多的人关注WP应用开发。两年来,已经有很多先

2012-04-12 20:14:22 1136

【HTML5】使用Box2d模拟箭矢射击效果

使用Box2dWeb库模拟箭矢射击效果,添加能量槽,可调整射击力量,默认只有3支箭可用。 注:仅在Chrome 25.0.1323.1下测试

2013-03-26

【HTML5】使用Box2d模拟飞行箭矢

使用Box2dWeb库模拟飞行箭矢 注: 1、仅在Chrome 25.0.1323.1下测试 2、因为懒得切换输入法,所以注释均为英文

2013-03-17

Win8 Metro DirectX 利用Billboard技术实现树木贴图

使用几何着色器,利用Billboard技术实现树木贴图绘制。 VS2012 Pro + Win8 Pro编译运行

2013-01-22

Win8 DirectX 使用几何着色器实现三角形细分

使用几何着色器实现三角形细分功能。几何着色器中的main方法实现细分效果,omain方法是未细分效果,可通过设置着色器入口点更改。 VS2012 Pro + Win8 Pro编译运行

2013-01-14

Win8 DirectX 实现木箱镜像(整理版)

同样实现木箱的镜像效果,不过对代码进行了整理,去掉重复代码,更简洁一些。 VS2012 Pro + Win8 Pro编译运行

2013-01-08

Win8 DirectX 实现木箱镜像

实现木箱的镜像效果。 VS2012 Pro + Win8 Pro编译运行

2013-01-07

Win8 DirectX 实现透明水面漂浮木箱

改进山峰水面模型。使水面透明,并在水面上添加一个木箱。 VS2012 Pro + Win8 Pro编译运行

2012-12-31

Win8 DirectX 山峰水面纹理贴图实现

为山峰水面模型贴图,并包括平行光、聚光灯、点光三种光照效果。山峰模型有草地和岩石两种纹理,分别为grass.jpg、rock.jpg。 VS2012 Pro + Win8 Pro编译运行

2012-12-24

Win8 DirectX 纹理贴图实现木箱

使用纹理贴图实现一个旋转的木箱,并添加简单的漫反射光效果。 VS2012 Pro + Win8 Pro编译运行

2012-12-14

Win8 DirectX 多光源混合效果示例程序

定义陆地和水面两种材质,建立山峰和水面模型。 模拟平行光、点光源、聚光灯同时照射的效果。 VS2012 Pro + Win8 Pro编译运行

2012-12-10

Win8 DirectX 漫反射光示例程序

使用DirectX中的顶点着色器和像素着色器实现漫反射光的计算。场景物体为山峰和水面。 VS2012 Pro + Win8 Pro编译运行通过

2012-12-03

Win8 DirectX 示例程序

Win8 DirectX 示例程序 Direct3DApp_HillExample--实现山峰模型 Direct3DApp_HillWaveExample1--实现山峰和静止水面 Direct3DApp_HillWaveExample2--实现山峰和水波效果

2012-11-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除