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

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

一、上一節(jié)的代碼

        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) 
            構造函數,指定事先分配好的內存塊(到時就畫到上面)首地址、寬高、一行的字節(jié)數(默認全部都是0);
  • row_ptr(int y)
            返回第y行的首地址;
  • copy_from(void *buf)
            從buf中拷貝像素;
  • clear(int8u value)
            用value清空緩存
  • buf(), height(), weight(), stride()
            返回緩存首地址、寬高、一行的字節(jié)數;
注:代碼中的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)
            顏色梯度,就是顏色變?yōu)閺脑鹊念伾珴u變?yōu)閏,變化率為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種像素格式,它們起名字的規(guī)則就是:
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))
            每一像素執(zhí)行一遍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四個通道,像素格式混合器混合像素,像素格式混合器操作的結果是使渲染緩存里的數據發(fā)生變化,而混合器則不會,因為它的作用僅僅是表示顏色。

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

導航

統(tǒng)計

公告

留言簿(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免费观看性色| 夜夜夜久久久| 欧美日韩亚洲一区二区三区在线 | 亚洲精品久久嫩草网站秘色| 久久久久久久久岛国免费| 国产精品热久久久久夜色精品三区| 亚洲一区二区伦理| 亚洲一区二区三区四区五区午夜 | 国产欧美一区二区三区久久| 久久国产成人| 久久国产精品久久久久久电车| 又紧又大又爽精品一区二区| 欧美黑人一区二区三区| 欧美国产成人精品| 亚洲欧美日韩一区| 欧美一区二区在线免费播放| 一区二区三区自拍| 91久久夜色精品国产网站| 欧美午夜精品一区| 欧美一区在线看| 欧美成人一区二区| 亚洲欧美国产不卡| 久久综合久久久久88| 一区二区高清视频在线观看| 午夜激情综合网| 亚洲国语精品自产拍在线观看| 日韩图片一区| 韩国欧美国产1区| 亚洲精选大片| 国内偷自视频区视频综合| 亚洲人成网站在线播| 国产欧美精品一区aⅴ影院| 欧美成人综合| 国产精品亚洲美女av网站| 欧美国产视频一区二区| 国产精品免费观看视频| 亚洲第一页在线| 国产视频精品va久久久久久| 亚洲日本va午夜在线电影| 国产一区二区三区在线免费观看 | 久久精品国产亚洲5555| 在线看成人片| 亚洲在线观看视频网站| 亚洲精选91| 欧美亚洲系列| 亚洲欧美成人一区二区在线电影 | 日韩视频不卡| 亚洲国产日韩一区| 欧美一站二站| 欧美在线亚洲综合一区| 欧美日韩蜜桃| 亚洲精品乱码久久久久久| 国内精品嫩模av私拍在线观看| 亚洲午夜免费视频| 一本色道精品久久一区二区三区| 久久久国产精品一区二区中文| 午夜精品久久久久久久白皮肤| 欧美激情亚洲| 亚洲国产婷婷综合在线精品 | 欧美成人一区二区三区片免费| 久久一区免费| 国产亚洲一级| 欧美自拍偷拍午夜视频| 欧美在线精品一区| 国产精品老牛| 亚洲性xxxx| 午夜精品在线看| 国产精品国产三级国产aⅴ入口| 亚洲精品乱码久久久久久久久| 亚洲精品资源| 欧美日韩精品一区二区在线播放 | 欧美激情女人20p| 亚洲福利视频一区二区| 美女网站在线免费欧美精品| 模特精品在线| 亚洲乱码久久| 欧美亚日韩国产aⅴ精品中极品| 亚洲精品乱码久久久久久按摩观| 一本色道久久综合亚洲精品按摩| 欧美人与禽猛交乱配视频| 亚洲韩国一区二区三区| 一区二区激情| 国产精品嫩草99av在线| 午夜精品久久久久久久99黑人| 久久久久国产一区二区三区四区 | 欧美激情按摩在线| 亚洲精品国产精品国自产观看浪潮| 亚洲精品字幕| 国产精品国产三级国产aⅴ无密码| 亚洲永久在线| 久久久久久亚洲精品杨幂换脸 | 国产日韩欧美日韩大片| 欧美在线一级va免费观看| 欧美成人激情视频免费观看| 99在线精品视频| 国产农村妇女精品一二区| 久久久精品国产免大香伊| 欧美激情小视频| 午夜精品一区二区三区四区| 国产一区日韩二区欧美三区| 欧美激情精品久久久久久| 在线一区二区三区四区| 嫩模写真一区二区三区三州| 亚洲特级毛片| 精品91在线| 国产精品美女在线观看| 另类成人小视频在线| 在线视频日韩精品| 欧美va亚洲va国产综合| 午夜精品成人在线| 亚洲黄色有码视频| 国产欧美日韩亚洲| 欧美激情第六页| 久久久国产精品一区| 亚洲一区二区高清| 亚洲激情校园春色| 美女久久一区| 亚洲欧美激情视频| 日韩视频在线一区二区| 好吊色欧美一区二区三区四区 | 欧美一级午夜免费电影| 亚洲国产日韩欧美在线99| 久久精品色图| 午夜国产精品影院在线观看| 亚洲美女色禁图| 在线免费不卡视频| 国产欧美一区二区精品性| 欧美涩涩视频| 欧美国产日本韩| 快播亚洲色图| 久久伊人精品天天| 久久精品成人欧美大片古装| 亚洲特级片在线| 亚洲麻豆国产自偷在线| 亚洲福利免费| 亚洲福利一区| 欧美国产国产综合| 久久影视精品| 噜噜噜噜噜久久久久久91| 久久精品91| 欧美一区二区在线免费观看| 亚洲欧美国产一区二区三区| 一区二区三区欧美亚洲| 亚洲伦理在线免费看| 亚洲精品欧美专区| 91久久综合| 一本色道久久综合狠狠躁篇的优点| 亚洲日本va午夜在线电影| 亚洲丶国产丶欧美一区二区三区| 娇妻被交换粗又大又硬视频欧美| 狠狠色丁香久久婷婷综合丁香| 国产偷久久久精品专区| 国产视频一区在线观看一区免费| 国产日韩精品在线| 韩国自拍一区| 亚洲精品1区2区| 99热免费精品| 亚洲一区国产一区| 欧美亚洲在线播放| 久久久欧美精品sm网站| 免费av成人在线| 91久久综合| 一区二区三区四区精品| 亚洲影院高清在线| 久久久精品2019中文字幕神马| 久久夜色精品国产欧美乱极品 | 亚洲手机在线| 校园激情久久| 免费成人网www| 欧美日韩国产一中文字不卡 | 久久亚洲春色中文字幕久久久| 狼人社综合社区| 欧美日韩亚洲一区二区| 国产亚洲精品福利| 亚洲国产精品久久久久秋霞不卡| 亚洲免费观看高清在线观看 | 久久国产色av| 男人天堂欧美日韩| 日韩午夜中文字幕| 欧美一区二区三区在线观看视频| 麻豆91精品91久久久的内涵| 欧美区视频在线观看| 国产日产欧产精品推荐色 | 亚洲专区在线| 久久亚洲二区| 亚洲免费观看高清完整版在线观看熊 | 久久人人爽人人爽| 欧美日韩精品一区二区三区| 国产日韩欧美中文| 最新热久久免费视频| 性18欧美另类| 亚洲第一狼人社区| 午夜一区二区三区在线观看| 欧美国产极速在线| 国产日本欧美在线观看| 亚洲剧情一区二区| 久久久蜜桃精品|