基于Agg的扫雷程序实现(上)

      摘要:agg是一个非常优秀的开源矢量图形库,还有一个类似的库是Cairo。与Cairo相比,Agg的效率更高,网上有人做了一个比喻,Agg是一堆进口车零件,而Cairo是一辆完整的国产车。

      这意味着Agg使用Agg需要我们自己对其进行封装,它提供从最原始的显存操作到最终的反走样操作的类的封装,只要细心研究它的文档,还是比较容易上手的。当然对图形渲染的流水线有个认识,能够更好的理解图形库,好了废话不多说,下面进入正题。

 

      我们选择在Windows Vs2005下开发扫雷程序,窗口系统选择SDL,SDL是一款非常优秀的多媒体工具库,适用于各种嵌入式程序,并且是跨平台的。

     1、首先新建一个vs2005的Win32工程。 配置Agg库,agg 库源码放进工程,在工具 –>选项->项目和解决方案面将包含目录 源码项分别增加一项 具体的值就是我们的当前的agg目录。

 

配置SDL将SDL将两个lib文件放入microsoft visual stdio8里面的vc目录的lib目录,

include目录下建个sdl目录, 将头文件放进去 在工具->选项->项目解决方案将此目录包含在内。

项目 –>项目属性(最下面一个)里面 链接器 输入里面增加对lib的引用

最后将sdldll文件放入system32目录下。

 

至此环境配置完毕。

 

2、封装一个渲染引擎,以便我们能够实现画东西,我们封装一个render_handler类,核心代码如下:

      

Code

 

 其中的cell类实现了每一个小格子的相关属性信息及实现,

Code

 

以上两个类分别实现了对agg图形库的封装操作,以及缓冲区的绑定,还有一个函数用来初始化SDL,主要代码如下:

Code

 程序的逻辑比较简单,就是有点麻烦,因为天色已晚,剩下的部分留作下一篇再介绍,今天先发个扫雷的界面截图上来,

 

 

posted @ 2009-06-21 22:55  超大狗  阅读(1651)  评论(0编辑  收藏  举报