青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

AGG入門(四) - 渲染緩存和混合器

一、上一節的代碼

        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));

二、渲染緩存

渲染緩存保存著一個個像素,作為AGG的畫布。它僅僅是一個內存塊,用來儲存像素信息,不提供任何繪圖功能,只允許你讀取和修改里面的數據。它也不告訴你里面的像素是灰度的、RGB的還是RGBA的,不告訴你從哪里到哪里是一個像素——它只是用來管理內存數據的。

頭文件

#include "platform/agg_platform_support.h"

類型定義

typedef row_accessor<int8u> rendering_buffer //int8u是8 bit無符號整形

基本成員函數

  • rendering_buffer(int8u* buf, unsigned width, unsigned height, int stride) 
            構造函數,指定事先分配好的內存塊(到時就畫到上面)首地址、寬高、一行的字節數(默認全部都是0);
  • row_ptr(int y)
            返回第y行的首地址;
  • copy_from(void *buf)
            從buf中拷貝像素;
  • clear(int8u value)
            用value清空緩存
  • buf(), height(), weight(), stride()
            返回緩存首地址、寬高、一行的字節數;
注:代碼中的rbuf_window()是platform_support的一個成員函數,用于返回platform_support一開始幫你申請的緩存引用。

三、混合器

混合器的存在是為了適應不同平臺、不同需求下的不同像素格式。混合器有三種:agg::rgbaagg::rgba8agg::rgba16,都是用來指定顏色的,rgba每個通道儲存為double,rgba8為unsigned char,rgba16為int或long int;混合器起到的作用就像Win32API里的RGB和COLORREF宏。

頭文件

#include "agg_pixfmt_rgba.h"

類型定義

struct rgba8; //對,你沒有看錯,是結構,不是類……

基本成員函數

  • rgba8(unsigned r, unsigned g, unsigned b, unsigned a)
            無須解釋了吧,最大255;
  • clear(), no_color()
            四個通道全部清零,也就是變沒色咯;
  • transparent()
            alpha清零,變透明;
  • opacity()
            返回透明度,用double表示;
  • gradient(agg::rgba8 &c, double k)
            顏色梯度,就是顏色變為從原先的顏色漸變為c,變化率為k;
  • add(agg::rgba8 &c, unsinged cover)
            顏色疊加,疊加一個透明度為cover/255的顏色c;

成員變量

  • r, g, b, a都是無符號整型;

四、像素格式混合器


像素格式混合器的作用是直接操作像素(也就是緩存里保存的數據,但起碼有個像素的樣子),起到Win32API里的SetPixel()和GetPixel()的作用。像素格式由兩個屬性決定:混合器類型【agg::rgba8/agg::rgba16】、bgr/rgb/rgba/abgr順序【agg::order_bgr/agg::order_rgb/agg::order_rgba/agg::order_abgr】——這樣,共8種像素格式,它們起名字的規則就是:
agg::pixfmt_[order][bits*3];
下面用最常用的agg::pixfmt_rgb24來解釋:

頭文件

#include "agg_pixfmt_rgb.h"

類型定義

typedef pixfmt_alpha_blend_rgb<blender_rgb<rgba8,  order_rgb>, rendering_buffer> pixfmt_rgb24;

