- 博客(6)
- 资源 (11)
- 问答 (1)
- 收藏
- 关注
原创 Ogre水面倒影的实现
简单介绍一下水面倒影的实现方式这里简单介绍一下水面倒影的渲染实现方式,因为我自己也没有找到比较理想的水面波动生成算法,所以就不介绍了直接说原理吧,和上一篇的阴影实现有点类似在实现水面倒影前我们先想想,当摄像机在水面上方移动的时候倒影的渲染也会变化,所以倒影的渲染和相机的纹理息息相关假设摄像机Camera0此帧在P位置,水面为Plane,我们创建一个新的相机Camera1,将
2014-02-26 18:42:49
1483
原创 Ogre阴影实现原理解析
作者本人对Ogre研究也不是很深,本文仅供初学者参考这里介绍两种阴影实现原理,阴影锥阴影和纹理阴影一、阴影锥阴影顾名思义,阴影锥阴影其实就是创建一个椎体。我们以光源位置为起点,和需要产生阴影的物体的外围轮廓(光源作为参考位置)连线然后无限延伸,这样就得到了一个椎体,利用这个椎体做模板测试。我们把面对摄像机为正面的椎体面先绘制一遍,在相应的模板位置+1我们把背对摄像机为反
2014-02-26 18:26:53
1218
原创 介绍一个计算函数执行时间的简单方法!
有时候有些特殊需求会需要计算函数时间,当然这个也容易,只要在函数前后各记录一下时间,相减就行了。其实方法确实是这样,但是在windows平台也很多方式,下面介绍一种个人认为比较简单精准的:class TimeCount { public: TimeCount() { //获得计数器的时钟频率 QueryPerformanceFrequency(&b
2013-11-29 15:42:08
1743
原创 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
1791
原创 Ogre线程渲染,渲染设备无法恢复窗口停止响应的案例及解决办法
问题比较简单:我在主线程Main中创建了WIN32窗口,并初始化好了Ogre相关资源。独立开启一个线程Render进行Ogre的渲染以及场景挂接、移除等渲染循环操作。正常情况下不会有任何问题,但是一旦我们改变了WIN32窗口的大小时,这时候会触发Ogre重置渲染设备,但是重置失败了,渲染循环也就崩溃了....跟着Ogre源代码到,bool D3D9Device::reset()里面发现
2013-11-21 11:41:15
1361
原创 一直想有个博客,有一些新学会的技术、想法等之类的就记录下来,今天就当开博第一天吧,坚持
2013.11.13开始博客之旅,希望能为以后健忘的自己,一些新手同学留点值得参考的东西!
2013-11-13 11:34:04
672
TA创建的收藏夹 TA关注的收藏夹
TA关注的人