博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年9月14日

摘要: 这是转行Android的第一篇文章,希望以后能坚持住,呵呵当一个ListView界面上显示的内容数据在后台发生改变时,怎么才能同步的更新呢。好比ListView显示的是用户安装的程序列表,当有新的程序安装时,如何才能立即加载。或者是显示拦截信息的界面,当有新的信息被拦截时,如何能及时的更新界面。这里用到就是典型的观察者模式,需要得知数据增删改的界面都要注册数据操作的类,在数据操作的同时就会向注册自... 阅读全文

posted @ 2011-09-14 14:33 +石头+ 阅读(1046) 评论(1) 推荐(0) 编辑

2011年7月4日

摘要: 场景中不是对每个物体都进行渲染,如果对摄像机后面的物体也进行渲染的换就大大降低了效率,我们把视角看成一个视锥,每次只是渲染视锥里面的物体,这样效率就大大提高了。D3D中视野矩阵和投影矩阵结合为一个Z方向为(0,1)XY方向为(-1,1)的长方体包围合。我们就以视野投影矩阵的原点为中心,Z为1的面为地面做一个视锥,如在视锥里面就确定渲染,要想把物体转换到视野投影矩阵中,首先要对视野投影矩阵进行要判断... 阅读全文

posted @ 2011-07-04 13:21 +石头+ 阅读(1208) 评论(0) 推荐(1) 编辑

2011年7月3日

摘要: 以射线碰撞的方式来检测碰撞,当CXPhyOBJ的UpDate方法调用时根据物体的方向和传进来的时间计算出一个新的位置,如果不考虑任何情况新的位置就是物体应该更新的位置,可实际中有很多中情况产生,首先要分,物体是否在地面上,如果物体不在地面,还要受到重力的影响,有一个向下的速度,这样产生的预期位置就不一样了。在CXPhyOBJ中的Update方法如下:void CXPhyOBJ::Update( f... 阅读全文

posted @ 2011-07-03 20:26 +石头+ 阅读(557) 评论(0) 推荐(0) 编辑

2011年6月29日

摘要: 游戏常常以地图为单位,地图信息中处理地图本身的地形外,还包含地图上需要加载的各个物体的信息。我们以配置文件的形式加载地图,文件中除了地图的高度图外,还有地图上的物体加载的信息,每个物体包含了id和位置信息(x和z,y由地形自动的判断)。[Map]HeightFile=RES\HeightMap\Map2.bmpPathFile=[OBJList]OBJ1=7,30,49OBJ2=2,10,39OBJ3=4,40,-9OBJ4=6,10,-81OBJ5=3,50,-21加载GameObj时也是用到读取配置文件的方法,其中包括.x文件,纹理,缩放和旋转的值,以及游戏中逻辑的内容。简单例子如下:[O 阅读全文

posted @ 2011-06-29 12:14 +石头+ 阅读(389) 评论(0) 推荐(0) 编辑

摘要: 在3D游戏中我们经常可以看到一些很玄的特效,其中很多都是用粒子系统做的,粒子系统由大量的粒子组成。每一组粒子具有一组属性、大小及纹理,可能还需要颜色、透明度、运动速度、方向、生命周期等属性, 一个粒子究竟有什么样的属性,主要取决于具体的应用,粒子属性的初始值通常随机产生。整个粒子系统是随时间不断更新变化的。 常见的有爆炸效果,火焰效果,烟雾效果,天气效果,魔法技能效果,环境特效 。设计一个粒子系统... 阅读全文

posted @ 2011-06-29 11:14 +石头+ 阅读(595) 评论(0) 推荐(0) 编辑

摘要: 这里介绍的是Direct里提供的骨骼动画Api。D3DXFRAME和D3DXMESHCONTAINER是Direct3D提供的两个结构,D3DXFRAME用于保存模型的骨骼框架,D3DXMESHCONTAINER结构用于保存模型的网格数据。 在使用时我们要继承这两个结构,添加一些新的成员。struct D3DXFRAME_EX: public D3DXFRAME //扩展D3D框架类{ D3DXM... 阅读全文

posted @ 2011-06-29 01:42 +石头+ 阅读(578) 评论(0) 推荐(0) 编辑

2011年6月3日

摘要: 在游戏中,像树,石头等物体在地图上通常要渲染很多个,如果每个模型都是加载 新资源,这样加载时间会非常长,占用内存也会非常多。所以我们利用缓存来解决这个问题。如果是新资源就加载,如果加载过就读取缓存中的。我们封装一个类来保存节点的缓存,其中包括Lod的层级模型,文件名(.x),材质层数,材质指针,以及其他的功能的函数:typedef class CDXMeshNode{public: CDXMesh... 阅读全文

posted @ 2011-06-03 13:55 +石头+ 阅读(385) 评论(0) 推荐(0) 编辑

2011年6月1日

摘要: 游戏中的场景以及物体在渲染时不是按照一个规格渲染,当距离较远时会渲染较为粗略的模型,这就用到了模型的LOD(Level of Detail)。LOD功能也就是减少模型的顶点数,主要是用ID3DXPMesh的SetNumVertices方法来设置顶点数。减少的顶点根据顶点的权重来判断。函数D3DXGeneratePMesh( LPD3DXMESH pMesh, CONST DWORD* pAdjac... 阅读全文

posted @ 2011-06-01 22:00 +石头+ 阅读(2548) 评论(0) 推荐(0) 编辑

摘要: 公告板类中主要有Create和Render函数。Create中主要是得到纹理的变量mFace。普通的可由D3DXCreateTextureFromFile加载。但是有复杂的情况时,既有文字又有图片时,我们用类CRenderedTexture来完成加载mFace。HRESULT CRenderedTexture::Create( LPDIRECT3DDEVICE9 DVC,int iW,int iH... 阅读全文

posted @ 2011-06-01 15:46 +石头+ 阅读(2207) 评论(0) 推荐(0) 编辑

2011年5月18日

摘要: 1.Socket功能实现:基本功能,Socket 的传输的内容大概分3种:封装的结构体:结构体(结构清晰,发送数据占用内存小),例如struct SOCKETDATA{DWORD password;//每个客户端都有一个密码,为了防止外挂DWORD messageId;//发送内容的ID标识,每种ID对应着消息的一种操作DWORD nowParkId;//连续的ID号,防止丢包,和重复的发同样的包的操作Char* buffer;//内容}此处也是对内容的简单的描述,真正的结构体可能更加复杂char*(显而易见的,支持指令),例如发送的字符串为"23,张三,10000",这样 阅读全文

posted @ 2011-05-18 16:46 +石头+ 阅读(629) 评论(0) 推荐(1) 编辑