基本成員函數

  • pixfmt_rgb24(agg::rendering_buffer &) 
            構造函數,指定緩存就好;
  • blend_pixel(agg::rgba8& c, int x, int y, int8u cover)
            用顏色c以cover(覆蓋率=透明度)的透明度混合像素(x, y);
  • copy_pixel(agg::rgba8& c, int x, int y),pixel(int x, int y)
            這個就是相當于SetPixel()和GetPixel()了;
  • copy_hline(int x, int y, unsigned len, agg::rgba8& c)
    copy_vline(int x, int y, unsigned len, agg::rgba8& c)  
            從(x, y)開始打橫(豎)順序設置len長度的像素;
  • blend_hline(int x, int y, unsigned len, agg::rgba8& c, int8u cover)
    blend_vline(int x, int y, unsigned len, agg::rgba8& c, int8u cover) 
            從(x, y)開始打橫(豎)順序混合len長度的像素;
  • copy_solid_hspan(int x, int y, unsigned len, agg::rgba8* colors)
    copy_solid_vspan(int x, int y, unsigned len, agg::rgba8* colors)
    blend_solid_hspan(int x, int y, unsigned len, agg::rgba8* colors, int8u* cover, int8u cover)
    blend_solid_vspan(int x, int y, unsigned len, agg::rgba8* colors, int8u* cover, int8u cover)
            同上兩個,不過不是一個顏色,是一系列的顏色;
  • for_each_pixel(void (*f)(agg::rgba8* color))
            每一像素執行一遍f;
  • copy_from(agg::rendering_buffer & from, int xdst, int ydst, int xsrc, int ysrc, unsigned len)
    blend_from(agg::rendering_buffer & from, int xdst, int ydst, int xsrc, int ysrc, unsigned len[, unsigned cover])  
            從緩存form中(xsrc, ysrc)順序復制(混合)到當前緩存的(xdst, ydst)中;
【其他函數和像素格式就要靠大家的舉一反三,觸類旁通了……】

五、結語

上面說的三者關系是:混合器混合RGBA四個通道,像素格式混合器混合像素,像素格式混合器操作的結果是使渲染緩存里的數據發生變化,而混合器則不會,因為它的作用僅僅是表示顏色。

posted on 2012-07-24 16:29 Shihira 閱讀(4231) 評論(0)  編輯 收藏 引用 所屬分類: 圖形編程

導航

統計

公告

留言簿(2)

隨筆分類

