摘要:
在网上度娘了几下,都是关于白色衬衫的如何去黄的, 纠结的是,俺的不是纯白的,而是白蓝格子的,这可让俺怎么办? 若有时间的话,我去试试不太nb的方法:淘米水+菠菜水。实在不行就去洗衣店问问了。 苦逼的coder,找个好媳妇才是王道。。 阅读全文
摘要:
使用delta3d有些日子了,对物理引擎这块没有细看过,最近研究了一下。主要分为两大部分,第一在dtCore中对ode的封装,第二通过dtPhysics,使用PAL(phys abstract layer)对三种物理引擎 bullet、ode、phys的封装。 这里先介绍下dtCore中对delta3d中的封装。总结起来就是如下几点:dtCore::ODEWolrdWrap 主要是包装了ODE world的功能。这个类不是供用户直接使用的。dtCore::ODESpaceWrap 主要包装了ODE space的功能,主要用于碰撞检测,这个类也不是直接给用户使用的。dtCore::ODECo.. 阅读全文
摘要:
《慢慢啃》 2011.11.29函数指针 函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。 如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用 指针变量可引用其他类型变量一样,在这些概念上一致的。函数指针有两个用途:调用函数和做函数的参数。函数指针的说明方法为: 数据类型标志符 (指针变量名)(形参列表); 注1:“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以... 阅读全文
摘要:
CALLBACK函数要声明称 static或全局,而在静态的函数中药调用非静态成员还不能调用,必须把这些成员也设置成静态的,不怎么方便,有好的解决方法吗。其原因是把CALLBACK函数封装成C++类的非静态成员后,需要有建立对象,再通过对象才能去找到这个成员函数。而系统调用这个CALLBACK函数的时候,才不管你有没有建立对象呢。典型的解决方法是需要用静态成员函数给系统CALL。然后设法把THIS指针传给这个STATIC函数,让这个STATIC函数通过THIS指针访问到当前对象里的成员函数,那么这个成员函数就可以轻松操作所有成员变量了。这种方法适用于所有系统CALLBACK。以CreateTh 阅读全文
摘要:
读起C++对象模型,有点吃力。真的很吃力。。P140C++支持三种类型的成员函数:static,nonstatic,virtual.P141C++的设计准则之一就是:nonstaic member function至少必须和一般的nonmember function有相同的效率。在设计上为了支持这一准则,编译器内部已将"member 函数实体"转换为对等的"nonmember 函数实体"。下面是转化的步骤1. 改写函数的signature(意指函数原型)以安插一个额外的参数到member function中,用以提供一个存取管道,使class objec 阅读全文
摘要:
NetDemo中,通过使用GM管理组件的形式来组织整个游戏,其中整个游戏走向逻辑处理基本集中在GameLogicComponent里面,现把代码分析如下: 阅读全文
摘要:
Believable Dead Reckoning for Networked Games Author: Curtiss Murphy*******************INTRODUCTION*******************This text file goes along with the Game Engine Gems 2 chapter described above. The source material found on the DVD for this chapter was taken from several open source repositories i 阅读全文
摘要:
看一些开源库,里面好多类有一个**IMPL。经查询还是有些门道和说法的。查询了一些相关资料。(英文没有翻译,挺简单的。)PIMPL 也可以称为一种设计模式了。现在摘录如下:pimpl 手法在 C++ 里已是“高手”们广泛运用的成熟方法之一,它的优点很多,诸如降低编译依赖、提高重编译速度之类的工具性优势自不待赘言,而其对“保持接口稳定性”的优点更值得称道。It makes it possible to avoid other classes to know internal data structures and other information of the class. It also s 阅读全文
摘要:
OSG似乎忽略了我设置的*/远剪切*面(near/far clipping plane),为什么?A:使用osgUtil::SceneView时,远/*剪切*面在运行时根据视点与场景的值自动进行计算。这种设计可以优化深度缓存的远/*深度范围,否则可能由于远/**面的设置不当而产生斑驳(z-fighting)的现象。 用户也可以重新设置这一特性,使用: sceneview->setComputeNearFarMode(osgUtil::CullVisitor::DO_NOT_COMPUTE_NEAR_FAR) 如果视口为osgProducer::Viewer,则可以使用: viewer.g 阅读全文
摘要:
导读: 我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在 DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用 __declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪, 先来看看MSDN里面是怎么说的: 不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所... 阅读全文