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

    AGG入门(三) - 渲染器介绍

    Shihira发表于 2012-07-24 08:28:00
    love 0

    一、看回AGG入门(二)时on_draw()虚函数里的代码:

    agg::rendering_buffer &rbuf; = rbuf_window();
    agg::pixfmt_rgb24 pixf(rbuf);

    agg::renderer_base renb(pixf);
    renb.clear(agg::rgba8(255, 255, 255));

    pixf.copy_pixel(20, 20, agg::rgba8(0, 0, 255));

    二、渲染器

    什么是渲染?

    渲染是把内存中的绘图指令真正执行的过程。比如说,绘制一条线段,在内存里只会保存着两个端点的坐标和线段的宽度,而渲染就把这两个端点转换为位图、缓存甚至显示屏上的一个个像素的数据。又比如说,纸飞机下面肯定是要有投影的了,但这个投影的质量,就由渲染器决定;线段是走样的(A),还是反走样的(B),靠的就是渲染器的指令了。

    AGG里的渲染器

    AGG分有多种渲染器。在AGG中,渲染器负责表现扫描线中的每个线段。在渲染器之前,AGG图形中的线段是没有颜色值的,只是位置、长度和 覆盖率(透明度)。渲染器赋于线段色彩,最终成为一幅完整的图像。其中最常用的是:
    • 像素格式渲染器
    • 基础渲染器
    • 扫描线(反锯齿)渲染器

    三、三种渲染器间的关系

    • 像素格式渲染器(PixelFormat Renderer)是最基础的渲染器,不需要任何其他渲染器的支持,所以可以直接声明;
    • 基础渲染器(Base Renderer)是中级渲染器,需要像素格式作为模版和像素格式渲染器的支持;
    • 扫描线渲染器(Scanline Renderer)是高级渲染器,需要基础渲染器作为模版和支持;
    (注:模版主要是为了获取像素格式的信息)
    所以,除像素格式渲染器声明为:
    agg::class object(agg::rendering_buffer &);
    之外其他的渲染器都声明为:
    agg::class


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


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