- 博客(22)
- 资源 (7)
- 收藏
- 关注
转载 MFC疑难注解:CAsyncSocket及CSocket
摘自http://www.xhit.cn/html/program/csdn/20071104/131834.htmlMFC疑难注解:CAsyncSocket及CSocket MFC疑难注解:CAsyncSocket及CSocketfangle 2006-07-27MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使
2013-03-29 12:12:10
585
转载 网游创业失败全攻略
经历太多次创业,发现创业实在太难,一开始我认为是我的运气稍微差了一点,每一次创业失败的原因都不尽相同,使我经历了各种各样的创业痛苦,不过后来看看我周围跟我一起创业的弟兄们,发现创业的人生就是如此。在此不乏调侃地写下网游创业失败全攻略给各位共享,各位有过创业失败经历的人可能会有“心有戚戚焉”的感觉,至今还没有经历过失败的朋友们,你们也可能也会产生类似的感觉,那就要小心了,希望你们能够引以
2011-06-08 11:07:00
864
转载 关于如何选好游戏3D引擎编程的一些经验
这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上。现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多。在我没遇到U3以前,一直研究WILDMAGIC,可以说是GAMEBRYO的前身吧,他们基本框架都差不多,是完全面向对象,代码容易读,但它发展存在严重的弊端,这个也是它为什么不是牛B引擎的原因。但从渲染和动画方面来看,U3的 MATERIAL TREE 和 ANIM
2011-06-07 14:55:00
1356
转载 3D编程的四个境界
第一阶段:初学者阶段。这个阶段主要是熟悉3D图形学的基本原理,和基本api的使用。特别是对于空间的变换,矩阵的原理要有非常清楚的认识。能够用简单的资源,做一个简单的demo,基本上就是达到了。这个阶段比较简单,基本上每个人都可以达到,学习方法也很简单,就是看书,看demo,写代码。时间周期大概1年。 第二阶段:进阶阶段过了第一个阶段,一般人会走两条路。一种人会选择直接学引擎,开发游戏。另一种人,
2011-06-07 14:34:00
684
转载 抽象类与接口的区别及应用
抽象类与接口的区别及应用1、 抽象类与接口是面向对象思想层面概念,不是程序设计语言层面概念 如若想正确认识抽象类与接口,首先要弄清楚的一点是,这两个概念均属于面向对象思想层面,而不属于某种程序设计语言。例如,C#中用interface关键字声明的语言元素,我们叫它“接口”,其实这是不准确的,准确来说,这应该叫做“接口在C#语言中的实现机制”。面向对象思想包含许多概念,而不同面向对象语言对这些概念的具体实现机制各有不同。例如,C++中并没有一种关键字对应于C#中的interface,那么C++
2011-05-16 17:04:00
855
转载 c++ 中__declspec 的用法
<br />__declspec用于指定所给定类型的实例的与Microsoft相关的存储方式。其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI规范,而__declspec是一种扩展属性的定义。扩展属性语法简化并标准化了C和C++语言关于Microsoft的扩展。用法:__declspec ( extended-decl-modifier )extended-decl-modifier参数如下,可同时出现,中间有空格隔开: align (C++) __decls
2011-05-16 15:58:00
882
转载 Skinned Mesh 原理解析和一个最简单的实现示例
<br />Skinned Mesh 原理解析和一个最简单的实现示例<br /><br />作者:n5<br /><br />Email: happyfirecn@yahoo.com.cn<br /><br />Blog: http://blog.youkuaiyun.com/n5<br /><br />2008-10 月<br /><br /><br />Histroy:<br /><br />Version:1.02 Date:2010-1-1<br /><br /> 修改了一些错误(用删除线标出 ),
2011-05-11 18:08:00
617
转载 关于骨骼动画及微软示例Skinned Mesh的解析(二)
<br />3.3 分析CAllocateHierarchy类<br />下面继续研究自定义数据容器CAllocateHierarchy,顾名思义,该类是在加载过程中自行分配层次数据空间。它有4个成员,都是重载D3D的接口虚函数。<br />它的成员CreateFrame()是用来创建D3DXFrame对象的,而CreateMeshContainer()是用来创建Mesh数据对象的。你可以在这两个函数中下断点,发现CreateFrame会运行多次,而CreateMeshContainer只运行一次,再次验证
2011-05-11 18:06:00
1025
转载 关于骨骼动画及微软示例Skinned Mesh的解析(一)
<br />骨骼动画是D3D的一个重要应用。尽管微软DXSDK提供了示例Skinned Mesh,但由于涉及众多概念和技术细节,示例相对于初学者非常复杂,难以看懂。在此,提供一些重要问题评论,以使初学者走出迷局,顺利上手。文中所述都是参照各种资料加上自己的理解,也有可能出些偏差,有则回贴拍砖,无则权当一笑。<br /><br /><br />一 骨骼动画原理<br />原理方面在网上资料比较多,大家都基本明白。在此说一下重点:<br />总体上,绝大部分动画实现原理一致,就是“提供一种机制,描述各顶点位置随
2011-05-11 18:04:00
898
转载 memset函数详细讲解
<br />void *memset(void *s,int c,size_t n) <br />总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。<br /><br />例子 :<br />main(){ <br /> char *s="Golden Global View"; <br /><br /> clrscr(); //clear screen<br /><br /> memset(s,'G',6); <br /> printf("%s",s); <br /><br
2011-05-10 14:31:00
487
转载 骨骼运动变换的数学计算过程详解
1. 骨骼静止状态(参考姿势)下的节点坐标转换以上图为例子,图中有三个彼此嵌套的坐标系:子骨骼坐标系、父骨骼坐标系和世界坐标系。首先,我们不考虑骨骼的运动,设Vc为顶点V在子骨骼本地坐标系中的位置,那么在各骨骼静止的情况下:从子骨骼坐标转换到父骨骼坐标:Vp=Vc*ML->P从父骨骼坐标转换到世界坐标:Vw=Vp*MP->W因此,从子骨骼坐标直接转换到世界坐标的过程为:Vw=Vc*MC->P*MP->W其中,Vc可以表示为一个行向量:Vc=(xc, yc, zc, 1);而MC->P、MP->W是两个平移阵
2011-05-09 14:10:00
1727
转载 骨骼动画原理
关于骨骼动画及微软示例Skinned Mesh的解析骨骼动画是D3D的一个重要应用。尽管微软DXSDK提供了示例Skinned Mesh,但由于涉及众多概念和技术细节,示例相对于初学者非常复杂,难以看懂。在此,提供一些重要问题评论,以使初学者走出迷局,顺利上手。文中所述都是参照各种资料加上自己的理解,也有可能出些偏差,有则回贴拍砖,无则权当一笑。 一 骨骼动画原理原理方面在网上资料比较多,大家都基本明白。在此说一下重点:总体上,绝大部分动画实现原理一致,就是“提供一种机制,描述各顶点位置随时间的
2011-05-06 15:10:00
3476
转载 Parallax Occlusion Mapping
<br />Parallax occlusion Mapping 视差贴图 <br /><br />视差贴图技术我们其实应该称之为视差遮蔽贴图技术,因为在这一技术中,会对纹理的坐标做变换,一些凸出的纹理会遮蔽到其他的纹理,这样就会看起来具备更好的凹凸的感觉了。视差贴图技术的实现原理,其实和法线贴图是一样的,都是根据法线贴图进行的处理。视差贴图比法线贴图提供更好的视觉效果,而且跟法线贴图有同一个目的:在保证模型细节的情况下,大幅度降低场景的多边形数目<br />Parallax occlusion Mappi
2011-04-29 12:12:00
2492
转载 函数指针
<br />函数指针,顾名思义,它指向一个函数的入口地址,其定义及使用如下: <br />定义:returntype (*ptr) (typename variable,......) <br /> 返回类型 指针名称 指向函数的参数表。 <br />你不能这样: returntype *ptr (typename variable,......) 这样会被理解为
2011-04-25 17:29:00
426
转载 memset
<br />void *memset(void *s,int c,size_t n) <br />总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。<br /><br />例子 :<br />main(){ <br /> char *s="Golden Global View"; <br /><br /> clrscr(); //clear screen<br /><br /> memset(s,'G',6); <br /> printf("%s",s); <br /><br
2011-03-30 11:34:00
431
原创 改变D3D中的渲染状态
<br />1). 设置着色模式: <br />SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式<br />SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式<br />2). 设置多边形填充模式:<br />SetRenderState(D3DRS_FILLM
2011-03-11 15:38:00
631
转载 Direct3DX
<br />DirectX 7 <br /><br />1. <br /><br />DirectX 8 <br /><br /><br /><br />DirectX 9 <br /><br /><br /><br />DirectX 9 Ex <br /><br /><br /><br />DirectX 10 <br />DirectX 7.0 <br /><br />新增的内容: <br /><br />一、 Direct3D 立即模式 API 增加了新特性,包括 : 设备状态块, 几何混合,立方体
2011-03-07 13:59:00
2413
原创 static_cast、dynamic_cast、reinterpret_cast、和const_cast
<br />static_cast、dynamic_cast、reinterpret_cast、和const_cast<br />关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行
2011-03-04 15:30:00
327
原创 ogre渲染流程
<br />ogre的主要渲染流程 <br /><br /><br /> 很早以前就想写一些关于OGRE的文章了,一直没机会。 <br />理解一个渲染引擎,我觉得最重要的是先抓住了它的主架构,它的主线,渲染流程,不然的话,一个引擎几万行,甚至几十万行的代码,光是打开solution就能吓你一跳了,OGRE也有十几万行的代码量,我一开始看它的时候也是无从下手,感觉代码太多了,不知道从哪开始看好,这个class看看,那个class看看,由于对整个引擎没有一个清晰的认识,看过了也印象不深,所以,最
2011-03-04 14:27:00
589
转载 ogre工具集
<br />Ogre 3d 工具集<br /><br />ogre仅仅是个3dt图形渲染引擎,要做3d游戏,还需要的东西很多,比如物理,音效,网络(本教程内将不涉及) ,界面以及输入(这里咱们用ogre自带的cegui和ois),以及AI,呵呵,总之一个游戏包含的东西太多,咱们这里仅仅是入门教程,所以一一切从简,但是都会设计到一点哈!对了,还有个很重要的要点,开发游戏前,先要开发辅助工具,比如模型查看器,建模工具了,场景编辑器了,界面编辑等等一系列的工具,这样才会使我们的游戏事半功倍!恩,开始了!<br /
2011-03-04 10:37:00
1291
原创 STL之map
<br />关于map的简单应用需要注意一下几个方面: <br />1、包含头文件:#include <map><br />2、声明形式:<br /> map<type1,type2> m;其中type可以是任何数据类型,包括自己写的结构体、类等等,当然也可以是string 类。<br />3、数据的插入:<br /> 1)用insert插入pair型数据:m.insert(pair<type1,type2>(element1,element2));<br /> 2)用insert插入va
2011-03-03 15:58:00
482
原创 STL之vector
列举一些关于vector的常识: 1)包含头文件#include 2)如果预先给vector分配空间,很简单: vector v(10); 当然也可以: vector v; v.reserve(10);3)遍历vector: vector v; typedef vector::iterator vitr; vitr end=v.end(); vitr itr; for(itr=v.begin();itr!=end;itr++) { printf("…
2011-03-03 15:51:00
450
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人