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

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

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

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

        agg::renderer_base<agg::pixfmt_rgb24> 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<template> object(template &);

你可能感兴趣的:(AGG入门(三) - 渲染器介绍)