摘要: 之前实现过C++11的delegate,为了学习,手动实现一个03版本的。没有可变模板参数,一切都是体力活。C++11下有function类,可以很轻松实现。于是从C++03开始,就从function造轮子。。function轮子的主要代码如下:#ifndef FUNCTION_CPLUSPLUS_... 阅读全文
posted @ 2014-05-21 15:22 蜀山 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 熟悉C#的人都清楚delegate,也清楚委托的作用。实现观察者模式,在C++中的一种做法就是通过接口继承来实现,这无疑大大增加了耦合度。通过delegate变可以解除这种耦合。下面是上班时间,偷偷实现的一个我的delegate。直接上码:#include#include#include#inclu... 阅读全文
posted @ 2014-05-15 22:59 蜀山 阅读(5303) 评论(0) 推荐(2) 编辑
摘要: 这两天看KlayGE引擎,里面的视频纹理。想来在Ogre中也实现一把。核心思想便是利用VMR9来渲染视频,在Ogre帧监听中更新Ogre纹理。下面给出自己的代码,有需要也可以向我索要,共同学习。下面给出关键代码:DShowVMR9Allocator.h 1 2 3 #ifndef _DSHOWVMR9ALLOCATOR_HPP 4 #define _DSHOWVMR9ALLOCATOR_HPP 5 7 8 #ifndef CHECK_HRESULT 9 #define CHECK_HRESULT(x) { HRESULT _hr = x; if (static_cast<HRE... 阅读全文
posted @ 2013-03-14 20:03 蜀山 阅读(1291) 评论(0) 推荐(1) 编辑
摘要: 手机硬件限制,很多PC上的渲染优化技术是没办法直接拿过来用的。目前有些游戏为了实现多部队战斗的效果,各种降低骨骼数目,模型面数的方案,但都逃不过骨骼动画计算这一环节。 在上个公司的时候,自己瞎想了一张方案,没想到最后还写出来了, 没想到最后还用上了。。。 先上张图,里面有100个士兵和10个萌宝宝的 阅读全文
posted @ 2015-09-03 17:16 蜀山 阅读(3854) 评论(4) 推荐(2) 编辑
摘要: 工作需要,需要实现一功能,能实时后台更新并输出其他窗口图形作为D3D纹理使用。目前已经实现一个较为高效版本,并实现Unity3D插件,在U3D中使用。下面是截图(用任务管理器窗口为例),后面会贴出部分代码,小弟不才,如有朋友需要,可以联系小弟。下面是在U3D中的测试代码:using UnityEngine;using System.Collections;using System.Runtime.InteropServices;using System;[RequireComponent(typeof(Camera))]public class DrawOtherWindow : MonoBe 阅读全文
posted @ 2013-02-25 00:08 蜀山 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 闲来无事,看看游戏精粹。 频繁的分配和删除操作可能会造成许多内存碎片。可能会造成有可以满足程序的内存请求,但却没有足够大的连续的内存块,这样游戏效率很低。 另一个副作用就是低的访问局部性。 下面是一个解决方法的代码: #include<assert.h> template<class DataType>class MemoryAlloc{public: MemoryAlloc(int Num); ~MemoryAlloc();private: MemoryAlloc(MemoryAlloc&otherM); MemoryAlloc& operator=( 阅读全文
posted @ 2011-07-09 01:55 蜀山 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 总算毕业了,缅怀一下。我的毕业设计做的是一个3D赛车游戏。做赛车游戏的很多,我这个也没什么新意,为了毕业没办法。 这个赛车游戏,包含几部分,可以设置游戏参数,可以选择车辆,选择场景。提供了一些基本的后期着色处理效果。我使用了Ogre渲染引擎,bullet物理引擎库,FMOD声音库。下面是关键类图结构: 下面是效果展示图: 纯粹是为了应付毕业设计。 阅读全文
posted @ 2011-06-30 13:18 蜀山 阅读(570) 评论(9) 推荐(0) 编辑
摘要: 今天新开了博客,甚是喜悦,作为菜鸟,无以为写的东西。恰好今天应友人所托,帮忙在Ogre中实现几何面的正反面不同纹理贴图的功能。我就贴出来。新手,请不要见笑。。。 首先,我的实现是在OpenGL平台下的。主要是借助GLSL shader语言,在shader中判断是几何面的正面还是反面,然后贴上不同的纹理。最初是在RenderMonkey里实现的,要实现此,需要设置Render State的GL_CullMode为NONE。下面给出很简单shader代码,超级简单,不要见笑。 首先,顶点shader:varying vec2 Texcoord;void main( void ){ Texcoord 阅读全文
posted @ 2011-02-22 22:19 蜀山 阅读(1451) 评论(1) 推荐(2) 编辑