日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AGG第二课 代码框架以及命名规则

發(fā)布時(shí)間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AGG第二课 代码框架以及命名规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1源碼目錄

?

1examples

最大的參考價(jià)值,作者在AGG庫下的example目錄中,創(chuàng)建了很多win32的測(cè)試用例,創(chuàng)建使用的是VC6.0的工程,目前采用VS2005,可以輕松的進(jìn)行工程的導(dǎo)入。初學(xué)者可以簡單的使用。進(jìn)入agg\examples\win32_api目錄,點(diǎn)擊example.dsw,允許進(jìn)行工程的導(dǎo)入,就OK了。接下來會(huì)對(duì)每一個(gè)例子進(jìn)行詳細(xì)的應(yīng)用剖析。

2font_freetype

??

3font_win32_tt

??

4gps

多邊形集合算法,后面剖析一二!!

5include

這是一個(gè)非常重要的文件夾,里面包含有三個(gè)文件夾和一堆的頭文件:ctrlplatform(作者在這里封裝了系統(tǒng)的函數(shù),提供了一種簡單測(cè)試AGG的方式),util.大部分的頭文件都是完整的包含類的聲明和實(shí)現(xiàn),受到模塊類定義的限制,

6src

該目錄下的源碼文件有vcgentrans等,不明所以,還有platform

util等文件夾,對(duì)應(yīng)于每一個(gè)平臺(tái)的實(shí)現(xiàn)文件。

2?框架代碼分析

rendering buffer (frame buffer 我們可以理解為顯存)存儲(chǔ)一塊連續(xù)的內(nèi)存區(qū)域,不知道自身具體存儲(chǔ)內(nèi)容的結(jié)構(gòu),只按照行的長度,向外提供行指針,有寬、高、步長屬性。

spanrender?水平區(qū)段繪制器,用于繪制scanline中的段,與renderingbuffer直接交互,將scanline的內(nèi)容映射到顯存中。

outline 輪廓線,將矢量數(shù)據(jù)轉(zhuǎn)化為點(diǎn)陣格式 rasterizer內(nèi)部類。

scanline將點(diǎn)陣格式的點(diǎn)集合,轉(zhuǎn)化成為renderer使用的水平區(qū)段。

renderer將點(diǎn)陣數(shù)據(jù)填上顏色放入顯存中

rasterizer柵格器,用于轉(zhuǎn)化上層的矢量數(shù)據(jù)到柵格集合中。

Vectortransitions?矢量變化,一個(gè)復(fù)雜的集合對(duì)應(yīng)著nconvs?對(duì)點(diǎn)集合的操作。

?

一個(gè)比方來介紹AGG里面的一組關(guān)系,rasterizer,scanline,renderer之間的關(guān)系.它們就如同你在黑板面前拿著一本一冊(cè),用粉筆畫黑板報(bào).那本畫冊(cè)就是rasterizer,他存儲(chǔ)圖形,黑板套裝(包括粉筆)就是我們的renderer,而你就是中間的scanline. AGG中就是通過scanlinerasterizer中存放的柵格信息用粉筆pixfmt_renderer轉(zhuǎn)化到黑板rendering_buffer中,完成最終的繪制.


變量定義:float 還是double類型

????實(shí)際上,這來源于C/C++對(duì)float和double類型的處理方法。如果你定義一個(gè)類似如下的函數(shù):

void foo(float x, float y) ,傳遞的參數(shù)值永遠(yuǎn)都是double類型。除此之外,在矩陣變換中,使用double類型是最合理的,因?yàn)椴捎胒loat類型,只能夠顯示7到10位小數(shù)點(diǎn),遇到精度的計(jì)算錯(cuò)誤是難以避免的。因此C/C++采用double類型,那是再自然不過的選擇。

????凡是有例外,我還是非常贊同在頂點(diǎn)源中使用float類型,例如: agg::path_storage,還有其他的轉(zhuǎn)換器保存了大量的頂點(diǎn)數(shù)組(agg::conv_stroke)。交叉使用double和float類型,會(huì)導(dǎo)致問題更加復(fù)雜。


vvertex的縮寫,ggenerator的縮寫。

1 agg_vcgen_xxxx

歷史從agg_gen_xxxxagg_cgen_xxxxagg_vcgen_xxxx

“vcgen””VertexaccCumulating Generators”的縮寫

2 agg_vpgen_xxxxx

"vpgen"?"Vertex Pass-through Generator"的縮寫

?

3?其他的命名

affine_matrix?à?trans_affine

viewport??àtrans_viewport

4?郵件記錄

I also would like to rename some classesand files, particulary agg_gen_xxxx to

agg_cgen_xxxx (where 'c' refers to"Cumulating" generators), there're also will

be agg_pgen_xxxxx refering to"Pass-through" generators. First ones acculumate

vertices of the whole contour (not path)before generating the path, the last

ones are fed with vertices and then askedto produce some other vertices on

demand. A typical example of thePass-through generator is Liang-Barski polygon

clipper.

?

Also, for the sake of consistency I'd liketo rename affine_matrix to

trans_affine, because there are trans_perspective,trans_bilinear, and

trans_warp_magnifier.


>?
> > Or just:
> >
> > agg::rasterizer_fill
> > agg::rasterizer_fill_aa
> > agg::rasterizer_line
> > agg::rasterizer_line_aa
> >
> > It's shorter but maybe a bit less clear.
>?
> If you want to fit the PostScript naming, maybe you could use:
>?
> agg::rasterizer_fill...
> agg::rasterizer_stroke...

