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

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

二、渲染緩存

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

頭文件

#include "platform/agg_platform_support.h"

類型定義

typedef row_accessor<int8u> rendering_buffer //int8u是8 bit無符號(hào)整形

基本成員函數(shù)

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

三、混合器

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

頭文件

#include "agg_pixfmt_rgba.h"

類型定義

struct rgba8; //對(duì),你沒有看錯(cuò),是結(jié)構(gòu),不是類……

基本成員函數(shù)

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

成員變量

  • r, g, b, a都是無符號(hào)整型;

四、像素格式混合器


像素格式混合器的作用是直接操作像素(也就是緩存里保存的數(shù)據(jù),但起碼有個(gè)像素的樣子),起到Win32API里的SetPixel()和GetPixel()的作用。像素格式由兩個(gè)屬性決定:混合器類型【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;

基本成員函數(shù)

  • pixfmt_rgb24(agg::rendering_buffer &) 
            構(gòu)造函數(shù),指定緩存就好;
  • 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)
            這個(gè)就是相當(dāng)于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)開始打橫(豎)順序設(shè)置len長(zhǎng)度的像素;
  • 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長(zhǎng)度的像素;
  • 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)
            同上兩個(gè),不過不是一個(gè)顏色,是一系列的顏色;
  • 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)順序復(fù)制(混合)到當(dāng)前緩存的(xdst, ydst)中;
【其他函數(shù)和像素格式就要靠大家的舉一反三,觸類旁通了……】

五、結(jié)語

上面說的三者關(guān)系是:混合器混合RGBA四個(gè)通道,像素格式混合器混合像素,像素格式混合器操作的結(jié)果是使渲染緩存里的數(shù)據(jù)發(fā)生變化,而混合器則不會(huì),因?yàn)樗淖饔脙H僅是表示顏色。

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

導(dǎo)航

統(tǒng)計(jì)

公告

留言簿(2)

隨筆分類

