之前接触了SDL,的确是个很好的轻量级游戏引擎,其实自己一直也有个想法,自己来开发个游戏库,呵呵,有点大了,现在想想,在windows下也就是对图形操作和窗口消息的封装吧。试着写写看吧,花了两天的时间,搞出个雏形,发来给大家分享下:
定义了两个类,surface和wnd,surface就是对图形的操作,这里封装的是GDI+,wnd就是对窗口的封装,包括它的创建和消息处理等。实际编写中发现gdi+对图形的操作蛮方便的,但是效率其实不如gdi,所以我的代码里有大量的gdi操作代码的注释,这里我想模拟双缓冲技术,写的要是有问题还望大家指正。wnd的窗口创建我用的是多线程,所以每个窗口对应自己的消息线程,但是窗口处理函数是共用的,所以消息处理代码要判断当前消息是对于哪个窗口的。下面看下实例代码:
在peekmessage上有个轮询的过程,所以我们要用setrun要添加自定义处理函数,来对窗口不停的刷新。addevent是添加事件处理的。setdelay是轮询的延迟函数,create便创建窗体了,创建后pause下,让主线程暂停。
本文有不足之处,还望大家多多指正。