搜索

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线日韩中文| 欧美日韩国产丝袜另类| 亚洲第一视频网站| 免费观看不卡av| 免费永久网站黄欧美| 久久综合伊人77777蜜臀| 久久综合伊人77777麻豆| 欧美va亚洲va国产综合| 亚洲国产高清高潮精品美女| 亚洲欧洲日韩女同| 99re8这里有精品热视频免费| 亚洲视频一区二区| 欧美一区二区在线看| 欧美~级网站不卡| 欧美性猛交一区二区三区精品| 国产精品一区亚洲| 又紧又大又爽精品一区二区| 亚洲精品日产精品乱码不卡| 亚洲免费综合| 欧美ed2k| 亚洲伊人伊色伊影伊综合网| 久久先锋影音| 国产精品一二一区| 91久久国产综合久久| 在线一区二区日韩| 久久野战av| 一区二区三区高清在线观看| 久久精品在线播放| 欧美午夜一区二区福利视频| 久久久久九九九九| 香蕉久久a毛片| 久久免费视频这里只有精品| 欧美女同在线视频| 国产亚洲综合性久久久影院| 日韩视频一区二区三区在线播放| 亚洲夜间福利| 欧美国产日韩视频| 午夜精品国产更新| 欧美日韩精品一区二区三区四区| 国产日韩欧美二区| 亚洲色图在线视频| 亚洲国产成人av| 欧美在线观看天堂一区二区三区| 欧美日韩在线视频首页| 亚洲电影下载| 久久亚洲影音av资源网| 亚洲午夜久久久久久尤物 | 久久国产日韩| 国产精品v欧美精品v日本精品动漫| 亚洲高清成人| 久久五月激情| 欧美影院在线| 国产精品自拍三区| 亚洲欧美日韩中文在线制服| 亚洲人成在线影院| 麻豆国产va免费精品高清在线| 国产在线精品成人一区二区三区| 欧美亚洲视频在线观看| 宅男噜噜噜66国产日韩在线观看| 欧美连裤袜在线视频| 亚洲精品一区二区三区99| 欧美第十八页| 久热精品视频在线| 亚洲国产一区二区a毛片| 免费高清在线一区| 欧美成人伊人久久综合网| 91久久综合| 亚洲精品久久久久久久久久久久久| 欧美成年人视频网站| 亚洲人成艺术| 亚洲日本在线视频观看| 欧美日韩在线免费| 亚洲免费婷婷| 欧美一区二区播放| 又紧又大又爽精品一区二区| 欧美成人精品1314www| 欧美va天堂在线| 亚洲图片在线观看| 亚洲欧洲av一区二区| 国产午夜亚洲精品羞羞网站| 久久久综合激的五月天| 久久大逼视频| 午夜精品久久久久久久99热浪潮| 国产日韩精品电影| 国内欧美视频一区二区| 久久久久在线观看| 免费观看成人www动漫视频| 亚洲精品综合精品自拍| 99精品国产在热久久婷婷| 国产精品久久久久久久久免费 | 夜夜爽夜夜爽精品视频| 一本一本久久a久久精品综合妖精| 欧美日韩在线免费观看| 久久精品视频在线观看| 欧美大片免费观看在线观看网站推荐 | 裸体丰满少妇做受久久99精品| 久久免费国产| 一区二区三区日韩精品| 欧美一级大片在线观看| 亚洲精品一二| 欧美一区二区三区的| 亚洲欧洲日本专区| 亚洲欧美精品中文字幕在线| 亚洲精品老司机| 亚洲一区尤物| 亚洲人www| 亚洲欧美在线免费观看| 亚洲日韩欧美视频| 久久国产精品久久精品国产| 亚洲性感美女99在线| 久久一区二区三区av| 亚洲一区在线观看视频| 久久综合狠狠综合久久综青草| 亚洲在线中文字幕| 欧美大片18| 免费日韩av| 国产亚洲综合性久久久影院| 日韩小视频在线观看| 亚洲国产成人午夜在线一区 | 亚洲一区二区久久| 一区二区三区视频在线| 久久久久久久久久看片| 性视频1819p久久| 欧美日产一区二区三区在线观看| 美女黄色成人网| 国产一区久久| 午夜精品视频在线观看| 亚洲永久视频| 欧美视频在线一区二区三区| 亚洲国产岛国毛片在线| 在线观看国产日韩| 欧美一站二站| 久久黄色影院| 国产日韩欧美一区| 亚洲一区日韩| 欧美一区二区三区播放老司机| 欧美三级在线| 国产精品99久久久久久久久| 一区二区三区视频在线看| 欧美高清成人| 亚洲二区视频| 日韩视频在线免费| 欧美日韩成人综合| 亚洲日本欧美日韩高观看| 日韩视频一区二区在线观看 | 欧美激情91| 亚洲国产91| 欧美精品激情在线| 日韩视频免费看| 亚洲少妇诱惑| 国产精品一二一区| 久久成人免费| 欧美国产精品久久| 亚洲欧洲日韩在线| 欧美日韩一区二区三区免费| 在线一区亚洲| 久久久久一区二区| 亚洲精品美女免费| 欧美三级黄美女| 午夜亚洲激情| 欧美肥婆bbw| 亚洲香蕉视频| 狠狠做深爱婷婷久久综合一区 | 免费欧美在线| 日韩亚洲精品电影| 久久精品首页| 亚洲精品日日夜夜| 国产精品成人观看视频免费| 午夜在线观看免费一区| 欧美a级一区| 亚洲欧美不卡| 亚洲高清视频的网址| 欧美视频在线一区| 久久久久一本一区二区青青蜜月| 亚洲欧洲在线视频| 久久国产成人| 亚洲精品欧美在线| 国产精品影片在线观看| 狼狼综合久久久久综合网| 在线视频欧美日韩| 欧美二区视频| 久久精品在线视频| 亚洲美女91| 狠狠色丁香婷婷综合| 欧美日韩一区二区三区四区在线观看 | 夜夜爽99久久国产综合精品女不卡| 国产精品久久久久久久第一福利| 久久久综合网站| 亚洲欧美日韩国产综合| 亚洲黄色免费电影| 久久免费精品日本久久中文字幕| 99视频精品在线| 在线免费观看欧美| 国产亚洲福利| 国产精品国产精品国产专区不蜜| 蜜臀av在线播放一区二区三区| 午夜精品视频网站| 在线综合亚洲| 亚洲老板91色精品久久| 欧美电影免费观看|