搜索

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            新67194成人永久网站| 美玉足脚交一区二区三区图片| 亚洲欧美久久久| 日韩一区二区久久| 在线中文字幕一区| 亚洲男女自偷自拍图片另类| 性欧美1819sex性高清| 欧美一区午夜视频在线观看| 欧美在线网址| 欧美大片91| 亚洲国产欧美另类丝袜| 欧美激情va永久在线播放| 亚洲第一黄网| 宅男精品视频| 欧美一区二区在线播放| 欧美va日韩va| 国产精品一区二区a| 雨宫琴音一区二区在线| 99成人在线| 久久精品30| 欧美激情一区二区在线 | 欧美精品成人| 国产精品午夜视频| 亚洲国产美国国产综合一区二区| 亚洲精品免费网站| 欧美一区二区精品在线| 另类综合日韩欧美亚洲| 一本久久综合亚洲鲁鲁五月天| 亚洲欧美国产日韩天堂区| 欧美成人精品一区二区三区| 国产精品乱码久久久久久| 亚洲国产欧美久久| 欧美在线观看视频一区二区三区| 亚洲国产成人av在线| 亚洲欧美国产日韩中文字幕| 欧美精品 国产精品| 一区在线观看| 亚洲欧美激情视频在线观看一区二区三区| 久久久久国产精品人| 一本综合精品| 欧美国产丝袜视频| 亚洲高清不卡av| 欧美一区午夜精品| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产精品午夜久久| 久色成人在线| 欧美精品乱人伦久久久久久| 欧美日精品一区视频| 久久国产精品第一页| 欧美日韩一区二区视频在线观看| 国产一区二三区| 国产精品99久久久久久有的能看| 亚欧成人精品| 日韩午夜电影av| 免费黄网站欧美| 伊人婷婷欧美激情| 久久久久女教师免费一区| 一本久道久久综合中文字幕| 欧美大片在线看免费观看| 在线观看成人网| 毛片一区二区| 久久国产精品一区二区| 国产亚洲欧美激情| 久久久999精品| 午夜久久美女| 国产精品一二三| 午夜伦理片一区| 亚洲免费影视| 国产精品欧美精品| 欧美在线观看一区| 欧美在线国产| 在线观看av一区| 亚洲国产日日夜夜| 久久综合色综合88| 亚洲国产成人精品久久久国产成人一区 | 激情综合网激情| 欧美www视频在线观看| 美女主播一区| 一本色道久久加勒比精品| 日韩一级大片| 国产日韩欧美高清免费| 久久一区免费| 欧美国产成人精品| 亚洲一区二区动漫| 久久不射电影网| 亚洲精品黄网在线观看| 一区二区久久| 国内外成人免费激情在线视频| 欧美大秀在线观看| 欧美午夜美女看片| 久久手机精品视频| 欧美日韩三级视频| 久久在线视频| 99一区二区| 亚洲女人av| 亚洲激情第一区| 在线亚洲一区二区| 激情视频一区二区三区| 亚洲区在线播放| 国内精品久久久久久影视8| 亚洲啪啪91| 国内精品伊人久久久久av影院 | 久久中文字幕一区| 亚洲午夜精品网| 久久精品麻豆| 国产精品99久久99久久久二8 | 久久美女艺术照精彩视频福利播放| 久久综合久色欧美综合狠狠 | 欧美成人免费小视频| 国产精品成人v| 欧美高清视频| 国产在线拍揄自揄视频不卡99 | 欧美在线观看视频一区二区三区| 噜噜爱69成人精品| 欧美在线免费观看| 欧美大色视频| 美女主播精品视频一二三四| 国产精品乱人伦中文| 亚洲精品自在久久| 在线成人免费观看| 久久国产天堂福利天堂| 欧美一级久久| 国产精品久线观看视频| 亚洲三级免费电影| 最近中文字幕日韩精品| 久久久久国内| 久久久久久一区二区| 国产精品自拍网站| 夜夜嗨av一区二区三区中文字幕 | 欧美成人亚洲成人日韩成人| 国产一区二区主播在线| 亚洲无毛电影| 性色av一区二区三区红粉影视| 欧美电影免费观看网站| 老色鬼久久亚洲一区二区| 国产一区在线观看视频| 久久av一区二区三区| 久久久久久网站| 国产一区二区在线免费观看| 亚洲欧美日韩精品久久| 亚洲欧美在线aaa| 国产欧美日本| 亚洲欧美日本视频在线观看| 午夜宅男久久久| 国产日韩精品一区二区三区| 先锋影音一区二区三区| 亚洲大片在线| 欧美freesex交免费视频| 欧美激情在线观看| 日韩西西人体444www| 欧美美女操人视频| 夜夜嗨av色综合久久久综合网| 亚洲永久免费视频| 国产精品理论片| 久久久久久九九九九| 欧美成在线视频| 夜夜爽av福利精品导航| 国产精品国产三级国产aⅴ入口| 在线亚洲自拍| 久久精品99国产精品| 伊人激情综合| 欧美精品www在线观看| 亚洲一区综合| 农村妇女精品| 亚洲视频综合| 国精品一区二区| 欧美日本精品在线| 亚洲一区在线播放| 免费黄网站欧美| 99综合在线| 国模一区二区三区| 欧美日韩国产精品一区| 性欧美长视频| 亚洲国产精品综合| 欧美制服丝袜| 一区二区三区www| 国内激情久久| 欧美日韩小视频| 久久精品视频播放| 中国av一区| 欧美国产日韩一区二区在线观看 | 欧美freesex8一10精品| 一区二区三区成人精品| 免费成人高清视频| 亚洲欧美日韩国产综合精品二区| 在线精品观看| 国产精品夜色7777狼人| 欧美电影免费观看网站| 久久久久久亚洲精品杨幂换脸| 亚洲人成啪啪网站| 欧美69视频| 久久婷婷人人澡人人喊人人爽| 亚洲自拍偷拍视频| 亚洲美女精品久久| 在线看片日韩| 国产欧美日韩综合一区在线观看 | 亚洲一区图片| 99xxxx成人网| 亚洲三级电影全部在线观看高清| 免费在线成人|