摘要: 引言 如果我们希望在场景里添加一个天空,我们可以仅仅只把背景清除为淡蓝色,不过我相信你会认为那样做太普通了。一般来说,那些让你从窗户或洞孔中向外张望的室内游戏使用的是天空盒。只要使用好的纹理,天空盒将提供让人信服的画面;由于纹理伸展在一个巨大的多边形上,低质量的纹理将很容易被注意到。在户外场景中使用天空盒会引发一些问题,例如使用雾,某些雾的设置可能会引发一些问题。如果雾被设置在观察者的旁边,天空盒将减淡甚至消失。另一个可能发生的更烦人的问题是雾会聚积在天空盒的顶点处,从而将天空盒的多边形暴露无遗。下面的图1显示了在天空盒下使用雾所引发的两个问题.小心地调整雾化参数或者细分天空盒的每一个面可以. 阅读全文
posted @ 2011-11-07 20:58 ☆A希亿 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 1,要点首先我觉得D3D纹理映射的选项太多,给人一种眼花缭乱的感觉,而且刚看的时候并不容易分辩不同选项之间的差别,不知道如何使用这些选项,或者说不知道这些选项对应以前经验中的哪些效果。这些选现包括:Dark mappingAnimated Dark mappingBlending with Material Diffuse ColorDarkmap with Material Diffuse ColorGlow mappingDetail mappingModulate mappingBlending with Frame BufferTrillinear FilteringClamp Add 阅读全文
posted @ 2011-11-07 20:58 ☆A希亿 阅读(1687) 评论(0) 推荐(1) 编辑
摘要: 稍微讲下天空盒天空盒的顶点struct SkyBoxVertex{SkyBoxVertex();SkyBoxVertex(float x, float y, float z, float u, float v);SkyBoxVertex(const D3DXVECTOR3& p, const D3DXVECTOR2& uv);D3DXVECTOR3 m_pos;D3DXVECTOR2 m_tex0;};#define D3DFVF_SKYBOX (D3DFVF_XYZ | D3DFVF_TEX1 )SkyBoxVertex::SkyBoxVertex(): m_pos(0.0f 阅读全文
posted @ 2011-11-07 20:52 ☆A希亿 阅读(394) 评论(0) 推荐(0) 编辑
摘要: D3D资源管理资源分类 顶点缓冲(VertexBuffer) 索引缓冲(IndexBuffer) 纹理(Texture)资源存储 显存(Video Memory) 通过AGP直接访问的内存(AGP Aperture,也叫做非本地显存) 系统内存(System Memory)性能权衡 我们在创建D3D资源的时候需要填写两个参数:D3DPOOL、D3DUSAGE。这两个参数共同决定了资源最终存储在显存、非本地显存还是系统内存中。枚举类型D3DPOOLD3DPOOL_DEFAULTD3DPOOL_MANAGEDD3DPOOL_SYSTEMMEMD3DPOOL_SCRATCH D3DPOOL_MANA 阅读全文
posted @ 2011-11-07 20:49 ☆A希亿 阅读(453) 评论(0) 推荐(0) 编辑
摘要: STDMETHOD_是一个宏,用于定义指定返回类型的接口方法,包含virtual关键字。可用于定义方法声明。 #define STDMETHOD_(type,menthod) virtual type STDMETHODCALLTYPE menthod 例如: STDMETHOD_ (ULONG, release)()展开后就是 virtual ULONG STDMETHODCALLTYPE release() STDMETHODCALLTYPE 宏展开是 __stdcall。#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE 阅读全文
posted @ 2011-11-07 20:48 ☆A希亿 阅读(638) 评论(0) 推荐(0) 编辑
摘要: D3D是 COM组件,它在服务进程中运行,而不在当前的客户进程中。在DX组件运行过程中,要创建一系列接口对象,如CreateDevice()返回接口指针,这些接口及其占用内存什么时候释放,要通过“引用计数”的技术来解决。AddRef()给这个接口指针的计数加1,而Release()会将之减1。一旦减到0,表示没有客户使用了,相关的接口就释放了。由此可知,每次调用Rlease()后,并不一定会释放内存,而是当引用计数归0时释放内存。 这样,对接口指针的使用,就像维护堆栈的平衡一样,要仔细,而且按照某种约定规则使用。 但平时D3D编程中,怎么不用AddRef()呢?这是由于一个接口指针,如ID.. 阅读全文
posted @ 2011-11-07 20:46 ☆A希亿 阅读(2748) 评论(0) 推荐(1) 编辑
摘要: 反射只是翻转摄影机,将场景渲染到Texture上,或使用STENCIL蒙板直接绘制。具体计算查看了D3D的 Sample,如下:D3DXMATRIXA16 matViewSaved; m_pd3dDevice->GetTransform( D3DTS_VIEW, &matViewSaved ); //取得view matrix//定义一个翻转的参考平面,可根据需要自己定义位置及法线 D3DXVECTOR3 vPoint(0,0,0); D3DXVECTOR3 vNormal(0,1,0); D3DXMATRIXA16 matView, matReflect; ... 阅读全文
posted @ 2011-11-07 20:45 ☆A希亿 阅读(1261) 评论(0) 推荐(0) 编辑
摘要: 原文:http://kay.zhang.blog.163.com/blog/static/3493716520084100395228/ multiAnimation是个很酷的东西。我们知道利用AnimationController可以随意的加载.x中的各种动画集。可是如果不做任何设置,只是在一个Track上切换动画集的话,就会出现动作突然变化的效果,十分不自然,比如说:当.x模型在程序中是立正的时候,我们发出命令:敬礼!他的右手手就会直接从裤缝瞬移到太阳穴,没有一个变化的过程。而我们要的效果是:我们下令敬礼 之后,他的手会从裤缝慢慢的移动到太阳穴。整个是一个连续的过程。这要怎么实现呢?其实. 阅读全文
posted @ 2011-11-07 20:44 ☆A希亿 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 原文:http://blog.csdn.net/chjp2046/article/details/5460462使用 std::stringstream,小心 内存! 适时 清空 缓冲 ……2007年12月14日 星期五 16:25stringstream是个好东西,网上有不少文章,讨论如何用它实现各种数据类型的转换(比如把double或int转换为string类型)。但如果stringstream使用不当,当心内存出问题(我就吃过亏^_^)。试试下面的代码,运行程序前打开任务管理器,过不了几十秒,所有的内存都将被耗尽!#include <cstdlib>#include < 阅读全文
posted @ 2011-11-07 20:42 ☆A希亿 阅读(1206) 评论(0) 推荐(0) 编辑
摘要: 学习啦~~~~~~原文地址:漫谈游戏中的阴影技术作者:flymemory随着硬件的越来越高端化,各种以前可望而不可及的效果越来越多的应用到网络游戏里。本篇文章是介绍目前游戏中影子的实现方式,它们的优缺点以及应用的场合。一般来说,在游戏中,应用比较多的影子技术有三种,Projective shadow, Shadow map以及Shadow map.我们接下来便依次的介绍它们。Projective Shadow投影的原理可以应用在任意贴图上就是我们通常所说的投射影子,它的实现比较简单,具体有两个步骤:1.以光源为视点,渲染有影子的物体到一张预备好的Shadow texture中。要注意的是,这里 阅读全文
posted @ 2011-11-07 20:39 ☆A希亿 阅读(817) 评论(0) 推荐(0) 编辑