I like these also.

>?
> > So, what is your vote: solid/outline, scanline/outline
> > of fill/line?
>?

My preference in order would be:

1) rasterizer_fill/stroke
2) rasterizer_fill/line


rendering buffer (frame buffer 我們可以理解為顯存)存儲(chǔ)一塊連續(xù)的內(nèi)存區(qū)域,不知道自身具體存儲(chǔ)


內(nèi)容的結(jié)構(gòu),只按照行的長度,向外提供行指針,有寬、高、步長屬性。

spanrender 水平區(qū)段繪制器,用于繪制scanline中的段,與rendering buffer直接交互,將scanline的內(nèi)


容映射到顯存中。

outline 輪廓線,將矢量數(shù)據(jù)轉(zhuǎn)化為點(diǎn)陣格式 rasterizer內(nèi)部類。

scanline將點(diǎn)陣格式的點(diǎn)集合,轉(zhuǎn)化成為renderer使用的水平區(qū)段。

renderer將點(diǎn)陣數(shù)據(jù)填上顏色放入顯存中

rasterizer柵格器,用于轉(zhuǎn)化上層的矢量數(shù)據(jù)到柵格集合中。

Vectortransitions 矢量變化,一個(gè)復(fù)雜的集合對(duì)應(yīng)著n多convs 對(duì)點(diǎn)集合的操作。

cw(clockwise):順時(shí)針

ccw( counter-clockwise):逆時(shí)針

flip_y翻轉(zhuǎn)y軸,來自于某些操作系統(tǒng)對(duì)于渲染緩存的y軸坐標(biāo)的方向問題(windows,BeOS系統(tǒng))


6)

premultiplied pre是預(yù)先的意思,而multiply是乘法的意思,按照字面上的理解就是預(yù)先乘以,簡稱預(yù)乘,對(duì)于一些圖片雖然提供了alpha通道的值,但是所有的RGB分量都是已經(jīng)乘以alpha通道得到的值,這樣子,就可以在進(jìn)行圖片的疊加顯示(專業(yè)術(shù)語是混合),減少了一道工序。

以前 color = alpha*A+(1-alpha)*B

現(xiàn)在 color = A * (1-alpha)*B


轉(zhuǎn)載于:https://blog.51cto.com/fengyuzaitu/1961149

總結(jié)

以上是生活随笔為你收集整理的AGG第二课 代码框架以及命名规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产又爽又黄游戏 | 狠狠视频 | 影音先锋中文字幕一区 | 亚洲精品一区二区在线 | 林天顾悦瑶笔趣阁 | 日韩在线视频免费 | 久久不射网站 | 国产精品电影一区 | 在线亚洲色图 | 日韩有码在线观看 | 欧美女人交配视频 | 久久精品噜噜噜成人88aⅴ | 色婷婷在线视频 | 亚洲经典视频 | 日韩在线播放一区二区 | 香蕉网站视频 | 呦呦精品 | 福利免费观看 | 91精品国产视频 | 美女隐私黄www网站动漫 | 日韩aaaaaa | 永久毛片 | www.黄色在线观看 | 亚洲网站色 | 欧美人与牲动xxxx | www.国产成人| 91午夜精品 | 黄色国产在线 | 国产日韩欧美在线观看视频 | 欧美午夜一区 | 操人视频网站 | 亚州精品国产精品乱码不99按摩 | 日韩久久视频 | 影音先锋人妻啪啪av资源网站 | 免费看黄色小视频 | 日韩在线观看免费网站 | 亚洲色图第一区 | 色婷综合| 91精品人妻一区二区三区蜜桃欧美 | 日韩在线视屏 | 欧美日韩在线免费播放 | av毛片在线免费看 | 毛片链接| 米奇影视第四色 | 国产色区| 亚洲av无码乱码国产精品fc2 | 欧美日韩在线视频免费 | 国产不卡视频 | 亚洲久热 | 欧美日韩亚洲第一 | 国产精品一区二区三区四区视频 | 激情丁香 | 欧美日韩国产第一页 | sese国产| 国产一区二区在线精品 | 自拍偷拍2019 | 免费观看a级片 | 国产美女无遮挡永久免费观看 | 亚洲乱码国产乱码精品精软件 | 国产精品815.cc红桃 | 在线日韩国产 | 亚洲精品丝袜 | 国内黄色一级片 | 国产91精品欧美 | 国产女人18毛片水18精品 | 波多野结衣不卡视频 | av大帝在线 | 日本免费色 | 欧美另类精品xxxx孕妇 | 麻豆一区二区在线观看 | 黄网站免费看 | 国产精品3 | 秋霞网一区二区 | 欧美夫妻性生活视频 | 亚洲国产成人精品激情在线 | 欧美日韩资源 | 久久精品免费在线观看 | 国产黄色av | 黄色在线观看国产 | 一级视频黄色 | 黄色网占 | 爱情岛论坛永久入址测速 | 色天堂在线视频 | 朝桐光一区二区三区 | 日日天天干 | 日韩中文字幕亚洲精品欧美 | www.色悠悠 | 日本伊人影院 | 欧美色欧美色 | 人妻精品无码一区二区三区 | 91喷水视频 | 美女免费毛片 | 亚洲AV成人无码电影在线观看 | 少妇做爰免费理伦电影 | 少妇性l交大片免潘金莲 | 黄色av网址大全 | 少妇被躁爽到高潮无码人狍大战 | 亚洲成人xxx | 91免费大片 |