pixfmt object的开销问题讨论

  分析代码:

    agg::rendering_buffer &rbuf = rbuf_window();

    agg::pixfmt_bgr24 pixf(rbuf);


    typedef agg::renderer_base<agg::pixfmt_bgr24> renderer_base_type;

    renderer_base_type renb(pixf);


    agg::renderer_primitives<renderer_base_type> primitive(renb);

  

    可能在上面的文章中已经多次提到在基础渲染的基础上进行的对象实例化,开销是非常小的,比如生成像素格式渲染器pixfmt_bgr24,仅仅是将渲染缓存的指针赋值给pixfmt_bgr24的成员变量,基础渲染器也是一样,她们都只是在函数调用的时候,进行其他的额外的操作,并没有分配任何的内存在构建该对象的过程中。

    如下是作者的一些话:

Where rbuf if a non-const reference to
agg::rendering_buffer. In my examples it's usually
looks like rbuf_window(). Usually creating a pixfmt
object costs nothing, but not obligatory in the
future.

最后一句话的翻译:创建像素格式对象花销很小,但在将来有需要的情况下不一定强制要求这样子做。

    在邮件中,作者提及到针对agg::path_storage希望是一个单实例,创建该对象的花销不小,任何的动态内存分配花销不小,并且对于系统而言造成的稳定性也是显而易见的!!

你可能感兴趣的:(object,agg,pixfmt)