![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
孟智将
还在奋斗积累游戏引擎各种经验
展开
-
C++属性注册机制
需求是这样:假设我有Class Base是一个对任何使用者都可见的接口基类,现在某个对外完全封闭的模块有Class A : public Base,Class B : public Base等A、B、C.....等一系列对Base类的拓展和实现。使用者只能获得 Base* 指针类型,却不知道是A、B、C还是D哪个子类的具体实现。我们需要让使用者通过Base*指针同样能操作(get、set)原创 2013-11-29 15:28:29 · 1732 阅读 · 0 评论 -
介绍一个计算函数执行时间的简单方法!
有时候有些特殊需求会需要计算函数时间,当然这个也容易,只要在函数前后各记录一下时间,相减就行了。其实方法确实是这样,但是在windows平台也很多方式,下面介绍一种个人认为比较简单精准的:class TimeCount { public: TimeCount() { //获得计数器的时钟频率 QueryPerformanceFrequency(&b原创 2013-11-29 15:42:08 · 1709 阅读 · 0 评论 -
Ogre水面倒影的实现
简单介绍一下水面倒影的实现方式这里简单介绍一下水面倒影的渲染实现方式,因为我自己也没有找到比较理想的水面波动生成算法,所以就不介绍了直接说原理吧,和上一篇的阴影实现有点类似在实现水面倒影前我们先想想,当摄像机在水面上方移动的时候倒影的渲染也会变化,所以倒影的渲染和相机的纹理息息相关假设摄像机Camera0此帧在P位置,水面为Plane,我们创建一个新的相机Camera1,将原创 2014-02-26 18:42:49 · 1440 阅读 · 0 评论 -
Ogre阴影实现原理解析
作者本人对Ogre研究也不是很深,本文仅供初学者参考这里介绍两种阴影实现原理,阴影锥阴影和纹理阴影一、阴影锥阴影顾名思义,阴影锥阴影其实就是创建一个椎体。我们以光源位置为起点,和需要产生阴影的物体的外围轮廓(光源作为参考位置)连线然后无限延伸,这样就得到了一个椎体,利用这个椎体做模板测试。我们把面对摄像机为正面的椎体面先绘制一遍,在相应的模板位置+1我们把背对摄像机为反原创 2014-02-26 18:26:53 · 1183 阅读 · 0 评论