DS tai "Nghien CU'U thU' vi~n dB hQa nguBn mo' AGG va vi~t u'ngdl}ng bien t~p thU' vi~n quan ly cac m~u duo'ng, m~u to va cac bi~u tU'Q'ngtrong ban dB" rna nh6rn th\IC hi~n chQn nghien C
Trang 1I
BO GIAO DUC vA DAo TAO
KHOAC6NGNGHtTH6NGTm
I
r
NGHIEN CUU THU VIEN DO HOA NGUON
.
p
SINH VIEN THVC HltN: PHAN THANH TUNG - 0311267
DUONG HOA PHONG - 0311204
Trang 2Ml)C Ll)C
G I01THI~U 5
1.1 Tang quan v~ cac thO' vi~n d6 hQa (Graphic Library) 7
1.3 MQt s8 u'ng dl}.ng Clla AGG trong thl}.'ct~ 12
Ung dl}.ng ch~y tren PDA cua cong ty Dolsoft Inc 17
1.6.2 Mau (Color), khong gian mau (Color Space) va dinh d~ng
Trang 31.6.3 Boon vi h~ tQa dQ (Coordinate Units) 28
2.1 NQi suy mau doon gian (Simple Color Interpolation) 37
2.2 Phep bi~n d&i phBi canh vo'i anh (Image Parallelogram
Transformations Using Perspective Transformations) 37
Trang 4NQi suy vo'i dU'O'ngcong Bezier (Bezier curve) 41
5.1 BCGControlBar Library (v 9.51) Professional Edition 58
Trang 5Hi~n nay co r~t nhiSu thu vi~n d6 h9a ma chung ta co th~ suodVng £)~utien phai k~ dSn la Macromedia Flash, Adobe SVG , chung r~t t6t nhung chi
la u'ng dVng nguo'i dung cu6i (end-user) va khong th~ suod\mg lam thu vi~ntrong C++ M9t s6 thu vi~n ph6 biSn khac nhu OpenGL, Apple Quartz, GDI+thi ch~t luqng d6 h9a 2D l<;tikem, ch?m va d?c bi~t chi dung tren m9t s6 n~n(platform) nh~t dinh (GDI+ chi dung tren nSn Windows va Quartz chi dungtren may Apple) Cac thu vi~n ngu6n ma (open source library) khac nhuLibAli, Cairo Graphics cung can qua nhiSu gi6i h<;tnva khong th~ su dVngtrong th\fc tS
V~n d~ chung cua cac thu vi~n la qua h<;tnch~ Chung 1am9t "h9P den"(ngay ca thu vi~n ma ngu6n ma), nghla la chung ta khong th~ thay d6i nhungthu vi~n nay theo y chung ta duqc V~n dS nu'a la chi phi ban quy~n qua cao
Trang 6Gi6i thi~u Trang 6
Vi~c Vi~t Narn gia nh?p WTO la da: ch~p nh?n hQi nh?p sau rQng toan di~nvao qua trinh phat trien toan c~u va duang nhien phai ch~p nh?n cac quy dinhnghiern ng~t cua san chai rnai nay, trong d6 c6 quy dinh vS ban quySn Vi V?y
chi phi ban quySn qua cao se la tra ng~i Ian trong vi~c ap dl,mg cac thu vi~n
tren
DS tai "Nghien CU'U thU' vi~n dB hQa nguBn mo' AGG va vi~t u'ngdl}ng bien t~p thU' vi~n quan ly cac m~u duo'ng, m~u to va cac bi~u tU'Q'ngtrong ban dB" rna nh6rn th\IC hi~n chQn nghien Cll'llhy vQng se rna ra mQthuang phat trien cho nhung chuang trinh ung dl,mg c~n db hQa ch~t luqngcao, t6c dQ nhanh va chi phi th~p,
Chung em xin gu'i 1ai cam an d~n Truang DHDL Ngo~i ngfi' - Tin hQcTP.HCM, Khoa CNTT, Th~y Co d~c bi~t 1a Th~y Nguy~n Minh Nam da: t?ntinh giup dO', dQng vien chung em trong su6t thai gian hQCt?P, nghien Cll'llvathl,fc hi~n dS tai nay
Nh6rn thl,fc hi~n
Trang 7Chuang 1 - T6ng quan v~ AGG
CHUaNG 1
1.1 TAng quan v~ cac thu vi~n dB hQa (Graphic Library)
Trang 7
Cac cong C\l render 2D s~n co nhu Macrornedia Flash, Adobe SVG chi 1£\ ung d\lllg nguai dung cu6i (end-user application) va khong th~ su dVnglam thu vi~n trong C++
Cac thu vi~n duqc dung ph6 bi~n nh~t hi~n nay la OpenGL, AppleQuartz va GDI+ OpenGL la mQt thu vi~n chu~n va t6t nhung ch~t luqng d6h9a 2D thi kem Alex Eddy da thl,Ic hi~n rnQt cUQc nghien cu.u chi r5 vi~c
(http://homepage.mac.com/arekkusu/bugs/invariancel).GDI+ thi render ch~tluqng kern, ch?m va con nhiSu 16i d~ co th~ su dVng trong thl,l'ct~, chua k~d~n vi~c chi dung duqc tren nSn Microsoft Windows Apple Quartz co ch~tluqng t6t nh~t nhung chi dung duqc tren may Apple Hai thu vi~n d6 h9angu6n ma khac la LibAli cila Raph Levien (http://www.levien.com/libartl) va
Cairo Graphics (http://cairographics.orgl).Vi~c phcit tri~n LibArt g~n day da
bi ngung, con Cairo Graphics vfrn con nhiSu h:;lnch~ nen khong th~ ap dVngtrong thv'c t~ Cairo Graphics vfrn dang trong qua trinh phat tri~n tich Cl,l'Cvathl,l'CSl,l'dang gia nhung gi6'i h:;lnchinh Clla no la rna hinh render "hardcoded".MQt thu vi~n rfrt t6t khac la IrnageMagick (http://www.imagemagick.orgl)
nhung chu'c nang chil y~u la xu I:>" imh
Trang 8Chuang 1 - T6ng quan v~ AGG Trang 8
V~n dS chung cua cac thu vi~n va cong C\l d6 h9a s~n co la chung quah:;mch~ Chung chi la nhfrng "hQp den" (ngay ca v6i thu vi~n ma ngu6n mer)
VS mi;itly thuy~t, chung ta co thS chinh sua thu vi~n ngu6n mo- theo cach machung ta mu6n (n~u khong xet d~n v~n dS ban quySn) Nhung khi chung tasua thu vi~n la chung ta da t?O ra mQt phien ban khac cua no va duang nhienphai c~n th~n dua nhfrng thay d6i do vao cac phien ban m6i han sau nay cuatac gia Va diSu nay la mQt can ac mQng MQt thu vi~n co tinh "mer" th~t svkhi chung ta co thS mo- rQng cac tinh nang cua no ma khong c~n phai chinhsua trong ma ngu6n (code) C++ cho phep chung ta lam diSu nay v6itemplate Day chinh la Co' ch~ dugc su d\mg xuyen su6t trong AGG giup t?Onen tinh linh dQng ciia thu vi~n nay
1.2 Cae d~e di~m ehinh ella AGG
Anti-Grain Geometry (AGG) la thu vi~n d6 h9a 2D ma ngu6n mer miSnphi (free of charge graphic library) dugc vi~t theo chu~n C++ D6 h9a vector2D gio day dugc su d\lng rQng rai trong m9i lo?i ung d\lng va sU'Cm?nh cuacac bQ xu' ly hi~n t?i lam cho vi~c su dVng d6 h9a vector ch~t lugng cao (highquality vector graphic) r~t d~ dang Ch~t lugng cao co nghTa la nhiSu mucanti-aliasing (ch6ng rang cua) va subpixel accuracy Subpixel accuracythuong bi danh gia th~p nhung no r~t quan tr9ng trong vi~c dinh vi subpixel(subpixel positioning) No cling quan tr9ng trong vi~c thi~t l~p dQ rQng duo'ngth~ng theo phan s6 nghTa la co thS nho han 1 pixel Render anti-aliasing trongthvc t~ se trer nen vo dVng n~u khong co subpixel accuracy
Co thS chung ta nghT AGG la thu vi~n render t?O anh raster trong bQnh6 tu cac ph~n vector (vectorial representation) Nhung dinh nghTa nay chig~n dung MQt cach t6ng quat, chung ta co thS su dVng b~t ky thanh ph~n naocua AGG, khong b~t bUQcla rasterizer hay renderer
Trang 9Chuang 1 - TAngquan v~AGG Trang 9
AGG cO th8 sit d\ll1g trong nhi~u img d\ll1g cfut d6 hoa 2D chAt lU(IDgcao va nhanh No co th~ duQ'Csit d\ll1g trong cac img d\ll1g GIS/cartography(h~ th6ng thong tin dia ly/bcin d6) ma cfut giao di~n d6 hoa ngum dimg hApdfut, cac lo~ d6 thi va bi~u d6 khac nhau, CAD/CAM AGG doc l~p n~n(platform independent), gon nhe va m~ me AGG ciing cO th~ dimg motcach hoan hao trong cac h~ th6ng nhOOg (embedded system) va thi~t bi didong (mobile device)
Hinh 1.1 - Ve dep d6 hoa cua AGG
Dum day la cac y tuemg va tri~t ly CllaAGG :
• Khit fang cua (Anti-Aliasing)
Trang 10Chuang 1 - T6ng quan v~ AGG
• DQ chinh xac subpixel (Subpixel Accuracy)
Trang 10
• Ch~t lugng, hi~u su~t cao nh~t co thS d?t dugc, dQc l~.pn~n (platformindependence) va co kha nang tuang thich
• Linh dQng va co thSma rQng
• Thiet ke g9n nhy (lightweight design), 6n dinh va dang tin c~y
Cac d?c diSm chinh cua AGG :
• T?o da giac (polygon rasterizer) nhanh va ch~t lugng cao vai 256 mircAnti-Aliasing (ch6ng rang cua) Co thS slr d\mg 2 quy t~c to non-zero
va even-odd
• Vector tuy bien va raster pipeline
• Cac gradient b~t k5' va d6 bong Gouraud (Gouraud shading)
• Cac phep bien d6i affine anh vai cac lo?i nQi suy khac nhau tu' muc dangian bilinear den muc cao han nhu bicubic, spline 16, spline36, sinc,Lancosz va Blackman
• M~u t6 (pattern fill) vai cac phep bien d6i affine b~t k5' va phep biend6i ph6i canh (perspective transformation)
• Phep bien d6i ph6i canh va bilinear cua vector va dfr li~u anh
• Stroke generator vai cac line join (ph~n ket n6i do?n th~ng) va line cap(d~u do?n th~ng) khac nhau
• T?o duang th~ng d?ng dash (Dash line generator)
• Marker nhu d~u va du6i mUi ten (arrowhead/ arrow tail)
Trang 11Chuang 1 - T6ng quan v~ AGG
• Xen da giac d?ng vector thanh hinh chi1'nh~t nhanh
Trang 11
• Xen mll'c th~p (low-level) thanh nhi~u vung hinh chli' nh~t (multiplerectangular regions)
• Alpha-masking
• Thu~t toan ve QUang th~ng ch6ng rang cua nhanh
• T?o m~u QUang th~ng (line pattern) v6'i hinh anh b~t kyo
• Render tren nhli'ng kenh mau rieng bi~t
• Th\l'c hi~n cac phep toan boolean Qa giac (Boolean polygon operations and, or, xor, sub) dl,ra tren thu~t toan xen Qa giac cua Alan Murta(General Polygon Clipper)
-• Th\l'c hi~n cac phep toan boolean d\l'a tren dong quet v6'i t6c QQnhanhhan 5-1 0 l~n so v6'i thu~t toan tren
• H6 tr9' text suodVng thu vi~n FreeType (http://www.jreetype.orgl) vaWindows API (GetGlyphOutlineO)
• Cac phep biSn Q6i phi tuySn tinh b~t ky (Arbitrary non-lineartransformations )
Thu vi~n nay QU9'Cbien dich va ki€m tra thanh cong tren cac n~n :
• Microsoft Windows (95, 98, NT4, 2000, XP, 2003) Trinh bien dichMicrosoft Visual C++ v5, v6, v7, Intel C++ v6, GNU C++ tu' v2.96 dSnv3.4.0
• Linux, GNU C++
• SunOS
Trang 12Chuang 1 - T6ng quan v~ AGG
SVG (Scalable Vector Graphics - 86 h9a XML dimh cho Web) la ngan
(coverage) cua outline tren m6i a pixel (pixel cell) Ngoai ra trinh xem c6 mQtd?c di~m r~t t6t rna khang c6 0 b~t cli trinh xem khac 86 la lo~i b6 "v~n dScac c~nh kS nhau" ("problem of adjacent edges") N6 xu~t hi~n khi render
m6ng tren anh N6i dung ra, c6 th~ lo~i b6 hoan toan v~n dS nay khi cac dagiac hoan toan khang trong su6t Tuy nhien, c6 th~ giiun hi~u ling d6 d~ h~uh~t chung khang xu~t hi~n
Trong trinh xem SVG AGG cho chung ta diSu khi~n v~n dS nay b~ngcach thay d6i anti-aliasing gamma va dQ gian no Clla cac da giac Anti-GrainGeometry cung c~p mQt cang C\l dp-n gian d~ gian no hay co cac da giac l~i
Trang 14Chuang 1 - T6ng quan v~ AGG Trang 14
Hinh 1.4 - Hinh T6ng th6ng Bill Clinton theo djOOd<mgSVG dU(fcrender
bfutgAGG
1.3.2 Creative Docs.Net
Day hi oong Cl,1 thi~t k~ dd hoa d\la tren vector (dimg tha vien AGG d~ve) dimg d~ OOanh chong t~o ra tai lieu (document), sach (manual), poster,hiOO minh hoa (illustration), set dd (schema), sa dd k~ ho~ch (plan), dd thj(flow chart)
Trang 15h ~ .1.
*'C,callVC Doc> NO ~@}~
Hinh 1.5 - Giao dien chinh cua Creative Docs.NET (sir d\lllg AGG lam thu
vien d6 hQa)
1.3.3 KSVG
KSVG 1(\ hi~n th\lc cho ~c fa SVG cua W3C (World
Wide Web Consortium), du(]c thi~t k~1(\ plugin cho trinh duy~t
web Konqueror d~ hi~ tbi cac 3nh SVG KSVG sir d\lllg AGG la co ch~render chinh Va khi KSVG la mot phfut cua KDE thi nghia 1(\AGG da du(]cdua VaGtAt ca cac ban Linux k~til KDE mm
1.3.4 Trang web ban d3cua cong ty Dolsoft
Trang 16Chuang 1 - TAngquan v~AGG Trang 16
Fo Eell "- f_ loch ~
Hinh 1.6 - Trang ban d6 Clla cang ty Dolsoft sir dWlg thu vi~n d6 hQa AGG
RealWorld Graphics hi trinh bien tw d6 hQa hi~n h6 trQ' cac rna hinh3D (3D model), anh raster (raster image), va Windows icon AGG duQ'c dimgd~ ve cac hinh tron muO'! (smooth) va thuc hi~n cac phep bi~n d6i anh ho~ccac hi~u ll'ng ~c bi~t
Trang 17Chucmg 1 - TAng quan v~ AGG
Hinh 1.7 - Giao di~n ehinh eua RealWorld Icon Editor
1.3.6. irng dt}ng chtly tren PDA cua cong ty Dolsoft Inc
Hinh 1.8 - Ung d\Ulg sir d\lIlg AGG tren PDA eua Dolsoft
Trang 17
Trang 18ChuO'ng 1 - T6ng quan v~ AGG
1.4 Su'cm~nh cua template trong C++
Trang 18
cho phep t6i uu code d~ co thi~t k~ linh dQng va thu?n 19i Cac lap da hinh chi
lam vi~c t6t a mtrc chi ti~t MQt tac V\1co ban trong db h9a vector la chuy~n
phep bi~n d6i affine Trong h~u h~t cac thu vi~n pipeline dugc "hardcoded"
m6i ph~n tll' pipeline
MQt phuong phap ti~p c?n khac la da hinh "tinh" ("static"
chung ta tr\1'c ti~p xay d\1'ng pipeline dQng luc ch~y (runtime) nhung trong h~uh~t truang hgp, chung ta khong th\1'c S\1'c~n no Con n~u th\1'c S\1'c~n da hinh
khi~n toan bQ chuc nang va hi~u su~t Chung ta co th~ chi slr d\1ng mQt ph~n
gian mau khac nhau, cac ham gradient, span generator S\1' cai d?t d\1'a trenlap da hinh truy~n th6ng se lam chung ta t6n cac lo'i g9i ham ao m6i pixel,
Trang 19Chuang 1- T6ng quan v8 AGG
Trang 19
Chimg ta thie th\lC hi~n mQt cUQcthie nghi~m d~ so sanh hi~u nang giitaAGG va GDI+ Chi ti~t cUQcthie nghi~m nhu bang sau :
Pen(255,q,q,q, Pen(255,q,0,0 Pen(255,0,q,0 Pen(255,0,0,q
Brush(64,q,q, Brush( 64,q,0, Brush(64,0,q, Brush( 64,0,0,
255,q,q,q 255,q,0,0 255,0,q,0 255,0,0,q
128,255,255,255/1
128,255,255,255/1
LinearGradientBrush «255,255,0,0) & (255,0,255,0))
TextureBrush (Th\lc hi~n phep bi~n dAi tYl~ (0.9,0.7), phep
xoay, to hinh chit nh~t (1000, 450))
SolidBrush (255,255,255,255)
Trang 20Chuang 1- T6ng quanV~ AGG Trang 20
Chimg ta th\l'c hi~n ve 255 IAn, mBi IAn 4 lo~ pen/brush khac nhau.Nhu v~ym6i ki~u thit co 1020 hinh (trir pattern & string) Chimg ta th\l'c hi~ndU(Jck~t qua nhu sau :
155564
AGG(ms)GDI+(ms)
Rectangle Rectangle
DrawBezier
Path Add
Rectangle
Trang 21Chuang 1- T6ng quan v~ AGG Trang 21
AGG(ms)GDI+(ms)
Bi~u da tren (fa th~ hi~n tuong d6i t6c dO ella AGG Do phfuI text AGGsir d\lDg ham I~y duimg vian GetGlyphOutlineQ nen eh~ hon hin so vmGDI+
1.6.1 Anti-Aliasing va Subpixel Accuracy
Khir rang eua (anti-aliasing) la mot kY thuat tit nBi tiang dUQ'edimg d~phat tri~n eh~t Im;mg tnre quan eua aM khi hi~n thi ehimg tren cae thiat bi cO
do phan giai th~ No ph\l thuQc vao khil nang nhin eua con ngum (the humanvision) Hay nhin bire aM sau day va doan xem co y nghia gi
Hinh 1.9 - Anh phong 100 chit "stereo"
Trang 22Chuang 1 - T6ng quan V~ AGG Trang 22
Trang 23Chuang 1 - T6ng quan v~ AGG Trang 23
Hay quan sat trlrOng h<.JP(2) va (3) DuOng thfutg mau den m6ng lanhfrng gi chung ta cful noi suy N8u sir d\lng Subpixel Accuracy, chung ta sethat S\l co 2 tap pixel hi~n thj khac nhau cho diI th\lc t8 di~m dAuva di~m cuAicua dUOng thfutg rro vao ciIng mot pixel Va nhfrng dUOng thfutg nay th\lc S\l
co nhfrng dUOng ti8p tuy8n khac rna r~t quan trong N8u chUng ta sir d\mgBresenham kinh di~n rna khong quan tam d8n Subpixel Accuracy, chUng ta seth~y k8t qua (1) trong t~t ca trlrOng h<.JP.Di~u nay d~c bi~ quan trong d~ x~p
xi dUOng cong thanh nhfrng doan thfutg ng~ Nhung n8u sir d\ll1g aliasing (chAng rang cua) cong vm subpixel accuracy, chung ta du(Yck8t quatAt hon nhi~u
anti-Hinh 1.11 - DuOng xo~ Ac
dday co 3 duemg xo~ Ac du(,1cxftp xi tit nhfrng doan thfutg ng~ lien
ti8p nhau DuOng ben trai sir d\ll1gBresenham sAnguyen thong thuOng khi h~toa do du(Yclam trem d8n pixels (chUng ta se co k8t qua luong W n8u sir d\lngWindows GDI vi d\l nhu MoveTo/LineTo) DuOng iJ gifra sir d\lOg
Bresenham sA nguyen co chinh sira vm do chinh xac 1/256 pixel Con dUOngben phai sir d\ll1g ciIng do chinh xac 1/256 nhung cO them khir rang cua Ghinh& rfutg r~t quan trong d~ co kha nang xac dinh vi tri subpixel th\lc S\l cuacac phful doan thfutg N8u chUng ta sir d\ll1g h~ toa do pixel thong thuOng vmkhir rang cua, duemg xo~ Ac mu(,1fhon nhung vfut con x~u xi giAng nhudUOngxo~ &ben trai
Trang 24Chuang 1 - T6ng quan v~ AGG Trang 24
Subpixel Accuracy th?m chi con quan tr9ng han dS di~u khiSn dQ daytr\fc quan cua duang thing Di~u nay chi co thS n~u chung ta co thu?t toclnkhl'l"rang cua t6t Anti-Aliasing va Subpixel Accuracy luon lam vi~c chungv6'i nhau HiSn thi hi~n nay (modem display) co dQ phan giai it nh~t 120 dpi,trong khi Subpixel Accuracy th\fc S\f len d~n 300 dpi Anh sau thS hi~n duangthing v6'i dQrQng b~t d~u tir 0,3 pixels va tang d~n 0,3 pixel
Trang 25Chuang 1 - TAngquan v~AGG Trang 25
Hinh 1.14 - Cae chit su tilxinh x~
Hinh 1.15 -ChAt lUQ1lgrender gifraGDI+ va AGG
Trang 26Chuang 1 - TAngquan v~AGG Trang 26
Hinh 1.16 - ChAt lUQ'Ilgrender gifra AGG va Xara X
1.6.2 Mau (Color), khong gian mau (Color Space) va dinb d~ng di~m
anb (Pixel Formats)
Mau trong AGG chi xuftt hi~n (y renderer, do la khi chimg ta dua dfrli~u vao vimg d~m khung (rendering buffer) Khong co cftu trUc hay lOp t6ngquat nao gi6ng nhu "color", thay vao do AGG luon lam vi~c vm khong gianmau (color space) Cl,lthS Co nhiSu khong gian mau tren th~ gim nhu RGB,HSV, CMYK va tftt ca chUng dSu co gim ht;m Vi dl,lnhu khong gian mauRGB chi la t~p mau nh6 cua t~ mau rna mAt ngu01 co thS nhin thfty duQ'c
(http://www.efg2.com/Lab/Graphics/Colors/Chromaticify.htm).thichUng tanh~ thfty RGB chi la mot phfuI nh6 cua no
Trang 27Chuang 1- T6ng quan v~ AGG Trang 27
Hinh 1.17 - cm Chromaticity DiagramNoi cach khac co rAtnhiSu mim trong thS giro th\fc khong duQ'c thS hi~nduQ'c vro RGB, CMYK, HSV BAt kY khong gian mim mio ngo~ trir khonggian mau t\f nluen dSu co giro h?ll Vi v~y, viec khong co d6i tm;mg gi6ngnhu "color" la dS khong giro h?ll kha nang phat triSn Thay vao do la cac d6ituQ'llg lam vi~c vro khong gian mau Cl,l thS Hi~n t~ co agg: :rgba vaagg: :rgba8 lam viec vro khong gian mau ph6 biSn RGB (chinh xac la RGBcong them kenh trong su6t alpha) Khong gian mau RGB lam viec vro cacdjnh c4mg diSm anh (pixel format) khac nhau nhu RGB 24 bit ho~c RGBA 32bit vro thir t\f khac ~u (ban chAt chung cua chung vfuI la
~
Trang 28
<-Chuang 1 - T6ng guan v~ AGG Trang 28
RGB) Tuy nhien AGG khong h6 trg them khong gian mau nao khac nhungchung ta co th~ them cac khong gian mau khac thong qua 06i s6 template
"ColorT"
1.6.3 Do"nvi h~ t<,>ad{) (Coordinate Units)
V~ cO' b~mAGG ho~t 09ng vai h~ t9a 09 cua thi~t bi k~t xu~t, tren manhinh cua chung ta chinh la cac pixel Nhung khong gi6ng nhu cac thu vi~nkhac, AGG h6 trg Subpixel Accuracy ngay ttr luc o~u Nghia la h~ t9a d9 codan vi la double, gia tri phan s6 se co tac dVng AGG khong co cO'ch~ chuy~n06i nhung chuy~n t1r h~ t9a d9 th~ giai th\l'c sang h~ t9a d9 man hinh o~khong giai h~n S\l'mer r9ng Di~u quan tr9ng la eroau va khi nao chung ta th\l'chi~n chuy~n 06i Cac ung dVng khac nhau co th~ ooi hoi cac phuang phap ti~pc?n khac nhau AGG chi cung c~p b9 chuy~n d6i chuy~n tir viewport sangthi~t bi (device) Va trach nhi~m cua chung ta la include chung vao pipelinem9t cach thich hgp Chung ta co th~ vi~t lop oan gian cho phep chung ta ho~td9ng vai millimeters, inches ho?c cac dan vi V?t ly khac
Ben trong, rasterizer su dVng h~ t9a 09 s6 nguyen (integer) theo oinhd~ng 24.8 bit, 24 bit cho ph~n s6 nguyen va 8 bit cho ph~n th?p phan N~uchung ta mu6n slr dVng AGG trong cac h~ th6ng nhung ma xu ly s6 d~u ch~md9ng khong hi~u qua, chung ta v~n co th~ slr d\mg rasterizer vai giao di~n(interface) s6 nguyen Tuy nhien trong truang hgp nay chung ta khong th~ slrdVng pipeline h~ t9a 09 s6 thv'c
1.6.4 Scanline Container
Renderer mtrc th~p ho~t 09ng vai du' li~u oan gian nh~t va chung clingrfrt dan gian Trong th\l'Ct~, pixel format renderer khong phai la ph~n b~t bU9CCllathu vi~n va co th~ thay th~ ho?c vi~t I~i
Trang 29Chuang 1 - T6ng quan v~ AGG Trang 29
D~ ve cac d6i tm;mg co So' ch6ng rang cua (anti-aliased) nen rasterizechung truac Ky thu?t rasterize chinh trang AGG dVa tren dong quet(scanline) Do hi da giac duQ'c chuy~n thanh mQt s6 dong quet ngang va sau
do cac dong quet nay duQ'c render l~n luqt Tuy nhien scanline rasterizerkhong phai la lap duy nh~t co th~ t?O ra scanline
D~ chuy~n thong t'in til rasterizer d~n scanline renderer c~n phai dungscanline container MQt scanline bao g6m cac span ngang khong giao nhau.T~t ca cac span phai duQ'c s~p x~p theo chi~u X NghTa la thao thac s~p x~pkhong duQ'c cung c~p, thu' tv phai duQ'c duy tri khi them (add) span vaoscanline N~u thli tv khong duQ'c dam bao thi co th~ t?O ra k~t qua khongluang truac duQ'c
Trang AGG co 3 lo?i scanline container:
• scanline _u - scanline container unpacked
• scanline-p -scanline container packed
• scanline _bin - scanlines binary, "aliased"
Hai scanline d~u co mang thong tin ch6ng rang cua (Anti-Aliasing),scanline cu6i thi khong co
T~t ca cac scanline container duQ'ct6i uu v~ t6c dQ, nhung khong t6i uuv~ vi~c slr dVng bQnha. Thvc t~ trong truang hqp x~u nh~t vi~c c~p phat bQnha se gay l6i Se khong sao n~u chung ta chi Slr dVng it scanline container,nhung khong phai la y ki~n hay d~ Slr dVng mQt mang cac scanline d~ luu trli'r9n v~n ml)t hinh bai vi no se t6n nhi~u bl) nha han hinh anh k~t qua
Sv khac nhau gifi'a packed va unpacked scanline container la unpackedscanline luon luu gili' gia tri bao phu (coverage value) cua t~t ca cac pixel
Trang 30Chuang 1 - T6ng quan v~ AGG Trang 30
Con trong packed scanline t~t ca cac pixel c6 cung gia tri bao phu (duqc k~thqp vai solid span)
scanlinc_u (unpacked)
-1:
Hinh 1.18 - Scanline va span
C6 ve nhu suod\lllg packed scanline t6t hO'n nhung trong th\l'c t~ thikh6ng h~n vcfty,scanline-p lam vi~c nhanh hO'nkhi render cac da giac lan, d6
la khi vung da giac Ian hO'nchu vi nghla la s6 pixel Nhung khi render text t6tnh~t la SlI dVng scanline _ u boi vi c6 it span duqc XlI ly Sv khac bi~t d~n bal~n va s6 span cung quan tr9ng d6i vai hi~u su~t Ngoai ra trong h~u h~t spangenerator nhu gradient, d6 b6ng Gouraud, cac phep bi~n d6i anh, scanline-pkh6ng duqc dung