随笔分类 -  XNA

关于XNA开发的系列文章
[翻译]XNA 3.0 Game Programming Recipes之forty-five
摘要:PS:自己翻译的,转载请著明出处格 6-9 添加HLSL镜子的高光(Hightlights)问题 你要添加镜子的高光到你的3D场景绘制你的自定义HLSL效果。镜子的高光是高的照明区域围绕一个光源的反射,如图6-11所示。解决方案 接下来的讨论将帮助你决定哪个象素应该有一个镜子光部分。 图6-11的左边所示一个线偏震光束,L,来自一个光源撞击一个三角形象素。同样在左边的图象,人眼向量被显示,它是摄象... 阅读全文

posted @ 2009-08-13 10:50 一盘散沙 阅读(285) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之forty-four
摘要:PS:自己翻译的,转载请著明出处格 6-8 用HLSL定义一个聚光灯问题 一个光照点作为在前面定义的一样,闪耀的光从一个点向所有方向。你想定义一个聚光灯,它它的行为完全像一个点光源,除了它照耀的象一个光核一样,如图6-10所显示。解决方案 在你的象素着色器中,判断当前的象素是否在光照核内。你可以通过使用点乘积在光的方向和核的方向之间来实现这个。它是如何工作的 开始前面小节的代码。由于一个聚光灯比一... 阅读全文

posted @ 2009-08-12 17:20 一盘散沙 阅读(290) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之forty-three
摘要:PS:自己翻译的,转载请著明出处格 6-7 添加HLSL Per-Pixel 照明问题 如6-3节所显示的,最好的光照结果被获得使用per-pixel光照,特别是曲线的表面制成的大型的三角形。你想添加per-pixel光照到你自己的效果。解决方案 在前面的两节,你计算阴影的值在每个顶点中。一个三角形的三个顶点的阴影值是线形内插值去获得阴影的值为每个顶点。 在per-pixel 光照这种情况下,你想... 阅读全文

posted @ 2009-08-12 16:25 一盘散沙 阅读(244) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之forty-two
摘要:PS:自己翻译的,转载请著明出处格 6-6 使用HLSL定义一个发光的点问题 直到现在,你已经使用了方向的光亮去点亮你的屏幕,它非常有用去添加光照到你的3D世界。通常情况下,你同样需要一个来自单一个点的光照,如来自一个手电筒或者一个爆炸。这样一个光源被称为:point Light。解决方案 传递光照点的3D位置从你的XNA工程到你的XNA效果。每一个顶点,你可以计算方向从光源朝着顶点,使用这个光照... 阅读全文

posted @ 2009-08-12 15:13 一盘散沙 阅读(221) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之forty-one
摘要:PS:自己翻译的,转载请著明出处格 6-5 添加HLSL顶点阴影问题 BasicEffect将绘制你的场景刚好使用你定义的光照。尽管,如果你想定义你自己的一些奇异的效果,第一件事情,你的效果必须实施正确的照明。 在这一节,你了解如何写一个基本的HLSL效果,它执行per-vertex阴影。解决方案 传递每个顶点的3D位置和法线到你的效果在图形卡里。这个顶点渲染器在你的图形卡需要为每个顶点做两件事。... 阅读全文

posted @ 2009-08-12 11:36 一盘散沙 阅读(263) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之forty
摘要:PS:自己翻译的,转载请著明出处格 6-4 添加镜子的高亮光到反射表面问题 即使对per-pixel阴影的启用,你绘制的一些金属或者有光泽的物体仍然看上去有点阴暗。在真实生活中,当观察一个反射表面如一个金属,玻璃,或者一些塑料,你会看到有些地方光源反射非常的亮。这样一个地方正如图6-6中的圆圈所表示的。这些亮点被称为specular highlights。解决方案 正如一个per-pixel光照,... 阅读全文

posted @ 2009-08-11 16:19 一盘散沙 阅读(261) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-nine
摘要:PS:自己翻译的,转载请著明出处格 6-3 添加高级细节到你的光照:对每一个象素照明问题 在前面的两节中,大量的阴影被计算在每个顶点中,这些阴影的值是以内插值替换的遍及所有的三角形象素。因此,它被称为pervertex lighting(or Gouraud shading)。 在某些情况下,这不会得到最好的效果。尤其是当使用大的三角形和/或正个边缘时,这会得到不想要的结果。 作为这方面的一个例子... 阅读全文

