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

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

一、准备

 

二、工作

  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. 编译运行,不出意外,可以得到下面的结果:

posted on 2012-07-24 16:28 Shihira 阅读(6834) 评论(13)  编辑 收藏 引用 所属分类: 图形编程

评论

# re: AGG入门(一) - 配置开发环境 2012-07-15 22:32 战魂小筑

来围观下经典的楼主,都用win7了,还抓着vc6不放啊?  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2012-07-15 22:42 Shihira

@战魂小筑
Win7就由得它Win7吧
VC6是最“落后”的编译器,能通过它的编译,那些代码就是已经不含什么新标准的特性。这样不但能跨编译器,还能跨平台,够稳定  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2012-07-16 09:22 战魂小筑

@Shihira
GCC现在兼容性很好了, VC代码只要不是特别晦涩的模板都没问题.
除非做硬件, 否则还是尽量升级版本

VC6怕的就是BUG...当年被折腾惨了  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2012-07-16 09:36 Shihira

@战魂小筑
实际上……偶也用Code::Blocks中,但是它的函数提示非常之不好用,稍微用宏替一下,就像Win32API里的:
#ifdef _UNICODE
#define .... ....W
#else
#define .... ....A
#endif
他就不让提示了
至于VC6,升了Intel编译器,用了Visual Assist X,倒也没什么不好,我也习惯了它的界面  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2012-07-16 09:38 战魂小筑

@Shihira
老兄, 用一把vs2010, 你会爱上她的. 超级高效了
不像很多人用过2003后就把之后.net版本VC都否定了, 现在已经改的很好了  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2012-07-16 09:59 Shihira

@战魂小筑
因为我用过2008 在我的老爷机上运行起来那叫一个卡 然后之后的版本我都不敢用了 或许我可以试一下 谢谢你的建议  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2012-07-16 13:17 imjj

skia 不用硬件加速也比 agg 要好一些吧,至少更新比较勤快,有人在专门维护 agg 都多久了……  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2012-07-16 20:44 Shihira

@imjj
skia是好东西,只不过他移植编译神马的有点繁...至于AGG……因为木有有力的公司支持,冷冷清清,很久没更新啦
不过不可否认他也是好东西,适应能力很强  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2013-02-19 12:11 crax

你好 agg是个非常优秀的库 一直想拿来应用到项目中 目前的示例好像都是基于agg自身的框加 博主能否提供在其它环境下使用的示例。如在mfc中 或是在其它的开源框架使用的示例。  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2013-06-09 16:41 yanghl03

楼主你好,我的AGG库编译通过了,但测试的时候出问题了,麻烦你帮我看一下,错误如下:
AGG.lib(agg_platform_support.obj) : error LNK2001: unresolved external symbol "int __cdecl agg_main(int,char * * const)" (?agg_main@@YAHHQAPAD@Z)
F:\3D city map\AGG\Release\testAGG.exe : fatal error LNK1120: 1 unresolved externals

谢谢了
  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2013-10-28 12:33 Shihira

@yanghl03
是这样的。你在你的源文件里需要用agg_main函数来代替main或WinMain函数,因为WinMain函数已经在agg_platform_support.cpp里被写好了,在里面将会调用agg_main。  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2014-06-20 10:55 JackMichaelis

编译静态库的过程报错:找不到ft2build.h  回复  更多评论   

# re: AGG入门(一) - 配置开发环境 2014-06-21 00:06 Shihria

@JackMichaelis
我没有遇到这样的情况,可能你需要安装一个freetype2到电脑上  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

公告

留言簿(2)

随笔分类

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