Windows 8 Directx
文章平均质量分 77
RaymondCode
这个作者很懒,什么都没留下…
展开
-
Windows 8 Directx 开发学习笔记(三)摄像机设置及控制正方体旋转
完成模型定义后就可以进行显示处理。CreateWindowSizeDependentResources方法首先根据窗口状态初始化显示比例,并设置可视角度为70度(DirectX只支持弧度,度转为弧度可通过常量XM_PI实现);0.01f和100.0f则用来设置可见距离。这些参数之间的详细介绍见directx10游戏编程入门 5.6。void CubeRenderer::CreateWi原创 2012-10-29 08:24:59 · 4752 阅读 · 1 评论 -
Windows 8 DirectX 开发学习笔记(十五)使用Billboard实现树木贴图
要使用DirectX来获得三维效果,一般首先要生成一个三维模型,然后计算它在可视空间中的投影。这样得到的二维图像十分真实,但是计算量也很大。在大规模场景渲染中,随着模型精度的提高,这样的处理方式十分消耗资源。人眼的分辨率是有限的,对于远处的模型,模糊一些不会影响到整体效果。Billboard技术就是用二维图片来模拟三维模型的投影,从而提高渲染效率。只要距离足够远,通过将二维图片旋转至合适角度,实际原创 2013-01-22 07:57:21 · 9504 阅读 · 5 评论 -
Windows 8 Directx 开发学习笔记(十四)使用几何着色器实现三角形细分
几何着色器是从DirectX 10才引入的着色器,是一个可选阶段,位于顶点着色器和像素着色器阶段之间。顶点着色器以顶点作为输入数据,而几何着色器以完整的图元作为输入数据,像点、直线、三角形等。之所以引进几何着色器是为了充分利用GPU的计算能力来生成几何结构和模型细节,减轻CPU的负担,让CPU更专注于逻辑控制。几何着色器的编程和其它着色器类似,在VS2012中默认生成的几何着色器代码如下:原创 2013-01-15 08:39:20 · 9419 阅读 · 8 评论 -
Windows 8 Directx 开发学习笔记(十三)利用模板实现木箱镜像
假设墙上有一面镜子,镜子前面有个木箱。如果观察角度合适,整个木箱镜像都会在镜子里,计算起来还比较简单;而变换个角度,木箱的镜像可能只有一部分在镜子里,这时单纯依靠计算来实现就很麻烦。DirectX提供了模板技术以方便地完成这个任务。我印象中用到模板就是喷漆的时候。将设计好的图案在一块板上刻出来,然后把这块板扣在要喷涂的地方,不管三七二十一直接喷漆,最后把板拿下来,图案就喷好了。DirectX中的模原创 2013-01-08 08:28:59 · 4726 阅读 · 8 评论 -
Windows 8 Directx 开发学习笔记(十二)利用混合实现浮在水面的木箱
在场景中绘制多个不透明物体时很简单,哪个物体离得近,看到的就是哪个物体。但如果加入一个透明的物体,像玻璃,如何渲染就有些麻烦。拿一块红色的玻璃挡住眼睛,看到的物体都偏红,换成蓝色的玻璃,物体都偏蓝。DirectX中的“混合(Blending)”技术可以解决这个问题。混合技术其实也不难,但是通过不同运算方式和系数的组合,它能实现很多效果。它的基本原理就是混合方程:其中乘号表示向量对应原创 2013-01-01 08:59:55 · 9735 阅读 · 2 评论 -
Windows 8 Directx 开发学习笔记(十)纹理贴图实现旋转的木箱
纹理贴图映射(texturemapping)是可以显著提高场景细节和真实感的一种技术,基本原理是将图像数据映射到3D三角形表面(之前的文章提到过,三维模型其实是由很多个三角形拼接而成)。当使用纹理资源时,只要将每个3D三角形与纹理资源上的三角形对应,就可以实现贴图效果。如图1,有一个立方体模型和纹理贴图,将立方体上的点与纹理贴图上的点对应,就像给一个没有颜色的正方体贴一层木纹包装纸。原创 2012-12-18 08:31:20 · 7922 阅读 · 6 评论 -
Windows 8 Directx 开发学习笔记(十一)地形纹理贴图
前一篇实现木箱贴图时,木箱的六个面都正好用一整张纹理图,即六个面的纹理坐标均在[0,1]内。然而在为比较大的模型贴图时,像山峰河谷模型,如果只用一张纹理图,那么每个三角形只得到几个纹理元素,无法为提供足够高的分辨率。这时可以在模型表面上平铺纹理贴图,像给墙面贴磁砖一样,只需要知道一个单位的贴图,就能铺满整个表面,从而获得较高的分辨率。实现起来其实很简单,只要变换纹理坐标的范围,同时将纹理寻址模式设原创 2012-12-25 09:13:42 · 7807 阅读 · 11 评论 -
Windows 8 Directx 开发学习笔记(九)材质定义及混合光照效果实现
在真实环境中,同一个物体在不同光源照射下的颜色并不一样,因为物体本身并没有颜色,而是它会反射不同颜色的光。物体对不同颜色光的吸收率、反射率,加上光泽度、透明度等其他物理属性组合在一起,定义了这个物体的材质。知道物体的材质,就能够方便地算出物体在不同光源照射下的颜色。这里简化山峰模型,统一使用陆地材质,水面则使用水材质,增加了平行光源、点光源和聚光灯三种光照模式,模拟一个更通用的山峰水波模型。实现流原创 2012-12-11 08:49:18 · 6653 阅读 · 12 评论 -
Windows 8 Directx 开发学习笔记(二)建立模型及初始化设备
上一篇中介绍的DirectxApp类给整个应用搭建了一个框架,而这篇文章涉及的CubeRenderer类则是负责填充框架,呈现实际内容:一个旋转的彩色立方体。CubeRenderer类中的方法通过名称就很容易理解,但是它们之间的联系和功能实现比较复杂,而且CubeRenderer类的成员较多,涉及到DirectX的基本原理和概念,看上去无从下手。没办法,打算按照代码的顺序去看,遇到哪里不明白就去查原创 2012-10-26 09:25:23 · 5163 阅读 · 6 评论 -
Windows 8 Directx 开发学习笔记(七)水波纹的实现
使用DirectX实际开发中,模型的形状不可能都是一成不变,只依靠移动摄像机去实现动画。这里用实时更新顶点缓冲的方式生成一个水波模型,最终效果类似向水面扔石子时出现的水波纹。有了上一篇建立好的模型,实现这个效果仅需要更改WaterModel类和Renderer类里m_water的相关调用。首先更改WaterModel的头文件,添加模拟变量成员和临时缓冲区指针,并增加两个方法Disturb和Up原创 2012-11-19 14:23:17 · 6801 阅读 · 12 评论 -
Windows 8 Directx 开发学习笔记(八)要有光
上一篇已经完成水波纹模型,但是只是在线框模式下能清晰的看到波动效果,实体填充时无法看出水面变化,主要原因就是没有引入光照。这里通过更改顶点着色器和像素着色器,引入水面的漫反射效果,让整个模型更加真实。为简化漫反射模型,假设光照射物体时,反射光会在物体表面均匀散开。这样,无论观察点在哪里,总能看到反射光。物体表面漫反射光的颜色可以用兰伯特余弦定理进行计算,如下图所示:n是法向量,原创 2012-12-03 15:06:34 · 3385 阅读 · 0 评论 -
Windows 8 Directx 开发学习笔记(六)添加水模型
HillExample已经完成山峰河谷的模型,可惜的是河谷是旱季的河谷,没有水。这次的目标就在河谷里注入水。首先新建HillWaterExample项目,其配置与HillExample项目相同。然后复制HillExample中CubeRenderer.cpp和CubeRenderer.h文件到HillWaterExample目录覆盖同名文件,这样可以省去重写生成山峰模型的代码。为了使代码结构更原创 2012-11-15 08:26:38 · 4114 阅读 · 1 评论 -
Win8 DirectX 开发问题总结(一)
参照Win32下的DirectX 10代码,实现基于DirectX 11的Windows Store App,虽然是弯路,会遇到一些额外的问题,但是感觉在解决问题的过程中,能对DirectX理解的更深一些。而且这样做能够避免自己直接复制代码,不关注细节。这里对目前为止遇到过的问题进行总结,防止自己以后犯同样的错误。水模型之前的代码只是对VS2012模板代码进行简单改动,从没遇到问题,问题都出现在实原创 2012-11-30 09:00:57 · 2632 阅读 · 0 评论 -
Windows 8 Directx开发学习笔记(一)应用基本框架
Windows 8系统10月25日就要正式发布,其应用可与Windows Phone 8应用兼容,所以打算转到Windows 8系列的开发。之前虽然开发过应用,但对游戏开发更感兴趣,随意开始学习Metro风格的Directx开发。同WindowsPhone 7开发一样,首先从最基本的应用开始看。但使用Directx不像之前那么简单,自己写不出示例代码,只好选择VS2012的模板项目开始学习。使原创 2012-09-25 15:28:57 · 5788 阅读 · 2 评论 -
Windows 8 Directx 开发学习笔记(四)示例程序小结
VS2012的示例程序包括了最基本的DirectX流程,涉及许多知识,所以看完代码之后还是感觉没有头绪,打算对整个过程再整理一下,方便进一步的学习。正方体在空间中可以用它的8个顶点定义,而每个顶点可以包含除坐标外的信息,如颜色。设置好属性后,数据是以数组的形式存在内存中的。由于所有的数据都是浮点数,所有需要输入布局来控制读取数据,如下图。使用输入布局能够区分出各个顶点,把这些顶原创 2012-10-29 08:26:00 · 3171 阅读 · 0 评论 -
Windows 8 Directx 开发学习笔记(五)山峰河谷模型的简单实现
通过之前对DirectX示例程序代码的研究,基本了解DirectX最简单的工作过程,为了更好的理解整个过程,基于示例程序做一个山峰河谷的简单模型。首先还是根据模板创建正方体的示例程序,Visual C++ -〉Windows应用商店 -〉DirectX3D应用程序,如图1。设置好名称后完成创建。程序显示一个类似山峰河谷的模型,只要将正方体的数据替换成模型数据即可。在不改变示例程序其他部分的原创 2012-11-06 14:07:40 · 3699 阅读 · 2 评论 -
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 · 5290 阅读 · 1 评论