posted @ 2009-08-11 16:15 一盘散沙 阅读(458) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-eight
摘要:PS:自己翻译的,转载请著明出处格 6-2 在顶点之间共享法线问题 在前面的章节,你学会如何确保每个三角形获得正确的光照通过提供法线数据在每一个它自己的顶点。 然而,盲目地应用这种方式对一个对象的所有三角形,得不到最好的效果。如果你得到一个三角形每个顶点同样的法线方向,一个三角形的每个顶点将会阴暗成同样的,因此所有三角形内部象素将会得到同样的阴影。 如果两个临近的三角(不在同一个平面)渐变就象这样... 阅读全文

posted @ 2009-08-11 11:02 一盘散沙 阅读(284) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-seven
摘要:PS:自己翻译的,转载请著明出处格 6-1 定义法线和使用BasicEffect问题 没有相应的光照,你的场景缺少点真实感。在某些情况下,3D效果将会完全失去当对象没有正确的被照亮时。 作为一个例子,考虑一个范围有一个实心的颜色。没有任何的光照,范围内所有的象素将有一个同样的颜色,使在屏幕上的结果看起来平板的光盘。当存在正确的光照时,范围内有部分面对光照会有一个明亮的颜色比起其他的部分,使这个范围... 阅读全文

posted @ 2009-08-10 20:47 一盘散沙 阅读(280) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-six
摘要:PS:自己翻译的,转载请著明出处格 5-14 Add Per-Pixel Detail by Bump Mapping in Tangent Space问题 虽然在前面的章节行之有效平面物体,它默认的法线是恒定的为所有象素在所有的三角形中,你会陷入麻烦中,如果你想要bump map 一个曲线或者有角的表面。 主要问题是,bump map包含偏离的法线在切线坐标内,意思是相对于默认的法线。 可视化的... 阅读全文

posted @ 2009-08-10 09:48 一盘散沙 阅读(387) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-five
摘要:PS:自己翻译的,转载请著明出处格 5-13 对凹凸贴图起作用:固定法线问题 一个三角形的主要问题之一是平直的。如果你绘制一个巨大的墙用两个巨大的三角形,覆盖它用很漂亮的纹理,这个结果看起来令人失望的平面。 你可以添加真正的详细到一个三角形只在通过分三角形成更小的三角形,你可以定义每个顶点的3D位置 。尽管,消耗你的PC上的巨大资源。解决方案 而不是使用这种蛮力式的方法,你能使用凹凸贴图。凹凸贴图... 阅读全文

