IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    AGG入门(一) - 配置开发环境

    Shihira发表于 2012-07-24 08:28:00
    love 0
    AGG是一个高效的、高质量的、开源的矢量图形库,类似的有:GTK+的Cairo,Microsoft的GDI+。在三者中,AGG的性能是最高的(不讨论Skia和Direct2D,他们有OGL和DX的硬件加速,绘图速度根本不是一个档次的)。让我们细数一下他的优缺点:
    • 优点:效率高,质量高(有反锯齿),功能强大,跨平台和平台GUI支持,……
    • 缺点:没有硬件加速,文档少,门槛有那么点高,……
     

    一、准备

    • 到 http://www.antigrain.com/download/index.html下载源码包。
    • 今天用Visual C++ 6.0来做IDE和编译器啦!要多经典有多经典。
     

    二、工作

    1. 在VC6里新建一个工程“AGG”,类型为静态库Win32 Static Library

    2. 将下列源文件都加入工程:

      1. ./src/ 目录下所有cpp文件【核心库】*
      2. ./src/ctrl/ 目录下所有cpp文件【控件库】*
      3. ./src/platform/ 下对应平台目录(win32)下的所有cpp文件【平台支持库】*
      4. ./font_freetype/ 下所有的cpp文件【Freetype字体支持库】
      5. ./font_win32_tt/ 下所有的cpp文件【Truetype字体支持库】*
      6. ./gpc/ 下所有的cpp文件【Generic Polygon Clipper裁切库】
    3. 将下列目录加入Tools(工具)菜单– Options(选项)菜单 – Directory(目录)选项卡中的Include Files目录列表中:

      1. ./include/ *
      2. ./font_freetype/
      3. ./font_win32_tt/ *
      4. ./gpc/
    4. 选择配置为Win32 Release,编译

    5. 编译成功后,Tools(工具)菜单– Options(选项)菜单 – Directory(目录)选项卡中的Library Files目录列表中加入 【工程所在目录】\Release\

    6. 没有成功编译的童鞋,奖励已经编译好的AGG.lib一枚…… AGG.zip

    三、测试

    1. 新建一个Win32 Application 空工程,新建一源文件,加入下面的代码:
      #include <agg_pixfmt_rgb.h>
      #include <agg_renderer_base.h>
      #include <platform/agg_platform_support.h>

      class the_application : public agg::platform_support
      {
      public:
          the_application(agg::pix_format_e format, bool flip_y) : 
              agg::platform_support(format, flip_y),
              pix_fmt(rbuf_window()),
              ren_bas(pix_fmt) //初始化渲染器
          { }

          virtual void on_draw()
          {
              ren_bas.reset_clipping(true);
              ren_bas.clear(agg::rgba8(204, 204, 204));
          }

      private:
          agg::pixfmt_rgb24 pix_fmt;
          agg::renderer_base<agg::pixfmt_rgb24> ren_bas;

      };

      int agg_main(int argc, char* argv[])
      {
          the_application app(agg::pix_format_rgb24, true);
          app.caption("AGG Test");
          
          if(app.init(500, 500, agg::window_resize)) {
              return app.run();
          }
          return -1;
      }
    2. 在【工程】菜单 - 【设置】菜单 - 【连接】选项卡 - 【对象/库模块】文本框 中加入AGG.lib
    3. 编译运行,不出意外,可以得到下面的结果:



    Shihira 2012-07-24 16:28 发表评论


沪ICP备19023445号-2号
友情链接