posted @ 2009-08-09 15:08 一盘散沙 阅读(287) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-four
摘要:PS:自己翻译的,转载请著明出处格 5-12 创建你自己的顶点格式问题 顶点被用来保存数据,你发送从你的XNA工程到你的图形卡中的着色器中。一个顶点格式包含一个数据存储描述在你的顶点中。XNA框架伴随一些默认的顶点格式,从简单的VertexPositionColor到VertexPositionNormalTexture格式。 不过,如果你已经编写了很多高级HLSL效果(如果爆炸效果,蒙皮,粒子效... 阅读全文

posted @ 2009-08-08 21:28 一盘散沙 阅读(313) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-three
摘要:PS:自己翻译的,转载请著明出处格 5-11 从一个XML文件中加载数据问题 你想从XML文件中加载数据到你的XNA游戏工程中。你可以做这个用从文件中读当你的XNA工程开始默认使用.NET文件的I/O功能函数,但是这是不会工作的,当你运行游戏在XBOX360控制台或者Zune. 你想要XML文件被序列化成一个二进制文件通过内容管道,这样你能读数据载入到二进制文件在你的XNA工程中.解决方案 在XM... 阅读全文

posted @ 2009-08-08 11:36 一盘散沙 阅读(318) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-two
摘要:PS:自己翻译的,转载请著明出处格 5-10 计算在指针和地形:Surface Picking之间的碰撞点问题 你想找到准确的3D坐标在你的地形上在这个位置被你的指针所指出。这是必须的,如果你想要在地形上指出大的位置,为你的对象移动到或当布置一个对象在一个地形上时。解决方案 做为一个讨论在4-19节,2D点在你的屏幕上,用你的指针所指示,相应的条射线在你的3D屏幕中。在这一节,你将会利用这个射线... 阅读全文

posted @ 2009-08-07 16:57 一盘散沙 阅读(362) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty-one
摘要:PS:自己翻译的,转载请著明出处格 5-9 计算精确的地形高度在顶点之间使用双线插值问题 当你创建一个游戏,利用地形,你经常需要知道地形的准确高度在某一点上。这将是这种情况,例如,当移动一个模型在地形上(参看4-17节),当找点和地形之间的碰撞(下一节),或者防止相机与地形想碰撞(参看2-6节)。 在过去的章节中你确定了地形的每个顶点的3D位置,您已经知道确切的高度在这些点上。所有顶点之间的位置,... 阅读全文

posted @ 2009-08-06 15:51 一盘散沙 阅读(293) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之thirty
摘要:PS:自己翻译的,转载请著明出处格 5-8 创建一个地形基于一个VertexBuffer和IndexBuffer问题 基于一个2D高度的地图,你想创建一个地形和绘制它用一个有效的方式。解决方案 首先你需要有一个高度地图,包含所有的高度数据,来自于你想定义的地图。这个高度地图会有一个确定数量的数据点在两个方面;让我们称它们为你未来地形的宽度和高度。 显然,如果你想建立一个地形数据,在此基础上,您的地... 阅读全文

posted @ 2009-08-05 17:52 一盘散沙 阅读(350) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之twenty-nine
摘要:PS:自己翻译的,转载请著明出处格 5-7 用一个VertexBuffer计算所有顶点的法线问题 当渲染你自定义的结构到3D世界中,你注意到它不能正确的发亮。 这是因为你不能指定正常的法向矢量为结构的每一个顶点。一个法线要求用每个顶点,所以你的图形卡能测定多少光线撞击到三角形。参看第6章有更多的信息关于法线和为什么需要它们。 计算法向量为每个顶点看起来有点复杂,因为在所有结构大多数顶点被多个三角形... 阅读全文

posted @ 2009-08-04 20:52 一盘散沙 阅读(294) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之twenty-eight
摘要:PS:自己翻译的,转载请著明出处格 5-6 Enable Backface Culling:它是什么,他能为你做什么。问题 在先前的章节,在Draw方法中你总能找下面的行:[代码] 如果您删除此线和移动相机到三角形的背后,它们就会消失! 此外,当您启动确定三角形的顶点不用理解backface culling,每个三角形您定义有百分之五十的机会没有被显示出来。解决方案 这个方法定义三角形的顶点告诉... 阅读全文

posted @ 2009-08-03 17:05 一盘散沙 阅读(286) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之twenty-seven
摘要:PS:自己翻译的,转载请著明出处格 5-2 应用纹理到你的三角形问题 你可以绘制一个不错的颜色三角形靠把一个纹理放在三角形上。解决方案 你的图形卡允许你指定一个2D图象,从它可以很简单为你的三角形着色。 这意味着您必须导入二维图像到您的XNA项目,并将其交给了显卡在渲染三角形之前。对于每一个顶点,而不是指定的颜色,你得说明哪些位置的二维图像对应到顶点。它是如何工作的 开始导入2D图象到你的工程中,... 阅读全文

posted @ 2009-08-03 11:12 一盘散沙 阅读(365) 评论(0) 推荐(1)

[翻译]XNA 3.0 Game Programming Recipes之twenty-six
摘要:PS:自己翻译的,转载请著明出处格 4-19 检测Pointer是否已经超出了模型问题 你想检测用户的Pointer是否已经超出一个模型在你的3D场景里。解决方案 在XNA中,它很容易得到Pointer的2D位置在场景中。虽然,这个单独的点在你的场景中相应到在你程序的3D空间的整条射线,如图4-28所示。 作为结果,如果你想检查模型,pointer是否已经超出了,你需要检查射线是否与任何模型相撞。... 阅读全文

posted @ 2009-08-02 17:03 一盘散沙 阅读(303) 评论(0) 推荐(1)

导航