%!PS-Adobe-2.0 %%Creator: dvipsk 5.55a Copyright 1986, 1994 Radical Eye Software %%Title: glspec.dvi %%Pages: 194 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: whaeberli %%EndComments %DVIPSCommandLine: dvips glspec %DVIPSParameters: dpi=300, compressed, comments removed %DVIPSSource: TeX output 1997.03.28:0103 %%BeginProcSet: texc.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginFont: whaeberli /F_whaeberli 10 dict def F_whaeberli begin /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [0 -319 777 703] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 32 /space put Encoding 33 /exclam put Encoding 34 /quotedbl put Encoding 35 /numbersign put Encoding 36 /dollar put Encoding 37 /percent put Encoding 38 /ampersand put Encoding 39 /quoteright put Encoding 40 /parenleft put Encoding 41 /parenright put Encoding 42 /asterisk put Encoding 43 /plus put Encoding 44 /comma put Encoding 45 /hyphen put Encoding 46 /period put Encoding 47 /slash put Encoding 48 /zero put Encoding 49 /one put Encoding 50 /two put Encoding 51 /three put Encoding 52 /four put Encoding 53 /five put Encoding 54 /six put Encoding 55 /seven put Encoding 56 /eight put Encoding 57 /nine put Encoding 58 /colon put Encoding 59 /semicolon put Encoding 60 /less put Encoding 61 /equal put Encoding 62 /greater put Encoding 63 /question put Encoding 64 /at put Encoding 65 /A put Encoding 66 /B put Encoding 67 /C put Encoding 68 /D put Encoding 69 /E put Encoding 70 /F put Encoding 71 /G put Encoding 72 /H put Encoding 73 /I put Encoding 74 /J put Encoding 75 /K put Encoding 76 /L put Encoding 77 /M put Encoding 78 /N put Encoding 79 /O put Encoding 80 /P put Encoding 81 /Q put Encoding 82 /R put Encoding 83 /S put Encoding 84 /T put Encoding 85 /U put Encoding 86 /V put Encoding 87 /W put Encoding 88 /X put Encoding 89 /Y put Encoding 90 /Z put Encoding 91 /bracketleft put Encoding 92 /backslash put Encoding 93 /bracketright put Encoding 94 /asciicircum put Encoding 95 /underscore put Encoding 96 /quoteleft put Encoding 97 /a put Encoding 98 /b put Encoding 99 /c put Encoding 100 /d put Encoding 101 /e put Encoding 102 /f put Encoding 103 /g put Encoding 104 /h put Encoding 105 /i put Encoding 106 /j put Encoding 107 /k put Encoding 108 /l put Encoding 109 /m put Encoding 110 /n put Encoding 111 /o put Encoding 112 /p put Encoding 113 /q put Encoding 114 /r put Encoding 115 /s put Encoding 116 /t put Encoding 117 /u put Encoding 118 /v put Encoding 119 /w put Encoding 120 /x put Encoding 121 /y put Encoding 122 /z put Encoding 123 /braceleft put Encoding 124 /bar put Encoding 125 /braceright put Encoding 126 /asciitilde put /CharProcs 96 dict def CharProcs begin /.notdef {} def /space { 600 0 0 0 600 800 setcachedevice } def /exclam { 259 0 69 -14 321 624 setcachedevice newpath 111 -14 moveto 156 13 lineto 157 79 lineto 105 101 lineto 69 48 lineto 75 12 lineto closepath 147 143 moveto 180 170 lineto 321 611 lineto 287 624 lineto 251 570 lineto 124 158 lineto closepath fill } def /quotedbl { 304 0 161 483 377 681 setcachedevice newpath 189 483 moveto 221 512 lineto 245 666 lineto 222 681 lineto 190 653 lineto 161 507 lineto closepath 280 493 moveto 319 546 lineto 377 665 lineto 355 681 lineto 320 657 lineto 250 509 lineto closepath fill } def /numbersign { 515 0 103 70 533 587 setcachedevice newpath 263 70 moveto 300 92 lineto 376 215 lineto 382 224 lineto 465 239 lineto 474 277 lineto 427 286 lineto 419 289 lineto 425 300 lineto 451 349 lineto 458 356 lineto 468 358 lineto 529 370 lineto 533 407 lineto 495 414 lineto 488 416 lineto 491 425 lineto 533 536 lineto 514 554 lineto 479 532 lineto 425 412 lineto 416 407 lineto 385 404 lineto 375 402 lineto 370 409 lineto 428 570 lineto 397 587 lineto 366 544 lineto 310 404 lineto 304 395 lineto 169 368 lineto 162 338 lineto 207 326 lineto 259 333 lineto 270 335 lineto 273 326 lineto 248 277 lineto 241 268 lineto 232 266 lineto 118 246 lineto 103 218 lineto 131 196 lineto 203 208 lineto 209 202 lineto 168 96 lineto 185 76 lineto 220 98 lineto 268 207 lineto 275 216 lineto 284 217 lineto 306 221 lineto 316 219 lineto 316 211 lineto 246 98 lineto closepath 311 287 moveto 337 338 lineto 347 342 lineto 380 347 lineto 389 345 lineto 383 335 lineto 356 286 lineto 347 277 lineto 315 275 lineto 305 277 lineto closepath fill } def /dollar { 552 0 103 -28 562 625 setcachedevice newpath 181 -28 moveto 219 -16 lineto 270 90 lineto 276 100 lineto 286 101 lineto 328 104 lineto 337 101 lineto 333 90 lineto 312 -8 lineto 336 -19 lineto 370 19 lineto 397 112 lineto 405 119 lineto 503 172 lineto 541 250 lineto 522 333 lineto 475 379 lineto 470 386 lineto 493 500 lineto 496 510 lineto 506 513 lineto 555 523 lineto 562 560 lineto 513 569 lineto 503 566 lineto 502 575 lineto 500 625 lineto 462 625 lineto 443 565 lineto 440 555 lineto 431 550 lineto 421 546 lineto 410 541 lineto 405 547 lineto 394 583 lineto 356 573 lineto 346 522 lineto 343 512 lineto 287 456 lineto 290 409 lineto 313 393 lineto 319 386 lineto 246 171 lineto 237 165 lineto 159 218 lineto 128 237 lineto 103 216 lineto 111 181 lineto 193 119 lineto 210 112 lineto 218 107 lineto 214 97 lineto 171 -13 lineto closepath 298 158 moveto 301 168 lineto 364 351 lineto 367 361 lineto 377 365 lineto 402 352 lineto 403 344 lineto 355 167 lineto 349 160 lineto 307 156 lineto closepath 418 184 moveto 421 194 lineto 446 298 lineto 448 308 lineto 456 312 lineto 464 308 lineto 484 245 lineto 457 199 lineto 426 184 lineto closepath 405 418 moveto 396 421 lineto 387 425 lineto 386 435 lineto 392 469 lineto 394 479 lineto 405 485 lineto 426 493 lineto 432 490 lineto 430 479 lineto 420 425 lineto 414 414 lineto closepath fill } def /percent { 549 0 51 -96 613 643 setcachedevice newpath 60 -96 moveto 97 -81 lineto 613 623 lineto 585 643 lineto 523 578 lineto 51 -61 lineto closepath 378 63 moveto 461 86 lineto 517 142 lineto 516 192 lineto 512 200 lineto 504 204 lineto 512 214 lineto 512 250 lineto 462 244 lineto 372 173 lineto 338 107 lineto 360 68 lineto closepath 398 122 moveto 404 131 lineto 435 165 lineto 444 172 lineto 453 171 lineto 459 164 lineto 462 156 lineto 455 145 lineto 406 119 lineto closepath 208 333 moveto 292 351 lineto 346 407 lineto 340 465 lineto 336 472 lineto 343 479 lineto 359 515 lineto 307 537 lineto 215 509 lineto 149 446 lineto 137 386 lineto 180 340 lineto closepath 215 393 moveto 194 409 lineto 224 455 lineto 254 472 lineto 265 474 lineto 268 469 lineto 281 435 lineto 289 430 lineto 292 421 lineto 287 412 lineto 225 389 lineto closepath fill } def /ampersand { 521 0 75 2 465 570 setcachedevice newpath 444 2 moveto 454 4 lineto 463 13 lineto 465 50 lineto 365 150 lineto 364 158 lineto 391 203 lineto 372 223 lineto 342 209 lineto 335 201 lineto 327 203 lineto 295 284 lineto 294 293 lineto 408 433 lineto 433 526 lineto 402 570 lineto 343 565 lineto 270 495 lineto 228 384 lineto 224 296 lineto 105 158 lineto 75 78 lineto 92 34 lineto 157 17 lineto 259 61 lineto 305 96 lineto 312 104 lineto 321 101 lineto 434 2 lineto closepath 134 90 moveto 182 178 lineto 238 237 lineto 248 240 lineto 251 231 lineto 283 160 lineto 288 152 lineto 281 143 lineto 186 81 lineto 143 75 lineto 134 79 lineto closepath 286 377 moveto 316 469 lineto 363 518 lineto 372 518 lineto 375 508 lineto 344 428 lineto 300 374 lineto 294 365 lineto 285 367 lineto closepath fill } def /quoteright { 219 0 146 418 276 614 setcachedevice newpath 158 418 moveto 195 435 lineto 276 589 lineto 253 614 lineto 221 587 lineto 146 432 lineto closepath fill } def /parenleft { 293 0 99 -59 366 689 setcachedevice newpath 179 -59 moveto 209 -54 lineto 220 -17 lineto 164 79 lineto 161 229 lineto 222 444 lineto 309 597 lineto 366 666 lineto 353 689 lineto 314 675 lineto 215 552 lineto 126 333 lineto 99 136 lineto 127 4 lineto closepath fill } def /parenright { 321 0 117 -105 317 685 setcachedevice newpath 140 -105 moveto 180 -71 lineto 272 93 lineto 314 268 lineto 317 460 lineto 270 626 lineto 225 685 lineto 195 679 lineto 189 642 lineto 247 513 lineto 264 316 lineto 221 109 lineto 138 -45 lineto 117 -93 lineto closepath fill } def /asterisk { 416 0 117 208 436 513 setcachedevice newpath 173 208 moveto 217 238 lineto 239 264 lineto 246 266 lineto 249 256 lineto 279 209 lineto 316 224 lineto 315 261 lineto 296 305 lineto 292 314 lineto 302 319 lineto 426 361 lineto 436 400 lineto 398 404 lineto 346 386 lineto 334 384 lineto 337 393 lineto 395 499 lineto 363 513 lineto 276 397 lineto 270 388 lineto 262 386 lineto 258 395 lineto 228 465 lineto 189 455 lineto 193 398 lineto 207 361 lineto 211 354 lineto 206 347 lineto 123 317 lineto 117 289 lineto 151 275 lineto 172 282 lineto 183 286 lineto 187 280 lineto 179 273 lineto 154 225 lineto closepath fill } def /plus { 530 0 117 79 533 476 setcachedevice newpath 286 79 moveto 313 112 lineto 347 259 lineto 354 266 lineto 364 268 lineto 510 282 lineto 533 317 lineto 503 335 lineto 377 324 lineto 366 324 lineto 365 333 lineto 379 476 lineto 342 476 lineto 318 397 lineto 307 335 lineto 303 324 lineto 293 324 lineto 136 321 lineto 117 287 lineto 147 268 lineto 281 268 lineto 289 263 lineto 289 254 lineto 259 90 lineto closepath fill } def /comma { 247 0 43 -111 201 107 setcachedevice newpath 74 -108 moveto 140 -46 lineto 201 71 lineto 194 107 lineto 163 103 lineto 79 -41 lineto 43 -82 lineto 63 -111 lineto closepath fill } def /hyphen { 500 0 111 231 494 289 setcachedevice newpath 389 231 moveto 481 233 lineto 494 270 lineto 429 286 lineto 129 289 lineto 111 254 lineto 141 238 lineto closepath fill } def /period { 210 0 68 20 164 108 setcachedevice newpath 98 20 moveto 150 32 lineto 164 71 lineto 124 108 lineto 76 82 lineto 68 41 lineto closepath fill } def /slash { 512 0 51 -71 569 625 setcachedevice newpath 70 -71 moveto 115 -43 lineto 303 185 lineto 569 588 lineto 564 625 lineto 525 614 lineto 210 145 lineto 51 -43 lineto closepath fill } def /zero { 524 0 107 43 545 603 setcachedevice newpath 211 43 moveto 305 71 lineto 440 175 lineto 525 307 lineto 545 430 lineto 510 508 lineto 449 550 lineto 442 556 lineto 447 565 lineto 449 596 lineto 401 603 lineto 285 536 lineto 180 416 lineto 117 287 lineto 107 165 lineto 143 78 lineto 200 43 lineto closepath 213 104 moveto 169 160 lineto 173 282 lineto 237 411 lineto 351 522 lineto 380 540 lineto 388 537 lineto 403 505 lineto 465 463 lineto 488 381 lineto 447 270 lineto 349 162 lineto 253 104 lineto closepath fill } def /one { 194 0 62 -7 238 584 setcachedevice newpath 90 -4 moveto 118 25 lineto 223 448 lineto 238 572 lineto 214 584 lineto 184 558 lineto 93 133 lineto 62 10 lineto 71 -4 lineto 80 -7 lineto closepath fill } def /two { 505 0 142 -17 453 579 setcachedevice newpath 183 -17 moveto 442 8 lineto 453 45 lineto 397 54 lineto 231 43 lineto 222 45 lineto 223 54 lineto 418 391 lineto 453 513 lineto 424 569 lineto 337 579 lineto 213 541 lineto 157 486 lineto 165 460 lineto 203 469 lineto 301 518 lineto 392 518 lineto 383 449 lineto 255 203 lineto 142 14 lineto 164 -14 lineto closepath fill } def /three { 460 0 81 2 475 582 setcachedevice newpath 103 2 moveto 312 70 lineto 401 137 lineto 444 224 lineto 430 321 lineto 411 384 lineto 475 488 lineto 465 544 lineto 379 582 lineto 234 572 lineto 166 532 lineto 158 495 lineto 195 493 lineto 276 526 lineto 396 515 lineto 413 508 lineto 420 501 lineto 420 490 lineto 352 377 lineto 368 312 lineto 387 228 lineto 344 152 lineto 247 97 lineto 91 48 lineto 81 18 lineto closepath fill } def /four { 523 0 113 7 575 587 setcachedevice newpath 363 7 moveto 398 25 lineto 575 564 lineto 550 584 lineto 519 555 lineto 440 312 lineto 430 305 lineto 181 277 lineto 173 282 lineto 179 291 lineto 321 566 lineto 305 587 lineto 268 569 lineto 113 266 lineto 124 231 lineto 234 224 lineto 402 246 lineto 412 246 lineto 416 239 lineto 346 28 lineto 347 17 lineto 354 10 lineto closepath fill } def /five { 544 0 67 -12 602 606 setcachedevice newpath 152 -12 moveto 266 -4 lineto 375 48 lineto 442 136 lineto 452 228 lineto 406 298 lineto 276 356 lineto 216 363 lineto 206 363 lineto 206 372 lineto 263 544 lineto 273 549 lineto 583 555 lineto 602 592 lineto 597 600 lineto 497 606 lineto 209 601 lineto 197 564 lineto 203 527 lineto 140 324 lineto 180 303 lineto 271 296 lineto 373 246 lineto 398 185 lineto 362 107 lineto 288 57 lineto 173 41 lineto 93 71 lineto 67 39 lineto 115 -2 lineto closepath fill } def /six { 406 0 100 39 396 620 setcachedevice newpath 184 39 moveto 256 59 lineto 355 153 lineto 396 252 lineto 382 340 lineto 315 375 lineto 234 363 lineto 224 361 lineto 214 356 lineto 210 361 lineto 214 370 lineto 312 521 lineto 396 593 lineto 391 620 lineto 341 611 lineto 243 517 lineto 142 344 lineto 100 201 lineto 113 93 lineto 165 41 lineto closepath 186 98 moveto 155 167 lineto 173 270 lineto 261 317 lineto 321 310 lineto 340 248 lineto 295 162 lineto 216 97 lineto closepath fill } def /seven { 554 0 176 32 610 620 setcachedevice newpath 235 32 moveto 273 46 lineto 444 310 lineto 454 314 lineto 513 308 lineto 532 335 lineto 498 363 lineto 489 367 lineto 483 370 lineto 489 381 lineto 610 579 lineto 589 620 lineto 413 611 lineto 184 591 lineto 176 583 lineto 178 546 lineto 437 556 lineto 541 569 lineto 546 564 lineto 541 555 lineto 430 384 lineto 421 379 lineto 339 375 lineto 322 340 lineto 366 324 lineto 377 324 lineto 387 324 lineto 384 314 lineto 224 57 lineto closepath fill } def /eight { 541 0 86 2 571 629 setcachedevice newpath 210 2 moveto 335 21 lineto 450 93 lineto 517 181 lineto 524 252 lineto 449 342 lineto 445 347 lineto 453 354 lineto 542 425 lineto 571 493 lineto 537 578 lineto 500 559 lineto 513 474 lineto 458 418 lineto 347 368 lineto 267 368 lineto 241 393 lineto 260 453 lineto 351 537 lineto 453 574 lineto 490 597 lineto 477 629 lineto 374 609 lineto 255 524 lineto 188 423 lineto 190 354 lineto 250 312 lineto 256 305 lineto 247 300 lineto 141 217 lineto 86 135 lineto 92 57 lineto 160 8 lineto closepath 216 59 moveto 145 86 lineto 149 145 lineto 218 221 lineto 350 284 lineto 402 293 lineto 409 289 lineto 470 223 lineto 448 164 lineto 361 90 lineto 226 57 lineto closepath fill } def /nine { 484 0 140 -54 477 634 setcachedevice newpath 387 -54 moveto 418 -27 lineto 460 382 lineto 421 405 lineto 245 344 lineto 195 367 lineto 205 426 lineto 278 513 lineto 385 574 lineto 468 583 lineto 477 592 lineto 475 629 lineto 407 634 lineto 295 587 lineto 191 499 lineto 140 402 lineto 144 333 lineto 194 291 lineto 286 298 lineto 389 338 lineto 400 344 lineto 405 340 lineto 407 330 lineto 363 -18 lineto 377 -52 lineto closepath fill } def /colon { 208 0 66 7 220 379 setcachedevice newpath 79 7 moveto 140 14 lineto 160 63 lineto 170 122 lineto 132 126 lineto 74 70 lineto 66 20 lineto closepath 148 275 moveto 208 301 lineto 220 363 lineto 175 379 lineto 128 333 lineto 130 282 lineto closepath fill } def /semicolon { 254 0 85 -61 227 360 setcachedevice newpath 119 -61 moveto 175 -6 lineto 212 92 lineto 165 135 lineto 116 115 lineto 85 57 lineto 120 30 lineto 131 32 lineto 135 26 lineto 131 16 lineto 93 -37 lineto closepath 150 246 moveto 202 261 lineto 227 307 lineto 214 354 lineto 167 360 lineto 125 324 lineto 120 266 lineto closepath fill } def /less { 474 0 114 -46 530 603 setcachedevice newpath 377 -46 moveto 407 -35 lineto 410 3 lineto 265 209 lineto 203 268 lineto 197 275 lineto 201 284 lineto 528 570 lineto 530 600 lineto 492 603 lineto 174 326 lineto 114 273 lineto 130 244 lineto 244 144 lineto closepath fill } def /equal { 451 0 133 225 467 418 setcachedevice newpath 162 225 moveto 410 252 lineto 416 289 lineto 286 291 lineto 161 273 lineto 147 237 lineto 152 229 lineto closepath 396 351 moveto 456 358 lineto 464 367 lineto 467 388 lineto 462 395 lineto 209 418 lineto 146 405 lineto 133 368 lineto 178 358 lineto closepath fill } def /greater { 508 0 54 -50 508 621 setcachedevice newpath 76 -50 moveto 294 108 lineto 508 300 lineto 501 335 lineto 243 621 lineto 204 614 lineto 201 575 lineto 439 314 lineto 443 305 lineto 435 298 lineto 91 14 lineto 54 -25 lineto closepath fill } def /question { 426 0 156 19 467 587 setcachedevice newpath 225 19 moveto 263 41 lineto 273 46 lineto 301 59 lineto 304 97 lineto 257 127 lineto 196 107 lineto 188 68 lineto 207 26 lineto closepath 272 197 moveto 304 223 lineto 339 324 lineto 456 449 lineto 467 529 lineto 414 582 lineto 271 587 lineto 192 546 lineto 156 481 lineto 179 455 lineto 208 469 lineto 234 515 lineto 306 532 lineto 395 521 lineto 414 490 lineto 356 411 lineto 273 317 lineto 252 215 lineto closepath fill } def /at { 624 0 117 17 603 600 setcachedevice newpath 353 17 moveto 468 46 lineto 551 103 lineto 603 199 lineto 589 231 lineto 553 211 lineto 503 126 lineto 403 78 lineto 302 83 lineto 219 143 lineto 175 246 lineto 189 370 lineto 256 483 lineto 343 533 lineto 445 537 lineto 505 495 lineto 523 400 lineto 487 287 lineto 464 263 lineto 454 259 lineto 450 268 lineto 448 368 lineto 456 375 lineto 474 411 lineto 431 428 lineto 329 402 lineto 241 330 lineto 207 273 lineto 224 222 lineto 279 208 lineto 370 246 lineto 379 254 lineto 389 261 lineto 393 254 lineto 412 210 lineto 470 209 lineto 536 270 lineto 575 368 lineto 571 488 lineto 528 560 lineto 430 600 lineto 317 580 lineto 215 512 lineto 153 419 lineto 117 287 lineto 137 163 lineto 201 72 lineto 304 24 lineto closepath 265 277 moveto 337 347 lineto 389 368 lineto 397 365 lineto 392 356 lineto 326 279 lineto 275 264 lineto 265 268 lineto closepath fill } def /A { 790 0 59 -48 723 625 setcachedevice newpath 693 -48 moveto 713 -46 lineto 722 -39 lineto 723 29 lineto 583 524 lineto 554 625 lineto 515 620 lineto 308 337 lineto 300 330 lineto 195 319 lineto 186 282 lineto 244 273 lineto 254 270 lineto 252 261 lineto 59 -1 lineto 79 -28 lineto 122 4 lineto 320 268 lineto 328 275 lineto 597 272 lineto 601 264 lineto 684 -43 lineto closepath 555 330 moveto 376 333 lineto 373 337 lineto 380 347 lineto 506 523 lineto 514 532 lineto 519 527 lineto 579 342 lineto 582 331 lineto 575 328 lineto closepath fill } def /B { 606 0 76 -28 590 629 setcachedevice newpath 193 -28 moveto 349 -14 lineto 480 41 lineto 566 130 lineto 590 222 lineto 557 300 lineto 474 344 lineto 406 356 lineto 396 356 lineto 396 363 lineto 406 370 lineto 485 451 lineto 502 531 lineto 457 588 lineto 317 626 lineto 204 629 lineto 181 607 lineto 186 451 lineto 154 216 lineto 84 35 lineto 76 0 lineto 105 -19 lineto closepath 194 28 moveto 156 35 lineto 150 41 lineto 219 256 lineto 221 266 lineto 226 275 lineto 308 301 lineto 469 284 lineto 524 238 lineto 529 179 lineto 479 104 lineto 372 46 lineto 215 26 lineto closepath 236 351 moveto 246 564 lineto 250 572 lineto 259 574 lineto 404 547 lineto 446 512 lineto 424 453 lineto 313 372 lineto 242 340 lineto 234 340 lineto closepath fill } def /C { 609 0 107 -23 580 593 setcachedevice newpath 299 -23 moveto 434 8 lineto 552 93 lineto 575 129 lineto 548 150 lineto 409 54 lineto 316 32 lineto 228 68 lineto 171 165 lineto 171 284 lineto 218 393 lineto 310 495 lineto 409 540 lineto 500 535 lineto 552 497 lineto 580 512 lineto 572 559 lineto 517 592 lineto 405 593 lineto 304 551 lineto 195 451 lineto 123 316 lineto 107 172 lineto 155 59 lineto 243 -9 lineto closepath fill } def /D { 736 0 53 -43 741 625 setcachedevice newpath 79 -43 moveto 265 -35 lineto 442 14 lineto 587 98 lineto 689 206 lineto 741 326 lineto 738 425 lineto 671 517 lineto 536 586 lineto 363 625 lineto 206 619 lineto 180 584 lineto 207 564 lineto 249 569 lineto 258 568 lineto 258 558 lineto 205 237 lineto 136 23 lineto 133 13 lineto 123 9 lineto 62 4 lineto 53 -32 lineto closepath 193 23 moveto 275 289 lineto 316 558 lineto 319 568 lineto 328 569 lineto 511 532 lineto 644 460 lineto 689 377 lineto 665 266 lineto 581 158 lineto 448 74 lineto 272 19 lineto 197 9 lineto 189 13 lineto closepath fill } def /E { 653 0 61 -43 699 624 setcachedevice newpath 77 -43 moveto 460 -35 lineto 573 -37 lineto 592 -1 lineto 551 17 lineto 177 14 lineto 135 13 lineto 127 16 lineto 128 25 lineto 206 358 lineto 211 367 lineto 222 367 lineto 510 363 lineto 530 388 lineto 510 416 lineto 219 423 lineto 216 430 lineto 231 564 lineto 236 572 lineto 246 572 lineto 680 569 lineto 699 596 lineto 676 621 lineto 198 624 lineto 175 575 lineto 128 246 lineto 61 -20 lineto closepath fill } def /F { 636 0 49 -64 694 634 setcachedevice newpath 75 -64 moveto 105 -35 lineto 201 358 lineto 208 363 lineto 509 368 lineto 534 400 lineto 504 421 lineto 224 421 lineto 214 423 lineto 216 435 lineto 235 569 lineto 240 578 lineto 251 578 lineto 653 572 lineto 692 583 lineto 694 620 lineto 565 634 lineto 214 625 lineto 180 601 lineto 155 407 lineto 49 -54 lineto 55 -61 lineto closepath fill } def /G { 627 0 113 -111 686 609 setcachedevice newpath 435 -111 moveto 474 -103 lineto 528 123 lineto 545 275 lineto 509 282 lineto 491 233 lineto 459 57 lineto 455 48 lineto 445 46 lineto 291 46 lineto 208 92 lineto 164 186 lineto 179 298 lineto 245 400 lineto 375 490 lineto 530 546 lineto 675 560 lineto 686 597 lineto 609 609 lineto 442 577 lineto 273 490 lineto 167 386 lineto 113 268 lineto 114 137 lineto 171 41 lineto 273 -8 lineto 425 -12 lineto 435 -10 lineto 444 -12 lineto 443 -23 lineto 430 -104 lineto closepath fill } def /H { 631 0 107 -43 694 629 setcachedevice newpath 128 -43 moveto 162 -17 lineto 238 314 lineto 241 324 lineto 252 328 lineto 576 337 lineto 583 333 lineto 581 324 lineto 513 -6 lineto 549 -12 lineto 582 76 lineto 694 616 lineto 687 624 lineto 657 624 lineto 649 615 lineto 598 409 lineto 596 398 lineto 587 395 lineto 264 381 lineto 254 384 lineto 254 393 lineto 273 619 lineto 239 629 lineto 217 584 lineto 196 389 lineto 193 379 lineto 182 379 lineto 133 365 lineto 134 328 lineto 173 324 lineto 183 323 lineto 184 312 lineto 107 -26 lineto closepath fill } def /I { 190 0 83 13 224 588 setcachedevice newpath 108 13 moveto 138 43 lineto 218 469 lineto 224 582 lineto 188 588 lineto 168 541 lineto 119 209 lineto 83 23 lineto 89 16 lineto closepath fill } def /J { 587 0 84 28 650 634 setcachedevice newpath 183 28 moveto 287 46 lineto 353 105 lineto 421 266 lineto 469 524 lineto 474 555 lineto 479 564 lineto 489 566 lineto 634 579 lineto 650 616 lineto 597 634 lineto 241 597 lineto 225 560 lineto 230 552 lineto 405 559 lineto 415 558 lineto 416 547 lineto 364 268 lineto 305 128 lineto 252 87 lineto 172 93 lineto 118 143 lineto 84 123 lineto 99 71 lineto closepath fill } def /K { 554 0 78 -32 583 621 setcachedevice newpath 94 -32 moveto 128 -8 lineto 175 187 lineto 182 194 lineto 242 246 lineto 250 254 lineto 259 252 lineto 448 -26 lineto 478 -25 lineto 494 1 lineto 307 293 lineto 306 301 lineto 548 544 lineto 583 600 lineto 557 621 lineto 224 296 lineto 198 275 lineto 191 266 lineto 190 275 lineto 232 614 lineto 197 620 lineto 174 574 lineto 99 97 lineto 78 -24 lineto closepath fill } def /L { 534 0 93 -25 484 578 setcachedevice newpath 120 -25 moveto 381 7 lineto 475 21 lineto 484 50 lineto 452 67 lineto 160 39 lineto 150 35 lineto 147 43 lineto 213 435 lineto 217 577 lineto 180 578 lineto 163 519 lineto 100 76 lineto 93 -3 lineto closepath fill } def /M { 589 0 78 -43 623 620 setcachedevice newpath 488 -43 moveto 517 -32 lineto 613 421 lineto 623 603 lineto 592 620 lineto 543 574 lineto 364 266 lineto 356 261 lineto 354 270 lineto 280 572 lineto 253 609 lineto 209 580 lineto 93 170 lineto 78 7 lineto 110 -6 lineto 132 28 lineto 176 286 lineto 238 490 lineto 242 499 lineto 245 488 lineto 314 196 lineto 358 182 lineto 411 240 lineto 554 493 lineto 559 503 lineto 565 503 lineto 565 493 lineto 473 -32 lineto closepath fill } def /N { 492 0 81 -23 548 597 setcachedevice newpath 102 -23 moveto 112 -19 lineto 137 13 lineto 206 405 lineto 209 446 lineto 213 456 lineto 216 449 lineto 323 150 lineto 369 -4 lineto 417 4 lineto 475 218 lineto 548 580 lineto 517 596 lineto 490 563 lineto 397 128 lineto 390 123 lineto 389 133 lineto 280 460 lineto 217 597 lineto 177 588 lineto 154 467 lineto 100 97 lineto 81 -4 lineto closepath fill } def /O { 590 0 111 2 592 583 setcachedevice newpath 276 2 moveto 369 9 lineto 465 64 lineto 555 180 lineto 592 312 lineto 588 462 lineto 536 550 lineto 456 583 lineto 365 565 lineto 254 490 lineto 167 386 lineto 111 256 lineto 121 128 lineto 194 30 lineto closepath 283 61 moveto 197 118 lineto 165 218 lineto 187 310 lineto 257 423 lineto 354 504 lineto 437 527 lineto 504 495 lineto 540 395 lineto 522 241 lineto 465 135 lineto 386 71 lineto 292 59 lineto closepath fill } def /P { 683 0 124 -54 715 632 setcachedevice newpath 146 -54 moveto 179 -27 lineto 293 425 lineto 316 570 lineto 318 580 lineto 327 583 lineto 537 559 lineto 654 495 lineto 655 456 lineto 584 402 lineto 275 282 lineto 273 245 lineto 282 241 lineto 511 312 lineto 661 389 lineto 715 460 lineto 705 527 lineto 614 593 lineto 453 632 lineto 226 632 lineto 181 606 lineto 187 572 lineto 249 578 lineto 258 578 lineto 259 569 lineto 190 216 lineto 124 -37 lineto closepath fill } def /Q { 695 0 107 -64 646 566 setcachedevice newpath 251 -64 moveto 376 -52 lineto 491 14 lineto 518 37 lineto 526 39 lineto 611 -2 lineto 640 26 lineto 593 68 lineto 569 85 lineto 563 90 lineto 569 100 lineto 630 239 lineto 646 382 lineto 583 550 lineto 498 566 lineto 362 538 lineto 248 469 lineto 165 377 lineto 107 237 lineto 108 98 lineto 158 -2 lineto closepath 271 -7 moveto 192 57 lineto 159 156 lineto 170 268 lineto 234 384 lineto 319 460 lineto 453 509 lineto 536 483 lineto 585 393 lineto 580 261 lineto 527 130 lineto 520 122 lineto 513 125 lineto 414 196 lineto 384 184 lineto 385 145 lineto 474 75 lineto 478 68 lineto 470 61 lineto 363 -2 lineto closepath fill } def /R { 676 0 140 -59 645 625 setcachedevice newpath 152 -59 moveto 182 -54 lineto 242 149 lineto 299 521 lineto 302 551 lineto 302 561 lineto 310 566 lineto 495 536 lineto 583 467 lineto 583 418 lineto 518 356 lineto 354 291 lineto 273 264 lineto 276 229 lineto 353 162 lineto 521 0 lineto 579 -57 lineto 607 -41 lineto 597 3 lineto 428 179 lineto 368 224 lineto 361 230 lineto 364 238 lineto 374 241 lineto 557 321 lineto 627 393 lineto 645 453 lineto 613 531 lineto 506 592 lineto 300 625 lineto 196 616 lineto 178 591 lineto 200 566 lineto 231 569 lineto 241 569 lineto 246 563 lineto 192 180 lineto 140 -45 lineto closepath fill } def /S { 559 0 101 -7 526 614 setcachedevice newpath 253 -7 moveto 388 -2 lineto 482 59 lineto 526 135 lineto 522 233 lineto 450 319 lineto 216 462 lineto 214 500 lineto 278 542 lineto 393 555 lineto 489 536 lineto 514 569 lineto 479 597 lineto 350 614 lineto 225 577 lineto 162 513 lineto 155 453 lineto 206 388 lineto 421 264 lineto 470 196 lineto 462 116 lineto 395 56 lineto 280 46 lineto 172 86 lineto 138 152 lineto 101 134 lineto 122 50 lineto closepath fill } def /T { 705 0 160 -30 755 578 setcachedevice newpath 398 -30 moveto 432 -4 lineto 497 356 lineto 505 488 lineto 509 500 lineto 518 501 lineto 737 527 lineto 755 554 lineto 732 578 lineto 506 564 lineto 469 560 lineto 314 546 lineto 177 537 lineto 160 501 lineto 203 486 lineto 444 497 lineto 451 492 lineto 401 109 lineto 378 -13 lineto closepath fill } def /U { 501 0 126 2 538 643 setcachedevice newpath 262 2 moveto 342 32 lineto 436 158 lineto 509 340 lineto 538 536 lineto 527 643 lineto 489 637 lineto 481 558 lineto 459 363 lineto 379 162 lineto 300 68 lineto 261 63 lineto 211 128 lineto 183 282 lineto 209 508 lineto 209 555 lineto 170 549 lineto 126 333 lineto 142 146 lineto 195 35 lineto closepath fill } def /V { 573 0 180 -12 639 652 setcachedevice newpath 310 -12 moveto 350 1 lineto 500 305 lineto 639 634 lineto 610 652 lineto 578 611 lineto 342 90 lineto 335 87 lineto 334 97 lineto 263 503 lineto 216 615 lineto 180 600 lineto 188 532 lineto 251 257 lineto 295 -2 lineto closepath fill } def /W { 724 0 170 -48 777 629 setcachedevice newpath 250 -48 moveto 290 -39 lineto 476 240 lineto 482 245 lineto 487 236 lineto 543 8 lineto 581 -12 lineto 618 6 lineto 677 157 lineto 769 528 lineto 777 629 lineto 740 629 lineto 718 560 lineto 639 218 lineto 597 85 lineto 592 75 lineto 585 71 lineto 583 82 lineto 522 316 lineto 484 321 lineto 396 217 lineto 282 37 lineto 275 32 lineto 274 43 lineto 231 426 lineto 222 595 lineto 185 597 lineto 170 550 lineto 206 82 lineto 235 -39 lineto closepath fill } def /X { 658 0 96 -7 651 620 setcachedevice newpath 109 -7 moveto 147 4 lineto 379 254 lineto 388 263 lineto 395 259 lineto 569 -6 lineto 598 3 lineto 603 41 lineto 438 305 lineto 433 314 lineto 440 323 lineto 646 580 lineto 651 619 lineto 615 620 lineto 409 363 lineto 400 360 lineto 395 368 lineto 208 614 lineto 180 601 lineto 178 564 lineto 354 319 lineto 359 310 lineto 354 301 lineto 96 14 lineto closepath fill } def /Y { 669 0 177 -75 730 632 setcachedevice newpath 298 -75 moveto 335 -54 lineto 415 252 lineto 730 609 lineto 717 632 lineto 678 615 lineto 393 303 lineto 385 294 lineto 380 296 lineto 294 500 lineto 213 602 lineto 177 586 lineto 189 541 lineto 282 388 lineto 340 194 lineto 285 -61 lineto closepath fill } def /Z { 618 0 75 -28 631 588 setcachedevice newpath 103 -26 moveto 404 -18 lineto 546 -20 lineto 555 -13 lineto 550 21 lineto 274 39 lineto 192 35 lineto 182 37 lineto 188 45 lineto 416 282 lineto 631 559 lineto 614 587 lineto 201 588 lineto 171 559 lineto 182 535 lineto 534 532 lineto 544 532 lineto 543 523 lineto 268 192 lineto 75 1 lineto 93 -28 lineto closepath fill } def /bracketleft { 330 0 54 -122 370 676 setcachedevice newpath 125 -122 moveto 239 -104 lineto 254 -75 lineto 251 -67 lineto 204 -59 lineto 121 -64 lineto 114 -57 lineto 116 -48 lineto 236 583 lineto 239 603 lineto 243 612 lineto 253 614 lineto 358 633 lineto 370 670 lineto 322 676 lineto 208 661 lineto 182 615 lineto 78 24 lineto 54 -98 lineto 95 -119 lineto closepath fill } def /backslash { 602 0 188 -79 528 657 setcachedevice newpath 509 -79 moveto 519 -76 lineto 527 -70 lineto 528 -20 lineto 266 592 lineto 226 657 lineto 188 643 lineto 194 596 lineto 383 167 lineto 489 -75 lineto closepath fill } def /bracketright { 349 0 62 -127 412 703 setcachedevice newpath 90 -127 moveto 255 -100 lineto 278 -52 lineto 317 254 lineto 412 680 lineto 384 703 lineto 198 693 lineto 191 656 lineto 331 643 lineto 342 644 lineto 347 639 lineto 345 629 lineto 240 141 lineto 221 -43 lineto 219 -52 lineto 209 -57 lineto 64 -82 lineto 62 -119 lineto closepath fill } def /asciicircum { 457 0 131 330 474 547 setcachedevice newpath 159 330 moveto 259 405 lineto 319 474 lineto 326 476 lineto 331 469 lineto 443 356 lineto 474 386 lineto 394 488 lineto 334 547 lineto 282 510 lineto 187 416 lineto 131 360 lineto 149 330 lineto closepath fill } def /underscore { 780 0 60 -59 716 14 setcachedevice newpath 489 -59 moveto 696 -54 lineto 716 -19 lineto 686 -2 lineto 98 14 lineto 60 4 lineto 60 -32 lineto 261 -52 lineto closepath fill } def /quoteleft { 284 0 186 486 325 674 setcachedevice newpath 287 486 moveto 325 504 lineto 313 560 lineto 228 674 lineto 198 671 lineto 186 633 lineto 265 517 lineto closepath fill } def /a { 564 0 71 -59 511 442 setcachedevice newpath 237 -59 moveto 466 -41 lineto 501 -14 lineto 511 208 lineto 481 330 lineto 410 404 lineto 301 442 lineto 207 425 lineto 180 395 lineto 194 372 lineto 307 384 lineto 406 328 lineto 446 244 lineto 447 233 lineto 445 224 lineto 437 228 lineto 310 252 lineto 195 225 lineto 98 150 lineto 71 59 lineto 117 -21 lineto 217 -57 lineto closepath 233 -2 moveto 153 28 lineto 130 90 lineto 163 144 lineto 252 189 lineto 363 189 lineto 440 153 lineto 448 97 lineto 442 27 lineto 439 17 lineto 430 10 lineto 253 -4 lineto closepath fill } def /b { 570 0 82 -25 546 616 setcachedevice newpath 103 -25 moveto 136 0 lineto 145 2 lineto 324 -19 lineto 428 6 lineto 511 79 lineto 546 180 lineto 523 252 lineto 451 296 lineto 299 301 lineto 196 270 lineto 188 270 lineto 188 280 lineto 230 616 lineto 193 616 lineto 165 527 lineto 82 -8 lineto closepath 267 39 moveto 160 59 lineto 152 64 lineto 152 74 lineto 177 199 lineto 186 207 lineto 289 245 lineto 432 239 lineto 484 201 lineto 479 130 lineto 423 61 lineto 329 35 lineto closepath fill } def /c { 530 0 96 -28 500 435 setcachedevice newpath 275 -28 moveto 420 -16 lineto 470 3 lineto 469 39 lineto 284 28 lineto 176 68 lineto 147 126 lineto 172 238 lineto 241 340 lineto 333 379 lineto 431 368 lineto 465 314 lineto 500 333 lineto 500 381 lineto 442 428 lineto 342 435 lineto 239 398 lineto 158 319 lineto 96 180 lineto 96 81 lineto 147 16 lineto 254 -25 lineto closepath fill } def /d { 586 0 87 -28 616 615 setcachedevice newpath 322 -28 moveto 496 -14 lineto 529 14 lineto 524 71 lineto 616 601 lineto 583 615 lineto 558 580 lineto 513 300 lineto 510 289 lineto 503 289 lineto 406 331 lineto 262 328 lineto 160 284 lineto 100 204 lineto 87 114 lineto 128 28 lineto 212 -13 lineto closepath 252 35 moveto 174 72 lineto 144 152 lineto 172 223 lineto 248 268 lineto 372 277 lineto 462 243 lineto 493 224 lineto 498 217 lineto 462 50 lineto 458 39 lineto 448 35 lineto closepath fill } def /e { 470 0 90 -12 424 409 setcachedevice newpath 241 -12 moveto 345 8 lineto 424 72 lineto 419 108 lineto 381 97 lineto 295 46 lineto 214 50 lineto 159 100 lineto 147 158 lineto 153 165 lineto 278 197 lineto 370 259 lineto 391 321 lineto 351 395 lineto 284 409 lineto 195 365 lineto 109 246 lineto 90 134 lineto 128 37 lineto 201 -7 lineto closepath 163 236 moveto 228 328 lineto 288 354 lineto 326 326 lineto 328 287 lineto 207 229 lineto 166 221 lineto 158 225 lineto closepath fill } def /f { 498 0 108 -30 534 587 setcachedevice newpath 194 -30 moveto 228 -7 lineto 247 207 lineto 255 212 lineto 319 219 lineto 326 226 lineto 332 257 lineto 326 264 lineto 265 268 lineto 257 270 lineto 256 280 lineto 291 476 lineto 334 526 lineto 424 522 lineto 474 481 lineto 491 437 lineto 521 444 lineto 534 481 lineto 500 549 lineto 402 587 lineto 308 572 lineto 247 507 lineto 204 342 lineto 197 270 lineto 190 263 lineto 108 244 lineto 108 207 lineto 178 207 lineto 189 208 lineto 192 200 lineto 178 -21 lineto closepath fill } def /g { 528 0 22 -319 499 356 setcachedevice newpath 234 -319 moveto 317 -307 lineto 384 -247 lineto 448 -98 lineto 499 180 lineto 496 317 lineto 410 356 lineto 295 337 lineto 179 268 lineto 103 172 lineto 74 70 lineto 95 7 lineto 158 -12 lineto 272 17 lineto 374 89 lineto 432 158 lineto 437 164 lineto 438 153 lineto 388 -112 lineto 326 -241 lineto 266 -264 lineto 42 -201 lineto 22 -236 lineto 114 -282 lineto closepath 136 56 moveto 145 136 lineto 201 217 lineto 295 280 lineto 398 296 lineto 425 289 lineto 433 284 lineto 432 273 lineto 354 141 lineto 254 67 lineto 160 43 lineto closepath fill } def /h { 505 0 91 -41 485 615 setcachedevice newpath 404 -41 moveto 439 -14 lineto 485 201 lineto 468 317 lineto 414 367 lineto 341 351 lineto 213 237 lineto 192 209 lineto 184 204 lineto 182 215 lineto 232 606 lineto 197 615 lineto 175 579 lineto 103 93 lineto 91 1 lineto 114 -12 lineto 125 -8 lineto 159 43 lineto 247 199 lineto 345 293 lineto 395 308 lineto 425 241 lineto 410 87 lineto 384 -24 lineto closepath fill } def /i { 295 0 134 -18 315 523 setcachedevice newpath 157 -18 moveto 188 8 lineto 230 215 lineto 226 363 lineto 188 360 lineto 173 291 lineto 157 97 lineto 134 -4 lineto closepath 284 389 moveto 315 400 lineto 315 437 lineto 191 523 lineto 159 497 lineto 191 453 lineto closepath fill } def /j { 406 0 38 -188 428 527 setcachedevice newpath 128 -188 moveto 189 -172 lineto 260 -86 lineto 319 86 lineto 341 351 lineto 304 356 lineto 295 349 lineto 254 43 lineto 194 -97 lineto 151 -134 lineto 94 -101 lineto 61 -86 lineto 38 -108 lineto 61 -156 lineto closepath 394 391 moveto 428 414 lineto 413 446 lineto 296 527 lineto 262 504 lineto 277 472 lineto closepath fill } def /k { 434 0 81 -39 384 609 setcachedevice newpath 106 -39 moveto 135 -8 lineto 166 115 lineto 217 160 lineto 227 165 lineto 234 159 lineto 314 34 lineto 339 -4 lineto 376 12 lineto 357 85 lineto 279 202 lineto 273 209 lineto 279 217 lineto 384 321 lineto 376 347 lineto 337 340 lineto 194 208 lineto 187 200 lineto 179 202 lineto 179 211 lineto 224 601 lineto 217 609 lineto 180 600 lineto 145 393 lineto 89 32 lineto 81 -26 lineto closepath fill } def /l { 190 0 79 -2 226 592 setcachedevice newpath 105 -2 moveto 134 25 lineto 226 577 lineto 205 592 lineto 173 569 lineto 79 28 lineto 96 -2 lineto closepath fill } def /m { 661 0 112 -41 613 382 setcachedevice newpath 557 -39 moveto 566 -41 lineto 576 -37 lineto 600 -1 lineto 613 210 lineto 570 317 lineto 526 333 lineto 472 293 lineto 423 218 lineto 417 209 lineto 412 209 lineto 412 218 lineto 375 338 lineto 327 367 lineto 270 340 lineto 193 241 lineto 189 240 lineto 187 250 lineto 176 379 lineto 139 382 lineto 127 335 lineto 121 92 lineto 112 10 lineto 147 1 lineto 156 7 lineto 228 200 lineto 308 307 lineto 317 308 lineto 325 303 lineto 355 193 lineto 347 -8 lineto 373 -16 lineto 400 14 lineto 470 197 lineto 512 263 lineto 519 272 lineto 527 268 lineto 558 157 lineto 544 -25 lineto closepath fill } def /n { 484 0 107 -64 446 423 setcachedevice newpath 122 -64 moveto 142 -61 lineto 152 -54 lineto 262 206 lineto 349 323 lineto 358 324 lineto 365 317 lineto 388 164 lineto 369 -18 lineto 404 -28 lineto 427 17 lineto 446 222 lineto 414 354 lineto 368 384 lineto 309 356 lineto 210 219 lineto 203 210 lineto 196 215 lineto 197 224 lineto 194 405 lineto 163 423 lineto 138 391 lineto 136 160 lineto 107 -54 lineto closepath fill } def /o { 551 0 98 23 534 405 setcachedevice newpath 245 23 moveto 349 35 lineto 465 104 lineto 530 195 lineto 534 286 lineto 467 388 lineto 392 405 lineto 246 365 lineto 138 280 lineto 98 193 lineto 111 105 lineto 179 41 lineto closepath 237 83 moveto 167 130 lineto 155 197 lineto 201 272 lineto 308 333 lineto 411 347 lineto 475 270 lineto 473 200 lineto 418 129 lineto 318 81 lineto closepath fill } def /p { 530 0 0 -317 497 356 setcachedevice newpath 21 -317 moveto 53 -289 lineto 128 -32 lineto 133 -23 lineto 142 -17 lineto 320 -4 lineto 432 41 lineto 494 120 lineto 497 201 lineto 435 282 lineto 306 342 lineto 198 356 lineto 148 335 lineto 44 -138 lineto 0 -301 lineto closepath 160 39 moveto 150 39 lineto 147 46 lineto 189 286 lineto 191 296 lineto 199 301 lineto 333 270 lineto 425 207 lineto 444 143 lineto 408 87 lineto 296 45 lineto closepath fill } def /q { 476 0 83 -291 468 377 setcachedevice newpath 334 -291 moveto 363 -261 lineto 468 368 lineto 392 377 lineto 278 342 lineto 153 245 lineto 83 119 lineto 87 21 lineto 145 -24 lineto 236 -17 lineto 340 48 lineto 355 64 lineto 363 71 lineto 367 68 lineto 308 -282 lineto closepath 174 28 moveto 136 67 lineto 151 148 lineto 235 254 lineto 344 312 lineto 397 319 lineto 406 317 lineto 407 307 lineto 351 143 lineto 275 59 lineto 194 26 lineto closepath fill } def /r { 468 0 71 0 463 425 setcachedevice newpath 87 0 moveto 122 25 lineto 179 294 lineto 267 338 lineto 347 333 lineto 402 282 lineto 428 256 lineto 463 279 lineto 427 354 lineto 342 395 lineto 239 388 lineto 199 370 lineto 189 370 lineto 189 379 lineto 182 425 lineto 152 421 lineto 128 340 lineto 71 8 lineto closepath fill } def /s { 520 0 53 -64 470 405 setcachedevice newpath 142 -64 moveto 309 -52 lineto 421 -7 lineto 470 52 lineto 469 109 lineto 386 185 lineto 248 268 lineto 245 277 lineto 248 286 lineto 380 347 lineto 449 347 lineto 461 384 lineto 421 405 lineto 306 377 lineto 202 310 lineto 185 261 lineto 230 202 lineto 408 93 lineto 415 57 lineto 349 14 lineto 214 -9 lineto 67 4 lineto 53 -32 lineto closepath fill } def /t { 485 0 122 -9 498 497 setcachedevice newpath 300 -9 moveto 328 20 lineto 361 300 lineto 363 310 lineto 373 312 lineto 488 328 lineto 498 365 lineto 451 375 lineto 378 368 lineto 370 370 lineto 371 381 lineto 372 493 lineto 336 497 lineto 317 449 lineto 312 377 lineto 311 365 lineto 303 361 lineto 136 340 lineto 122 312 lineto 151 291 lineto 297 307 lineto 306 303 lineto 304 293 lineto 274 -2 lineto closepath fill } def /u { 525 0 106 -23 517 435 setcachedevice newpath 428 -23 moveto 464 -1 lineto 517 428 lineto 482 435 lineto 461 388 lineto 434 202 lineto 427 193 lineto 277 70 lineto 217 54 lineto 178 92 lineto 164 218 lineto 194 416 lineto 170 428 lineto 140 400 lineto 106 153 lineto 136 43 lineto 185 0 lineto 267 8 lineto 379 85 lineto 414 115 lineto 421 119 lineto 422 109 lineto 414 -10 lineto closepath fill } def /v { 433 0 135 13 461 462 setcachedevice newpath 219 13 moveto 258 23 lineto 461 444 lineto 432 462 lineto 398 421 lineto 264 157 lineto 257 146 lineto 253 151 lineto 198 356 lineto 172 395 lineto 135 377 lineto 175 230 lineto closepath fill } def /w { 673 0 127 2 699 455 setcachedevice newpath 448 2 moveto 496 18 lineto 699 432 lineto 674 455 lineto 637 414 lineto 483 108 lineto 478 98 lineto 474 107 lineto 437 338 lineto 403 365 lineto 358 333 lineto 257 126 lineto 252 115 lineto 245 119 lineto 169 368 lineto 132 361 lineto 127 312 lineto 219 19 lineto 259 20 lineto 317 127 lineto 383 266 lineto 388 275 lineto 395 275 lineto 395 264 lineto 433 13 lineto closepath fill } def /x { 494 0 64 2 453 414 setcachedevice newpath 78 2 moveto 118 10 lineto 276 160 lineto 285 168 lineto 293 165 lineto 409 30 lineto 444 52 lineto 427 93 lineto 333 212 lineto 333 222 lineto 452 386 lineto 453 405 lineto 447 414 lineto 408 409 lineto 308 272 lineto 300 263 lineto 292 263 lineto 178 412 lineto 140 398 lineto 148 352 lineto 251 216 lineto 250 208 lineto 64 25 lineto closepath fill } def /y { 537 0 126 -268 546 381 setcachedevice newpath 164 -268 moveto 201 -254 lineto 546 344 lineto 540 381 lineto 502 374 lineto 334 72 lineto 328 70 lineto 323 78 lineto 164 342 lineto 134 340 lineto 126 333 lineto 127 294 lineto 291 8 lineto 289 0 lineto 154 -252 lineto closepath fill } def /z { 595 0 129 -14 576 386 setcachedevice newpath 149 -14 moveto 441 -7 lineto 532 -8 lineto 540 28 lineto 404 52 lineto 278 48 lineto 268 48 lineto 267 56 lineto 275 64 lineto 574 331 lineto 576 368 lineto 499 381 lineto 159 386 lineto 131 356 lineto 144 333 lineto 486 328 lineto 495 326 lineto 489 319 lineto 211 79 lineto 129 19 lineto 140 -12 lineto closepath fill } def /braceleft { 377 0 120 -75 417 672 setcachedevice newpath 265 -75 moveto 295 -72 lineto 309 -35 lineto 211 35 lineto 222 136 lineto 261 268 lineto 231 300 lineto 205 312 lineto 199 319 lineto 209 323 lineto 276 358 lineto 316 541 lineto 358 606 lineto 417 635 lineto 416 672 lineto 367 670 lineto 296 615 lineto 246 505 lineto 229 393 lineto 226 386 lineto 215 381 lineto 135 342 lineto 120 303 lineto 178 259 lineto 196 252 lineto 199 245 lineto 151 59 lineto 170 -13 lineto closepath fill } def /bar { 212 0 86 -68 237 657 setcachedevice newpath 116 -68 moveto 144 -35 lineto 219 419 lineto 237 653 lineto 201 657 lineto 181 610 lineto 118 125 lineto 86 -50 lineto closepath fill } def /braceright { 348 0 58 -127 341 663 setcachedevice newpath 76 -127 moveto 179 -97 lineto 243 -35 lineto 266 148 lineto 263 196 lineto 262 206 lineto 270 212 lineto 341 268 lineto 336 305 lineto 286 345 lineto 317 467 lineto 330 579 lineto 293 644 lineto 228 663 lineto 189 648 lineto 186 611 lineto 253 597 lineto 274 536 lineto 225 342 lineto 249 291 lineto 266 282 lineto 271 275 lineto 266 270 lineto 204 222 lineto 200 21 lineto 178 -35 lineto 99 -67 lineto 60 -82 lineto 58 -119 lineto closepath fill } def /asciitilde { 488 0 125 280 504 414 setcachedevice newpath 337 280 moveto 409 296 lineto 504 379 lineto 495 414 lineto 456 402 lineto 376 338 lineto 305 365 lineto 229 400 lineto 168 377 lineto 125 328 lineto 135 303 lineto 174 316 lineto 218 344 lineto closepath fill } def end /BuildChar { exch begin Encoding exch get CharProcs exch get end exec } def end /whaeberli F_whaeberli definefont pop %%EndFont %%BeginProcSet: texps.pro TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont /setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin @defspecial userdict begin /start-hook { /cshow {dup stringwidth pop 2 div neg 0 rmoveto show} def} def /bop-hook{ gsave /Times-Roman findfont 10 scalefont setfont 306 20 translate 0 0 moveto (Version 1.1 - 4 March 1997) cshow grestore} def end @fedspecial end TeXDict begin 40258437 52099154 1000 300 300 (glspec.dvi) @start /Fa 1 4 df<1204A3EAC460EAF5E0EA3F80EA0E00EA3F80EAF5E0EAC460EA0400A30B0D7E8D 11>3 D E /Fb 19 122 df45 D<48B512F038003C0001381330 1520A35BA214081500495AA21430EBFFF03801C020A448485A91C7FCA348C8FCA45AEAFF F01C1C7E9B1B>70 D<001FB512C0381C070138300E0000201480126012405B1280A20000 14005BA45BA45BA4485AA41203EA7FFE1A1C799B1E>84 D97 D<13F8EA0304120EEA1C0EEA181CEA30001270A25AA51304EA60081310EA3060EA0F800F 127C9113>99 D<13F8EA0704120CEA1802EA38041230EA7008EA7FF0EAE000A5EA600413 08EA30101360EA0F800F127C9113>101 D103 D105 D108 D110 D<13F8EA030CEA0E06487E1218123000701380A238E00700A3130EA25BEA60185BEA30E0 EA0F8011127C9115>I<380387803804C860EBD03013E0EA09C014381201A238038070A3 1460380700E014C0EB0180EB8300EA0E86137890C7FCA25AA45AB4FC151A809115>I114 DI<12035AA3120EA4EAFFE0EA1C00A35AA45AA4 EAE080A2EAE100A2126612380B1A7C990E>I<381C0180EA2E03124EA2388E0700A2121C A2EA380EA438301C80A3EA383C38184D00EA0F8611127C9116>II<38 038780380CC840380870E012103820E0C014001200A2485AA4EA03811263EAE38212C5EA 8584EA787813127E9113>120 D<381C0180EA2E03124EA2388E0700A2121CA2EA380EA4 EA301CA3EA383CEA1878EA0FB8EA003813301370EAE0605BEA81800043C7FC123C111A7C 9114>I E /Fc 3 55 df<0040132000C01360006013C03830018038180300EA0C066C5A 6C5AEA01B0EA00E0A2EA01B0EA0318EA060C487E487E38300180386000C0481360004013 2013147A9320>2 D<1203A4EAC30CEAE31CEA7338EA1FE0EA0780A2EA1FE0EA7338EAE3 1CEAC30CEA0300A40E127D9215>I<1460A214C0A2EB0180A3EB0300A21306A25BA25BA3 5BA25BA25BA2485AA248C7FCA31206A25AA25AA25AA35AA25A124013287A9D00>54 D E /Fd 12 94 df<1360AAB512F0A238006000AA14167E9119>43 D<120FEA30C0EA6060A2EA4020EAC030A9EA4020EA6060A2EA30C0EA0F000C137E9211> 48 D<120C121C12EC120CAFEAFFC00A137D9211>I<121FEA60C01360EAF07013301260EA 0070A2136013C012011380EA02005AEA08101210EA2020EA7FE012FF0C137E9211>II<136013E0A2EA016012021206120C120812101220126012 C0EAFFFCEA0060A5EA03FC0E137F9211>III56 D<120FEA3080EA6040EA4060EAC0201330A31240EA6070EA30B0EA0F30120013201360EA E0401380EA4100123E0C137E9211>I<12FCA212C0B3A712FCA2061D7E9509>91 D<12FCA2120CB3A712FCA2061D809509>93 D E /Fe 35 124 df<120412081210123012 201260A2124012C0AA12401260A212201230121012081204061A7D920C>40 D<128012401220123012101218A21208120CAA12081218A212101230122012401280061A 7F920C>I<124012E0124003037E8209>46 D<121FEA3180EA60C0EA4040EAC060A8EA40 40EA60C0EA3180EA1F000B107F8F0F>48 D<1218127812981218AC12FF08107D8F0F>I< 121FEA6180EA40C0EA806012C01200A213C0EA0180EA030012065AEA10201220EA7FC012 FF0B107F8F0F>I<124012E012401200A5124012E01240030B7E8A09>58 D<13C0A2487E1360A2EA0230A3487EA2487EEA0FFCEA080C487EA2EA300738FC1FC01211 7F9016>65 DIIIIII<38FF3F C038180600A7EA1FFEEA1806A738FF3FC012117F9016>I<12FF1218AF12FF08117F900B> II<38FF07E0381803001302130C13 105B5B13C0EA1960EA1A30EA1C10EA18187F7F1302130338FF07E013117F9017>II<00FC137E001C1370001613B0A338 130130A2EA1182A3EA10C4A21368A3133038FE31FE17117F901B>I<38F81FC0381C0200 A212161213A2EA1182EA10C2A2136213321312131A130E1306A2EAFE0212117F9016>I< EA03E0EA0C18EA1004487EEA6003EA400100C01380A538600300A2EA3006A2EA0C18EA03 E011117E9017>IIIII<387FFF80EA60C1EA40C000C013C000801340A200001300AAEA0FFC12117F9016> I<38FF1FC038180200AC1208EA0C046C5AEA01F012117F9016>I<38FC07C0383003007F EA1802A26C5AA2EA0E0CEA0608A26C5AA2EA01A0A3EA00C0A212117F9016>I<39FC3F07 C039300C0180010E1300A20018130213131406000C1304EB2184000613881361EB40C800 0313D0EB8070A200011360EB00201A117F901E>I<38FE1F8038180E00EA0C0CEA0E08EA 06106C5AEA01E05B1200EA0160487EEA0238EA0418487EEA1806EA380738FC0FC012117F 9016>I<38FC07C038300300EA1802EA1C06EA0C046C5AEA07101203EA01A0EA00C0A7EA 07F012117F9016>II118 D123 D E /Ff 5 111 df<124012E012601220A31240A2128003097D820A>59 D<123C120C5AA45AEA3380EA3C60EA3020EA6030A4EAC060A2EA40C0EA6080EA2300121E 0C147F930F>98 D<1206120712061200A41238124CA2128C12981218A212301232A21264 A2123808147F930C>105 D<3830F87C38590C86384E0D06EA9C0EEA980C1218A248485A 15801418A23960301900140E190D7F8C1D>109 DI E /Fg 5 121 df<1204120C1200A51230 12581298A21230A212601264A21268123006127E910B>105 D<12781218A21230A41260 A412C0A212C8A212D0126005117E900A>108 D<3871F1F0389A1A18EA9C1CEA98181218 38303030A214321462386060641438170B7E8A1B>I114 D120 D E /Fh 24 122 df<13F8EA030C380E0604EA1C07383803 080030138800701390A200E013A0A214C01480A3EA6007EB0B8838307190380F80E01612 7E911B>11 DI<140CA2141CA2143C145CA2149E148EEB010E 1302A21304A213081310A2497EEB3FFFEB40071380A2EA0100A212025AA2001C148039FF 803FF01C1D7F9C1F>65 D<48B5FC39003C01C090383800E015F01570A25B15F0A2EC01E0 9038E003C0EC0780EC1F00EBFFFC3801C00FEC0780EC03C0A2EA0380A439070007801500 140E5C000E1378B512C01C1C7E9B1F>I<903801F80890380E0618903838013890386000 F048481370485A48C71230481420120E5A123C15005AA35AA45CA300701302A200305B00 385B6C5B6C136038070180D800FEC7FC1D1E7E9C1E>I<48B5128039003C01E090383800 701538153C151C5B151EA35BA44848133CA3153848481378157015F015E039070001C0EC 0380EC0700141C000E1378B512C01F1C7E9B22>I<3801FFC038003C001338A45BA45BA4 485AA4485AA448C7FCA45AEAFFE0121C7E9B12>73 D77 DI<48B5FC39003C03C090383800E015F01570A24913F0A315E0EBE0 01EC03C0EC0700141E3801FFF001C0C7FCA3485AA448C8FCA45AEAFFE01C1C7E9B1B>80 D<3801FFFE39003C03C090383800E015F01570A24913F0A3EC01E001E013C0EC0780EC1E 00EBFFF03801C038140C140EA2EA0380A43807001E1508A2151048130FD8FFE01320C7EA 03C01D1D7E9B20>82 D<001FB512F0391C03807039300700300020142012601240130E12 80A2000014005BA45BA45BA45BA41201EA7FFF1C1C7F9B18>84 D<39FFC00FF0391C0003 8015001402A25C5C121E000E5B143014205CA25C49C7FC120FEA07025BA25BA25B5BEA03 A013C05BA290C8FCA21C1D7D9B18>86 D<39FFE007F8390F0001E0158015006C13026D5A 00035BEBC018141000015B6D5A00005B01F1C7FC13F21376137C1338A25BA45BA4485AEA 1FFC1D1C7F9B18>89 D<90B512E09038F001C03901C003809038800700EB000E141E0002 131C5C5CC75A495A495A49C7FC5B131E131C5BEB7002495AEA01C0EA038048485A5A000E 1318485B48137048485AB5FC1B1C7E9B1C>I97 D100 D105 D107 D<39381F81F0394E20C618394640E81CEB80F0EA8F00008E13E0120EA2391C01C038A315 703938038071A215E115E23970070064D83003133820127E9124>109 DI115 D<380787803808C8403810F0C03820F1E0EBE3C03840E1803800E000A2485AA438 63808012F3EB810012E5EA84C6EA787813127E9118>120 D<001C13C0EA27011247A238 870380A2120EA2381C0700A4EA180EA3EA1C1EEA0C3CEA07DCEA001C1318EA6038EAF030 5B485AEA4180003EC7FC121A7E9114>I E /Fi 31 116 df<132013401380EA01005A12 06A25AA25AA212381230A21270A3126012E0AD12601270A31230A212381218A27EA27EA2 7E7EEA0080134013200B317A8113>0 D<7E12407E7E12187EA27EA27EA213801201A213 C0A3120013E0AD13C01201A31380A212031300A21206A25AA25A12105A5A5A0B317F8113 >I<12C0B3A9021B7A800E>12 D<1430146014C0EB0180EB03005B130E130C5B13381330 13705B5B12015B1203A290C7FC5A1206120EA2120C121CA312181238A45AA75AB3A31270 A77EA41218121CA3120C120EA2120612077E7FA212017F12007F13701330133813187F13 0E7F7FEB0180EB00C014601430146377811F>18 D<12C012607E7E7E120E7E7E6C7E7F12 007F1370133013381318131CA2130C130E13061307A27F1480A3130114C0A4EB00E0A714 70B3A314E0A7EB01C0A414801303A314005BA21306130E130C131CA21318133813301370 5B5B12015B48C7FC5A120E120C5A5A5A5A14637F811F>I24 DI<1470EB01F0EB03 C0EB0780EB0E005B5B5BA213F05BB3AC485AA3485A48C7FC1206120E12385A12C012707E 120E120612076C7E6C7EA36C7EB3AC7F1370A27F7F7FEB0780EB03C0EB01F0EB00701463 7B811F>I<12E07E127C121E7E7E6C7E6C7EA26C7EB3AD1370A27FA27F7F7FEB03C0EB00 F0147014E0EB03C0EB0700130E5B5BA25BA25BB3AD485AA2485A48C7FC5A121E127C12F0 5A14637B811F>I<1608161CA21638A31670A216E0A3ED01C0A3ED0380A3ED0700A2150E A35DA35DA35DA25DA34A5AA34A5AA34AC7FCA2140EA35CA35CA25CA35CA3495AA3495AA2 49C8FCA3130EA35BA35BA25BA35BA3485AA3485AA248C9FCA3120EA35AA35AA25AA35AA2 124026637E812B>30 D<14181430146014E014C0EB01801303EB07001306130E130C131C 5BA25BA25BA212015BA2485AA3120790C7FCA25A120EA2121EA3121CA2123CA412381278 A8127012F0B3A812701278A81238123CA4121CA2121EA3120EA2120F7EA27F1203A36C7E A27F1200A21370A27FA27F130C130E13061307EB03801301EB00C014E014601430141815 7C768121>32 D<12C012607E123812187E120E7E7E7F12017F6C7EA21370A27FA2133C13 1CA27FA3130F7FA214801303A214C0A31301A214E0A4130014F0A814701478B3A8147014 F0A814E01301A414C0A21303A31480A213071400A25B130EA35BA2133C1338A25BA25BA2 485A5B120390C7FC5A120E120C5A123812305A5A157C7F8121>I<141C143C14F8EB01E0 EB03C0EB0780EB0F00130E131E5BA35BB3B3A25BA3485AA2485A5B48C7FC120E5A127812 E0A21278121C7E7E6C7E7F6C7EA26C7EA31378B3B3A27FA37F130E130FEB0780EB03C0EB 01E0EB00F8143C141C167C7B8121>40 D<140C141814381430146014E014C01301EB0380 A2EB0700A2130EA25BA25BA21378137013F0A25B1201A2485AA4485AA3120F90C7FCA35A A2121EA3123EA4123CA3127CA81278A212F8B1164B748024>48 D<12C01260127012307E 121C120C120E7EA26C7EA26C7EA26C7EA21370A213781338133CA2131C131EA27FA4EB07 80A314C01303A314E0A21301A314F0A41300A314F8A81478A2147CB1164B7F8024>I<13 18137813F0EA01E0EA03C0EA0780EA0F005A121E123E123C127CA2127812F8B3A50D2570 7E25>56 D<12C012F0127C121E7EEA078013C01203EA01E013F0120013F8A3137CB3A50E 25797E25>I<12F8B3A51278127CA2123C123E121E121F7EEA0780EA03C0EA01E0EA00F0 137813180D25708025>I<137CB3A513F8A313F0120113E0EA03C012071380EA0F00121E 127C12F012C00E25798025>I<137CB3A613F8A313F0120113E0120313C0EA0780130012 0E5A5A12F012C012F012387E7E7E1380EA03C013E0120113F0120013F8A3137CB3A60E4D 798025>I<12F8B3A61278127CA2123CA2123E121E7EA2EA0780EA03C01201EA00E01378 1318137813E0EA01C01203EA0780EA0F00A2121E123E123CA2127CA2127812F8B3A60D4D 708025>I<12F8AE050E708025>I<12F8B11278A2127CA8123CA3123EA4121EA3121FA27E A37F1207A36C7EA46C7EA212007FA2137013781338A27FA27FA27FA2EB0380A2EB01C013 0014E01460143014381418140C164B748224>64 D<147CB11478A214F8A814F0A31301A4 14E0A31303A214C0A313071480A3EB0F00A4131EA2131C133CA2133813781370A25BA248 5AA2485AA248C7FCA2120E120C121C12185A127012605A164B7F8224>I<12F8B3A9051B 748024>I<12F8B3A9051B6E8024>I80 D88 D<16021606160CA21618A21630A21660A216C0A2ED0180A2ED0300A21506A25DA25DA25D A25D1208001C5C123C00CE495A120E4AC7FC7E1406EA03805CEA01C05C13E000005BA2EB 7060A26D5AA2EB1D80A2011FC8FC7F130E130627327C812A>112 D<16021606A2160CA31618A31630A31660A316C0A3ED0180A3ED0300A31506A35DA35DA3 5DA35DA21208001C5C123C127C00DC495A128E120E4AC7FC7EA21406EA0380A25CA2EA01 C05CA2EA00E05CA3EB7060A36D5AA3EB1D80A3011FC8FC7FA2130E1306A2274B7C812A> I<16021606A3160CA51618A51630A51660A516C0A5ED0180A5ED0300A51506A65DA55DA5 5DA55DA31208A2001C5CA2123CA2125C4A5A128E120EA34AC7FCA27EA31406A2EA0380A4 5CA2EA01C0A35CA3EA00E0A25CA31370A25CA413385CA5EB1D80A5010FC8FCA5130E1306 A3277D7C812A>115 D E /Fj 7 123 df<137F3801FF803807C1C0380F00E05A123E383C 01C0387C0780387FFF0013FC00F8C7FCA412781480EB03C0383C0F80381FFF00EA07F813 147C9318>101 D<137013F8A213F013601300A8EA0780EA1FC0EA39E012331273A2EAE7 C01207A2EA0F80A2EA1F00A21338EA3E70A21360EA3CE0EA1FC0EA0F000D217DA010> 105 D<3803C1F83807F7FC380EFE1E48487E01F81380A2EA39F01201A33903E01F00A314 3EEA07C0143C6D5AEBE1F0380FFFC0019FC7FC1380A248C8FCA4123EEAFFC0A2191D7F93 1B>112 D<13FE3803FF80380783C0EA0607120E1480381F030013F0EA0FFC6C7E6C7EC6 1380130FEA780700F81300A2EAF00EEA701CEA3FF8EA1FE012147D9316>115 D<13E0EA01F0A2EA03E0A4EA07C0A2EAFFF8A2EA0F80A4EA1F00A4123EA3131CEA7C38A2 1370EA3CE0EA3FC0EA0F800E1D7C9C12>I<3807800E381FE01E0039133EEA31F01271EA 73E000E3137CEA07C0A3380F80F8A4EB81F0A21383EA07873803FFE0EA01FBEA000314C0 EA1C07003E1380EB0F00EA3C1EEA387CEA1FF8EA0FC0171D7D931A>121 DI E /Fk 36 124 df<127012F812FCA3127C1204A21208A3121012201240060E7D850D>44 D47 D66 D<90381FE0209038FFF8E03803F80F3807C003380F800148C7FC123E15 60127E127C00FC1400A8007C1460127E123E15C07E390F8001803907C003003803F80E38 00FFFCEB1FE01B1C7D9B22>IIII<90380F F00890387FFE383901FC07F83807E001390F80007848C7FC481438123E007E1418127C00 FC1400A6EC7FFFA2007CEB01F8127E123E123F7EEA0F80EA07E03801FC0739007FFE7890 380FF818201C7D9B26>I73 D76 DI80 D 82 D<3807F820381FFEE0EA3C07EA7801EA700012F01460A26C130012FEEAFFE0EA7FFE 6C7E1480000F13C06C13E0EA007FEB03F01301130012C0A214E07E38F001C0EAFC0338EF FF00EA83FC141C7D9B1B>I<007FB512E0A238781F81007013800060146000E0147000C0 1430A400001400B03807FFFEA21C1C7E9B21>I97 DI100 DI<137F3801E3803803C7C0EA0787120FEB8380EB8000A5EAFFF8A2EA0F80AEEA7F F0A2121D809C0F>I<3803F0F0380E1F38EA3C0F3838073000781380A400381300EA3C0F EA1E1CEA33F00030C7FCA3EA3FFF14C06C13E014F0387801F838F00078A3007013700078 13F0381E03C03807FF00151B7F9118>II<121E123FA4121EC7FCA6127FA2121FAEEAFFC0A20A 1E7F9D0E>I108 D<39FF0FC07E903831E18F3A 1F40F20780D980FC13C0A2EB00F8AB3AFFE7FF3FF8A225127F9128>I<38FF0FC0EB31E0 381F40F0EB80F8A21300AB38FFE7FFA218127F911B>II<38FF3F80EBE1E0381F80F0EB0078147C143C143EA6143C147C1478EB80F0EBC1 E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I114 DI<1203A45AA2 5AA2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913>I<38FFC1FCA238 1F00601380000F13C0A23807C180A23803E300A213F7EA01F613FE6C5AA21378A2133016 127F9119>118 D<39FF8FF8FEA2391F03E030A3390F87F06013869038C6F8E03907CC78 C0A23903FC7D80EBF83D143F3901F01F00A20000131EEBE00EA21F127F9122>I<38FFC7 FCA2381F81C0380F83803807C700EA03EEEA01FC5B1200137C13FEEA01DF38039F80EA07 0F380607C0380C03E038FF07FCA216127F9119>I<38FFC1FCA2381F00601380000F13C0 A23807C180A23803E300A213F7EA01F613FE6C5AA21378A21330A25B1270EAF8E05BEAF9 800073C7FC123E161A7F9119>I123 D E /Fl 58 123 df<90380FF83F90397FFDFFC03A01F81FE3E03903E03F87EA07C0D80F801307ED 03C06EC7FCA6B612FCA2260F801FC7FCB2397FF0FFF0A223237FA221>11 DI<1238127C12FEA3127C123807077C8610>46 D<14181438A21470A214E0A3EB01C0A2EB0380A3EB0700A3130EA25BA35BA25BA35BA248 5AA3485AA248C7FCA3120EA35AA25AA35AA25AA25A15317DA41C>I<13FE3807FFC0380F 83E0381F01F0383E00F8A248137CA312FC147EAD007C137CA36C13F8A2381F01F0380F83 E03807FFC03800FE0017207E9F1C>I<13181378EA01F812FFA21201B3A7387FFFE0A213 207C9F1C>II<13FE3807FFC0380F07E0381E03F0123FEB 81F8A3EA1F0314F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8EB00FCA2 003C13FE127EB4FCA314FCEA7E01007813F8381E07F0380FFFC03801FE0017207E9F1C> I<14E013011303A21307130F131FA21337137713E7EA01C71387EA03071207120E120C12 181238127012E0B6FCA2380007E0A790B5FCA218207E9F1C>I<00301320383E01E0383F FFC0148014005B13F8EA33C00030C7FCA4EA31FCEA37FF383E0FC0383807E0EA30030000 13F0A214F8A21238127C12FEA200FC13F0A2387007E0003013C0383C1F80380FFF00EA03 F815207D9F1C>II<12601278387FFFFEA2 14FC14F8A214F038E0006014C038C00180EB0300A2EA00065B131C131813381378A25BA3 1201A31203A76C5A17227DA11C>I<13FE3803FFC0380703E0380E00F05A1478123C123E 123F1380EBE0F0381FF9E0EBFFC06C13806C13C06C13E04813F0381E7FF8383C1FFCEA78 07EB01FEEAF000143E141EA36C131C007813387E001F13F0380FFFC00001130017207E9F 1C>II<1470A214F8A3497EA2497EA3EB067F A2010C7F143FA2496C7EA201307F140F01707FEB6007A201C07F90B5FC4880EB8001A2D8 03007F14004880000680A23AFFE007FFF8A225227EA12A>65 DIIIIII73 D76 DIII< B6FC15E03907F007F0EC01FC1400157EA2157FA5157EA215FC1401EC07F090B512E01500 01F0C7FCADB57EA220227EA126>I82 D<3801FE023807FF86381F01FE383C007E007C131E007813 0EA200F81306A27E1400B4FC13E06CB4FC14C06C13F06C13F86C13FC000313FEEA003F13 03EB007F143FA200C0131FA36C131EA26C133C12FCB413F838C7FFE00080138018227DA1 1F>I<007FB61280A2397E03F80F00781407007014030060140100E015C0A200C01400A4 00001500B3A248B512F0A222227EA127>IIII97 DI< EBFF80000713E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13 186C1330380FC0603807FFC0C6130015167E9519>II<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014F812 FCA2B5FCA200FCC7FCA3127CA2127E003E13186C1330380FC0703803FFC0C6130015167E 951A>II<3801FE0F3907FFBF80380F87C7381F03E7391E01E000003E7F A5001E5BEA1F03380F87C0EBFF80D809FEC7FC0018C8FCA2121C381FFFE06C13F86C13FE 001F7F383C003F48EB0F80481307A40078EB0F006C131E001F137C6CB45A000113C01921 7F951C>II<121C123E127FA3123E121CC7FCA7B4FCA2121FB2EAFFE0A20B247EA310> I<1338137C13FEA3137C13381300A7EA03FEA2EA003EB3A5127812FC133C137CEA78F8EA 7FE0EA1F800F2E83A311>II< B4FCA2121FB3ADEAFFE0A20B237EA210>I<3AFF07F007F090391FFC1FFC3A1F303E303E 01401340496C487EA201001300AE3BFFE0FFE0FFE0A22B167E9530>I<38FF07E0EB1FF8 381F307CEB403CEB803EA21300AE39FFE1FFC0A21A167E951F>I<13FE3807FFC0380F83 E0381E00F0003E13F848137CA300FC137EA7007C137CA26C13F8381F01F0380F83E03807 FFC03800FE0017167E951C>I<38FF0FE0EB3FF8381FE07CEB803E497E1580A2EC0FC0A8 EC1F80A29038803F00EBC03EEBE0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F>I< EAFE1FEB3FC0381E67E013C71387A2381F83C090C7FCADEAFFF0A213167E9517>114 DI<487EA412 03A21207A2120F123FB5FCA2EA0F80ABEB8180A5EB8300EA07C3EA03FEEA00F811207F9F 16>I<38FF01FEA2381F003EAF147E14FE380F81BE3907FF3FC0EA01FC1A167E951F>I<39 FFE01FE0A2391F800700000F1306EBC00E0007130C13E000035BA26C6C5AA26C6C5AA2EB 7CC0A2137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFE3FF07F8A23A1F007800C090 38807C01000F1580A23A07C07E030014DE5D3903E1DF06148FD801F1138CEBF307A2D800 FF13D8EBFE0315F890387C01F0A2013C5BEB3800A225167F9528>I<39FFE07FC0A2390F 801C006C6C5A6C6C5AEBF0606C6C5A3800F980137F6DC7FC7F80497E1337EB63E0EBC1F0 3801C0F848487E3807007E000E133E39FF80FFE0A21B167F951E>I<39FFE01FE0A2391F 800700000F1306EBC00E0007130C13E000035BA26C6C5AA26C6C5AA2EB7CC0A2137F6D5A A26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8FC1B207F951E> I<387FFFF0A2387C03E0387007C0EA600F38E01F8000C01300133E137EC65A5B485A0003 1330EA07E013C0380F8070121F383F0060003E13E0EA7C03B5FCA214167E9519>I E /Fm 73 124 df11 D<137E3801C180EA0301380703C0120EEB 018090C7FCA5B512C0EA0E01B0387F87F8151D809C17>II<90383F07E03901C09C18380380F0D807 01133C000E13E00100131892C7FCA5B612FC390E00E01CB03A7FC7FCFF80211D809C23> I<13E0EA0310EA0608A2120EA45BA25B6C5AEC3FE09038800F80EC060000031304120738 09C00800115BEA30E03820F020EA607038E03840EB3C80131C90380F00207F0070EB8040 383009C0391830E180390FC03F001B1F7E9D20>38 D<126012F012F812681208A31210A2 122012401280050C7C9C0C>I<1380EA0100120212065AA25AA25AA35AA412E0AC1260A4 7EA37EA27EA27E12027EEA0080092A7C9E10>I<7E12407E12307EA27EA27EA37EA41380 AC1300A41206A35AA25AA25A12205A5A092A7E9E10>I<126012F0A212701210A41220A2 12401280040C7C830C>44 DI<126012F0A2126004047C830C>I< 130113031306A3130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA35A A35AA35AA35AA210297E9E15>II<5A1207123F12C7 1207B3A5EAFFF80D1C7C9B15>III<130CA2131C133CA2135C13DC139CEA011C120312021204120C12 08121012301220124012C0B512C038001C00A73801FFC0121C7F9B15>II<13F0EA030CEA0404EA0C0EEA181E1230 130CEA7000A21260EAE3E0EAE430EAE818EAF00C130EEAE0061307A51260A2EA7006EA30 0E130CEA1818EA0C30EA03E0101D7E9B15>I<1240387FFF801400A2EA4002485AA25B48 5AA25B1360134013C0A212015BA21203A41207A66CC7FC111D7E9B15>III<126012F0 A212601200AA126012F0A2126004127C910C>I<126012F0A212601200AA126012F0A212 701210A41220A212401280041A7C910C>I<007FB512C0B612E0C9FCA8B612E06C14C01B 0C7E8F20>61 D<1306A3130FA3EB1780A2EB37C01323A2EB43E01341A2EB80F0A3380100 78A2EBFFF83802003CA3487FA2000C131F80001E5BB4EBFFF01C1D7F9C1F>65 DI<90381F8080EBE0613801801938070007000E1303 5A14015A00781300A2127000F01400A8007014801278A212386CEB0100A26C13026C5B38 0180083800E030EB1FC0191E7E9C1E>IIII<90381F8080EBE061380180193807000700 0E13035A14015A00781300A2127000F01400A6ECFFF0EC0F80007013071278A212387EA2 7E6C130B380180113800E06090381F80001C1E7E9C21>I73 D76 DIIIIII< 3807E080EA1C19EA30051303EA600112E01300A36C13007E127CEA7FC0EA3FF8EA1FFEEA 07FFC61380130FEB07C0130313011280A300C01380A238E00300EAD002EACC0CEA83F812 1E7E9C17>I<007FB512C038700F010060130000401440A200C014201280A300001400B1 497E3803FFFC1B1C7F9B1E>I<39FFF01FF0390F000380EC0100B3A26C1302138000035B EA01C03800E018EB7060EB0F801C1D7F9B1F>I<39FFE00FF0391F0003C0EC01806C1400 A238078002A213C000035BA2EBE00C00011308A26C6C5AA213F8EB7820A26D5AA36D5AA2 131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE1FFC0FF3A1F003E003C001E013C13186C6D 1310A32607801F1320A33A03C0278040A33A01E043C080A33A00F081E100A39038F900F3 017913F2A2017E137E013E137CA2013C133C011C1338A20118131801081310281D7F9B2B >I<39FFF07FC0390FC01E003807800CEBC00800035B6C6C5A13F000005BEB7880137C01 3DC7FC133E7F7F80A2EB13C0EB23E01321EB40F0497E14783801007C00027F141E000613 1F001F148039FF807FF01C1C7F9B1F>I97 D<12FC121CAA137CEA1D87381E0180381C00C014E014601470A6146014E014C0381E0180 38190700EA10FC141D7F9C17>IIII<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7F E00F1D809C0D>II<12FC121CAA137C1387EA1D03001E1380121CAD38 FF9FF0141D7F9C17>I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<13C0 EA01E0A2EA00C01300A7EA07E01200B3A21260EAF0C012F1EA6180EA3E000B25839C0D> I<12FC121CAAEB0FE0EB0780EB06005B13105B5B13E0121DEA1E70EA1C781338133C131C 7F130F148038FF9FE0131D7F9C16>I<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0 391C838838391D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>IIII<3803E080EA0E19EA1805EA3807EA7003A212E0 A61270A2EA38071218EA0E1BEA03E3EA0003A7EB1FF0141A7F9116>II I<1204A4120CA2121C123CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I< 38FC1F80EA1C03AD1307120CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380381C 0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A3134013127F9116> I<39FF3FC7E0393C0703C0001CEB01801500130B000E1382A21311000713C4A213203803 A0E8A2EBC06800011370A2EB8030000013201B127F911E>I<38FF0FE0381E0700EA1C06 EA0E046C5AEA039013B0EA01E012007F12011338EA021C1204EA0C0E487E003C138038FE 1FF014127F9116>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388 A213C8EA01D0A2EA00E0A31340A25BA212F000F1C7FC12F312661238131A7F9116>III E /Fn 2 68 df43 D<3801F180EA07FFEA0E1FEA 1C071238EA7003A348C7FCA738700380A338380700121CEA0E0EEA07FCEA01F011177F96 14>67 D E /Fo 30 122 df<126012F0A2126004047D830B>46 D<130CA3131EA2132F13 27A2EB4380A3EB81C0A200017F1300A248B47E38020070A2487FA3487FA2003C131EB4EB FFC01A1A7F991D>65 D67 D73 D76 DI<00FEEB7FC0000FEB0E001404EA0B80EA09C0A2EA08E01370A21338 131CA2130E1307EB0384A2EB01C4EB00E4A21474143CA2141C140C121C38FF80041A1A7F 991D>I83 D<007FB5FC38701C0700401301A200C0148000801300A300001400B13803FFE0191A7F99 1C>I<39FFC0FF80390F003C0014106C5BEA03806D5A00015BEA00E101F1C7FC137A133E 131C131EA21317EB27801343EB41C0EB81E0EA010048137000021378481338000C7F001E 133EB4EB7FC01A1A7F991D>88 D97 D99 D<133F1307A9EA03E7EA0C17EA18 0F487E127012E0A6126012706C5AEA1C373807C7E0131A7F9915>II< EA01F0EA0718EA0E38EA1C101300A6EAFFC0EA1C00AEEAFF800D1A80990C>II<12FC121CA9137CEA1D87381E0380A212 1CAB38FF9FF0141A809915>I<1218123CA212181200A612FC121CAE12FF081A80990A>I< 12FC121CA9EB1FC0EB0F00130C5B13205B13E0121DEA1E70EA1C7813387F131E7F148038 FF9FE0131A809914>107 D<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380 391E0781C0A2001C1301AB39FF9FE7F81D107F8F20>IIII114 DI<1208A41218 A21238EAFFC0EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB 1307120CEA0E0B3803F3F01410808F15>I<39FE7F1F8039381C0700003C1306381C0C04 130E380E16081317A238072310149013A33803C1A014E0380180C0A319107F8F1C>119 D<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C5AA248C7FCA2 12E112E212E4127811177F8F14>121 D E /Fp 1 4 df<120CA2EACCC012EDEA7F80EA0C 00EA7F80EAEDC012CCEA0C00A20A0B7D8B10>3 D E /Fq 16 94 df<120112021204120C1218A21230A212701260A312E0AA1260A312701230A21218A212 0C12041202120108227D980E>40 D<12801240122012301218A2120CA2120E1206A31207 AA1206A3120E120CA21218A2123012201240128008227E980E>I<1330ABB512FCA23800 3000AB16187E931B>43 D48 D<1206120E12FE120EB1EAFFE00B157D9412 >III<1330A2137013F012011370120212041208121812101220124012C0EA FFFEEA0070A5EA03FE0F157F9412>III<1240EA7FFE13FC13F8EAC008EA80101320EA 00401380A2EA01005AA212021206A2120EA512040F167E9512>II I61 D<12FCA212C0B3AB12FCA206217D980A> 91 D<12FCA2120CB3AB12FCA2062180980A>93 D E /Fr 56 122 df<12301278127C123C121CA41238127812F012E01240060D789816>39 D48 D<12035AA25A5AB4FCA212E71207 AEEAFFF8A30D197B9816>III<137C13FC13DC 1201EA039CA2EA071C120F120E121E123C1238127812F0B512E0A338001C00A53801FFC0 A313197F9816>II<13F8EA03FC487EEA 0F07EA1C0F1238EA78060070C7FCA2EAE3F8EAEFFCB47EEAF80F487EEB038012E0A21270 A2130700381300EA3C1EEA1FFC6C5AEA03E011197E9816>I56 D<13E0487EA213B0A2EA03B8A31318EA071CA5EA0E0EA2EA0FFEA2487EEA1C07A3387E0F C038FF1FE0387E0FC013197F9816>65 D I<3801F180EA07FBEA0FFFEA1F0FEA3C07EA38031270A200F0C7FC5AA77E38700380A212 38383C0700EA1F0FEA0FFE6C5AEA01F011197E9816>II<387FFFC0B5FC7EEA1C01A490C7FCA2131CA2EA1FFCA3EA1C1CA290C7FC14E0A5EA 7FFFB5FC7E13197F9816>I<387FFFE0B5FC7EEA1C00A41400A2131CA2EA1FFCA3EA1C1C A290C7FCA6EA7F80487E6C5A13197F9816>I<3801F180EA07FBEA0FFFEA1F0FEA3C07EA 38031270A200F0C7FC5AA4EB1FC014E014C038F00380127013071238123CEA1E0FEA0FFF EA07FBEA01F313197F9816>I<387F07F038FF8FF8387F07F0381C01C0A7EA1FFFA3EA1C 01A9387F07F038FF8FF8387F07F01519809816>II<48B4FC4813806C1300EA001CB0126012F05BEA7FF85B EA1FC011197E9816>I<387F0FE038FF8FF0387F0FE0381C0780EB0F00130E5B133C5B5B 5BEA1DF0121F7F1338EA1E1C121C7FA27FA2EB0380387F07E038FF8FF0387F07E0141980 9816>II<38FC07E0EAFE0FA238 3A0B80EA3B1BA513BBEA39B3A413F3EA38E3A21303A538FE0FE0A313197F9816>I<387E 07F038FF0FF8387F07F0381D81C0A313C1121C13E1A213611371A313311339A21319131D 130DA3EA7F07EAFF87EA7F031519809816>IIIIII<387FFFE0B5 FCA2EAE0E0A400001300AFEA07FC487E6C5A13197F9816>I<387F07F038FF8FF8387F07 F0381C01C0B0380E0380A23807070013FF6C5AEA00F81519809816>I<38FE0FE0A33838 0380EA3C07001C1300A3EA1E0FEA0E0EA46C5AA4EA031813B8A3EA01B013F0A26C5A1319 7F9816>I<387E03F038FF07F8387E03F0383800E0A4381C01C0A3137113F9A213D9A200 0C1380A3EA0DDD138DA338078F00A213071519809816>I<387F1F80EB3FC0EB1F80380E 1E00131C12075BEA03B813F012015B120012017F120313B81207131C120FEA0E0EA2487E 387E0FC038FF1FE0387E0FC013197F9816>I<38FE0FE0EAFF1FEAFE0F381C0700A2EA0E 0EA26C5AA3EA03B8A2EA01F0A26C5AA8EA03F8487E6C5A13197F9816>I<387FFF80B5FC A238E007005B131E131CEA003C5B137013F0485A5B1203485A90C7FC5A381E0380121C12 3C12781270B5FCA311197E9816>I97 D<12FCA3121CA4137CEA1DFEEA1FFFEB0780381E03C0EA1C01EB00E0A6EB01C0EA1E0338 1F0780EBFF00EA1DFEEA0C7813197F9816>II<133FA31307A4EA03 C7EA0FF748B4FCEA3C1F487EEA700712E0A6EA700F12786C5A381FFFE0EA0FF7EA07C713 197F9816>II<131E137F3801FF8013C7380383 001380A2EA7FFFB5FCA2EA0380ACEA7FFC487E6C5A11197F9816>I<3803E3C03807F7E0 EA0FFF381C1CC038380E00A56C5AEA0FF8485AEA1BE00038C7FC1218EA1FFC13FF481380 387003C038E000E0A4387001C0EA7C07383FFF80380FFE00EA03F8131C7F9116>I<12FC A3121CA41378EA1DFCEA1FFE130FEA1E07121CAA38FF8FE0139F138F13197F9816>I<12 03EA0780A2EA0300C7FCA4EAFF80A31203ACEAFFFC13FE13FC0F1A7C9916>I<13301378 A213301300A4EA0FF8121F120FEA0038B3EA6070EAF0F0EAFFE0EA7FC0EA3F800D237E99 16>I108 D110 DII<387F 0FC038FF3FE0EA7F7F3807F040EBC0005BA290C7FCA8EA7FFC12FF127F13127F9116> 114 DI<12035AA4EA7FFFB5FCA20007C7FC A75BEB0380A3EB8700EA03FE6C5A6C5A11177F9616>II<387F1FC038FF9FE0387F1FC0381C0700A2EA0E0EA36C 5AA4EA03B8A3EA01F0A26C5A13127F9116>I<387F1FC0133F131F380F1E006C5AEA03B8 13F012016C5A12017FEA03B8EA073C131CEA0E0E387F1FC038FF3FE0387F1FC013127F91 16>120 D<387F1FC038FF9FE0387F1FC0381C0700120E130EA212075BA2EA039CA21398 EA01B8A2EA00F0A35BA3485A1279127BEA7F8090C7FC123C131B7F9116>I E /Fs 60 122 df<903901FF81FE010FEBEFFF903A7F81FF8F80D9FE01EB1FC03901F803 FE000314FCEA07F0EE0F80020190C7FCA7B712F0A32707F001FCC7FCB3A33A7FFF1FFFE0 A32A2A7FA927>11 D<49B4FC011F13C090387F81E0EBFC013901F807F01203EA07F0A4EC 01C091C8FCA3EC3FF8B6FCA33807F003B3A33A7FFF3FFF80A3212A7FA925>I<123C127F EAFF80A213C0A3127F123E1200A2EA0180A3EA0300A21206120E5A5A12100A157BA913> 39 D<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A21206120E5A5A12 100A157B8813>44 DI<121C127FA2EAFF80A3EA7F00A2121C09 097B8813>I<1403EC0780A2140F1500A25C141E143E143CA2147C1478A214F85C13015C A213035CA213075C130F91C7FCA25B131E133E133CA2137C1378A213F85B12015BA21203 5BA212075B120F90C8FCA25A121EA2123E123C127C1278A212F85AA21260193C7CAC22> II<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>III<140FA25C5C5C5C5BA2EB03BFEB073F130E 131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8A3C7EA7F00A8 90381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091C7FC001CC8FC A7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218127C12FEA315 C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA622>II<1238123E 003FB512F0A34814E015C0158015003870000EA25C485B5C5CC6485AA2495A130791C7FC 5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA822>III<48B4FC000F13E0381E03F0383801F8387800FC00FC13FE7EA3127C003813 FCEA0001EB03F8EB07E0EB0FC01480EB1E00A25B1338A25BA790C7FCA5137013F8487E48 7EA36C5A6C5A1370172A7CA920>63 D65 DI<91387FE0039039 07FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848147F4848143F484814 1F485A160F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C 143C6C6C14786CB4EB01F090397FF007C0011FB512800107EBFE009038007FF028297CA8 31>IIII<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039FF00 01FFD801FC7F484880484880484880485A82485A82127FA290CAFC5AA892B512F87E7F03 001300123FA26C7EA26C7E6C7E6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F90 39007FF0032D297CA835>III76 DI79 DI82 D<9038FF80600003EBF0E0000F13F8381F80FD383F001F003E1307481303A200 FC1301A214007EA26C140013C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0C6FC01 0F13E0EB007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EBE03F39 E3FFFE0000E15B38C01FF01C297CA825>I<007FB71280A39039807F807FD87C00140F00 781507A20070150300F016C0A2481501A5C791C7FCB3A490B612C0A32A287EA72F>I86 DI<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF 3801FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC03 1E1B7E9A21>97 DIIIII<9038FF80 F00003EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F 137E6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14 E06C14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806C B5120038007FF01E287E9A22>II<1207EA0F80EA1FC0EA 3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<1307 EB0F80EB1FC0EB3FE0A3EB1FC0EB0F80EB070090C7FCA7EBFFE0A3130FB3AA127C12FE14 C0EB1F801400EA7C3EEA3FFCEA0FF0133784AA15>III<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039 C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC0 7E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA320 1B7D9A25>II<38FFE1FE9038EFFF809038FE0FE0390FF803F09038F001F8 01E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038F807F09038FC0FE090 38EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC1F0EBC7FCEBC63E38 0FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114 D<3803FE30380FFFF0EA 3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6 FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B >I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000AD1470A73807F0E00003 13C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA20007131739 03F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA3390FF000F0000714E07F00 03EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D 5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE00FE001C02607F007EB03 80A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600FE1C5B15FE9039FF387E 3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2EC800701075CA22E1B7F 9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801FE1E00005BEB7F3814F8 6D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F803901E01FC0D803C013 E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF000F0000714E07F0003EB 01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D5AA3 6D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5BEA74F0EA3FE0EA0F8020 277F9A23>I E /Ft 19 121 df<143C147CEB01FC1307133FB5FCA313CFEA000FB3B3A7 007FB61280A4213879B730>49 DIII<000C15C0D80F80130701F8137F90B6128016005D5D5D 5D15C092C7FC14FCEB1F8090C9FCA8EB03FE90381FFFE0017F13F89038FC07FC9038E001 FE496C7E49EB7F8090C713C0000E15E0C8123F16F0A316F8A3121F487E487E12FF7FA216 F05B5B6CC7EA7FE0127C003C15C0003EECFF806C491300390FC003FE3907F00FFC6CB55A 6C14E06C6C1380D90FF8C7FC25397BB730>II 65 DII97 D100 D<49B47E010F13F0017F13FC9038FF81FE3A03FE007F80 D807F8133F4848EB1FC0ED0FE0485A003F15F01507485A16F8A212FFA290B6FCA301C0C8 FCA4127FA36C7E1678121F7F000F15F06C6C13016C6CEB03E06C6CEB0FC03A00FFC07F80 90393FFFFE00010F13F8010013C025267DA52C>I<13FE12FFA412071203B0EDFF800203 13F0020F7F91381E03FC91383801FE02607F4A7E01FF15805C91C7FCA35BB3A4B5D8F83F 13FEA42F3C7CBB36>104 DI110 D<9038FE01FF00FF011F13F0027F13FC9138FC07FE9039FFF0 01FF00079039C0007F806C90C7EA3FC04915E0EE1FF017F8160F17FCA2160717FEA917FC 160FA317F8EE1FF0A26DEC3FE06EEB7FC06EEBFF806E4813009039FEFC07FE91387FFFF8 021F13E0DA03FEC7FC91C9FCADB512F8A42F377DA536>112 D<3901FC03F000FFEB0FFC 4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A201FFEB7F809138003F0015 1E92C7FC5BB3A3B512FCA422267DA528>114 D<130FA55BA45BA25BA25B5A5A5A001FEB FFF0B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D1380 903801FE001E377EB626>116 D120 D E /Fu 25 123 df<126012F0A212701210A21220A21240A2040A7D830A>59 D<381FFFFE38381C0E00201304126012401338128000001300A25BA45BA4485AA41203EA 3FFC17177F9615>84 D97 D<127C1218A45AA4EA6780EA68C0EA7040EA606012C0A4EA80 C0A2EA8180EAC1001246123C0B177E960F>II<133E130CA41318A4EA0730EA18F0EA3070 1260136012C0A3EA80C013C4A212C1EA46C8EA38700F177E9612>II<130E13131337 133613301360A4EA03FCEA00C0A5EA0180A5EA0300A41202126612E65A1278101D7E9611 >I<120313801300C7FCA6121C12241246A25A120C5AA31231A21232A2121C09177F960C> 105 D<1318133813101300A6EA01C0EA0220EA0430A2EA08601200A313C0A4EA0180A4EA 630012E312C612780D1D80960E>I<121F1206A45AA4EA181C1366138EEA190CEA320012 3C123FEA3180EA60C013C4A3EAC0C813700F177E9612>I<123E120CA41218A41230A412 60A412C012C8A312D0127007177E960B>I<38383C1E3844C6633847028138460301388E 0703EA0C06A338180C061520140C154039301804C0EC07001B0E7F8D1F>III< EA1C3CEA2246EA2382130312461206A3EA0C06A2130C1308EA1A30EA19E0EA1800A25AA3 12FC1014808D12>I 114 DI<1203A21206A4EAFFC0EA0C00A35AA45A1380A2EA3100123212 1C0A147F930D>III<381C0204382606061246A238860C04120CA338181808A21410120838 0C2C203803C7C0170E7F8D19>IIII E /Fv 61 123 df<91383F03E09138C38470903901878CF001031398913803 3860D907001300A35D130EA390B6FC90380E00E05BA44A5A1338A549485AA54948C7FCA4 EBC00E1201140CEA318638798F1838F31E1038620C60383C07C02429829F1C>11 DII<130113021304130813101320136013C0EA0180A2EA03005A120612 0E120C121C12181238A212301270A21260A212E0A25AAD12401260A212207EA27E102E79 A113>40 D<13107F7F130613021303A37F1480A71303A31400A35BA21306A2130E130CA2 131C1318133813301370136013E05B485A90C7FC5A12065A5A5A5A1280112E80A113>I< 1330A31320A2381861C0381C678038064E00EA0378EA01E0A2EA07B0EA1C98EA798EEAE1 860001C7FCA25AA3121478A117>I<121C123CA41204A21208A212101220A21240128006 0E7D840E>44 DI<127012F8A212F012E005057B840E> I48 D<1302A21306130E133C13DCEA031C12001338A41370A413E0A4EA01C0A4EA0380A4 1207EAFFF80F1E7B9D17>I<131FEB61C0EB80E0EA010000021370134012041320380840 F0A3EB80E0EA0901000613C038000380EB0700130C5B13605B0003C7FC12044813405A14 80EA2001EA7E033847FF00EA41FEEA80FC1378141F7C9D17>II< 146014E0A3EB01C0A3EB0380A214005BA21306130E130C5BA25BA213635B1387EA010712 03EA060E12041208EA3F8EEA607C38801FC038001C00A25BA45BA2136013277E9D17>I< EB07C0EB18201330EBE0E0EA01C11381380380C048C7FC5A120E121E1378EA1D84EA3E06 1307123C007C13801278A338700F00A212F0130E131EEA701C1260EA7038EA3070EA10C0 EA0F80131F7B9D17>54 D<1207120F121FA2120E1200AA127012F8A212F012E008147B93 0E>58 D<14021406A2140E141EA2143F142F144F14CF148FEB010FA21302A213041308A2 0110138014071320EB3FFFEB40071380A2EA0100A2120212061204001E14C039FF807FF8 1D207E9F22>65 D<48B512C039001E00F015781538153C5BA4491378A215F0EC01E09038 F007809038FFFE009038F00F80EC03C03801E00115E0A3EA03C0A315C038078003EC0780 EC0F00141E380F007CB512E01E1F7D9E20>II<90B5128090381E00E0 15701538151C5B150EA35BA449131EA44848133CA3157848481370A215E0EC01C0380780 031580EC0E005C380F0070B512C01F1F7D9E22>I<48B512FE39001E001C150C1504A25B A490387804081500A2140C495AEBFFF8EBF018A23801E010A3EC001048481320A21540A2 48481380140115001407380F001FB512FE1F1F7D9E1F>I<48B512FC39001E0038151815 08A25BA4491310EC0800A3495A1430EBFFF0EBF0303801E020A44848C7FCA4485AA4120F EAFFF81E1F7D9E1E>II<3801FFF038001F00131E A35BA45BA45BA4485AA4485AA4485AA4120FEAFFF0141F7D9E12>73 D<3801FFF8D8001FC7FC131EA35BA45BA45BA4485AA315803903C00100A25C1402380780 06A25C141C380F0078B512F8191F7D9E1D>76 DI<01FFEB3FE0011FEB0F001504EB1780A201275BEB23C0A39038 41E010A214F0134001805B1478A348486C5AA3141E00025CA2140FA24891C7FC80A2120C 001C1302EAFF80231F7D9E22>I<48B5128039001E00E015701538153C5BA4491378A215 F015E09038F003C0EC0F00EBFFFC01F0C7FC485AA4485AA4485AA4120FEAFFF01E1F7D9E 1F>80 D<90B5FC90381E03C0EC00E0157015785BA44913F0A2EC01E015C09038F0070014 1EEBFFF0EBF01C48487E140F8015803903C00F00A43807801E1508A21510000F130ED8FF F01320C7EA03C01D207D9E21>82 D<903807E04090381C18C09038300580EB600313C000 011301018013001203A391C7FC7FA213F86CB47E14E06C6C7E131FEB01F8EB0078A21438 A21220A2143000601370146014E000705B38E80380D8C606C7FCEA81F81A217D9F1A>I< 000FB512FC391E03C03800181418001014081220EB078012601240A239800F0010000014 00A3131EA45BA45BA45BA41201387FFF801E1F799E21>I<3BFFE1FFC07F803B1F003E00 1C00001E013C13181610143E021E5B121F6C013E5BA2025E5B149E4BC7FC9038011E02A2 01025BA201045BA201085BA201105B13205D01405BA2D9801FC8FC80EB000E7E0006130C A2000413082920779E2D>87 D<9039FFF07FE090391F801F0090380F000C6E5A01071310 5D6E5A01035B02C1C7FC14E2EB01E614EC14F86D5AA280A2EB017CEB023C1306EB043EEB 081E1310EB201F497E1380D801007F4813071206001F497E39FFC03FF8231F7E9E22>I< EB1FC0A2EB1800A25BA45BA45BA4485AA448C7FCA41206A45AA45AA45AA45AA3127F12FE 122D7EA10E>91 D93 D97 DI<137EEA01C138030080EA 0E07121E001C1300EA3C0248C7FCA35AA5EA70011302EA3004EA1838EA07C011147C9315 >I<1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938070780EA0E03121C123C3838 07001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F070015207C9F17>I<13 7CEA01C2EA0701120E121C123CEA3802EA780CEA7BF0EA7C0012F0A4127013011302EA38 04EA1838EA07C010147C9315>I<1478EB019CEB033CA2EB07181400A2130EA5EBFFE0EB 1C00A45BA55BA55BA5485AA35B1231007BC7FC12F31266123C1629829F0E>III<13C0EA01E0A213C0 C7FCA7120E12131223EA4380EA4700A21287120EA35AA3EA38401380A21270EA31001232 121C0B1F7C9E0E>III I<391C0F80F0392630C318394740640C903880680EEB0070A2008E495A120EA34848485A A3ED70803A3803807100A215E115623970070064D83003133821147C9325>I<381C0F80 382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB038400381388A2EB07 08EB031000701330383001C016147C931A>I<137CEA01C338030180000E13C0121E001C 13E0123C1278A338F003C0A3EB07801400EA700F130EEA3018EA1870EA07C013147C9317 >I<3801C1E0380262183804741C1378EB701EA2EA08E01200A33801C03CA31438380380 78147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2B47E171D809317>III<13FCEA0302EA0601EA0C031307 13061300EA0F8013F0EA07F8EA03FCEA003E130E1270EAF00CA2EAE008EA4010EA2060EA 1F8010147D9313>II<000E13C0001313E0382301C0EA4381EA 4701A238870380120EA3381C0700A31410EB0E201218A2381C1E40EA0C263807C3801414 7C9318>I<380E0380EA1307002313C0EA4383EA4701130000871380120EA3381C0100A3 1302A25BA25BEA0E30EA03C012147C9315>I<000EEBC1C0001313E3392301C3E0384381 C1384701C015603987038040120EA3391C070080A3EC0100A21306EB0F02000C5B380E13 083803E1F01B147C931E>I<38038380380CC440381068E013711220EB70C03840E00012 00A3485AA314403863808012F3EB810012E5EA84C6EA787813147D9315>I<000E13C000 1313E0382301C0EA4381EA4701A238870380120EA3381C0700A4130E1218A2EA1C1EEA0C 3CEA07DCEA001CA25B12F05BEAE060485AEA4380003EC7FC131D7C9316>I<3801C04038 03E080EA07F1380C1F00EA0802C65A5B5B5B5B5B48C7FC1202485AEA08021210EA3E0CEA 63FCEA41F8EA80E012147D9313>I E /Fw 52 123 df<137013F0EA01E0EA03C0EA0780 EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C 24799F18>40 D<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA 01C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>II<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<12 1C123E127E127F123F121F1207120E121E127C12F81260080C788518>I48 DII<1218123C127EA212 3C12181200A81218123C127EA2123E121E120E121C123C127812F01260071A789318>59 D<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C 7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E01303EB00C013187E9918>I<387FFFC0 B512E0A3C8FCA4B512E0A36C13C0130C7E9318>I<137013F8A213D8A2EA01DCA3138CEA 038EA4EA0707A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B 18>65 DIIIII<3801F1C0EA03FDEA0FFFEA1F0FEA1C031238130112 70A290C7FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FD EA01F1141C7E9B18>I73 D<387F07F038FF87F8387F07F0381C03C0EB07801400130E131E5B13385B13F0 121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8387F03F0 151C7F9B18>75 DI<38FC01F8EAFE 03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C 7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213 311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>IIIII<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1FF0EA07FE C67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE00EAE7F8 131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF 83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300EA007C171C809B18>I<38 FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3 EA00F8A21370A9EA01FC487E6C5A151C7F9B18>89 D97 D<127E12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E14 38A6000F1370A2EB80E013C1EBFFC0000E138038063E00151C809B18>IIIII<3801E1F03807FFF8 5A381E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC0 4813E0387801F038700070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F 9318>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7FC 38FFE7FE387FC7FC171C809B18>II108 D<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E171480 9318>IIII<38FF0FC0EB3FE0EB7FF0EA07F0EB E060EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>114 DI<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1 C013FF6C1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F0338 07FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E03 80A338070700A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<387F8FF000FF 13F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC 1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>121 D<383FFFF05AA2387001E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F00 70121E5A5AB512F0A314147F9318>I E /Fx 39 91 df<1218123C127CA2123C1204A212 08A21210A2122012401280060E7D840D>44 DI<1230127812F8 1278127005057C840D>I<14011403A21406A2140CA214181430A21460A214C0A2EB0180 A2EB0300A21306A25B5BA25BA25BA25BA2485AA248C7FCA212065AA25AA25AA25AA25AA2 5A182D7FA117>I<137EEA01C338030180000713C0EA0E0014E05AA2EA3C0112381278A5 38F003C0A51480130712E01400A2130E1260EA701CEA3038EA3870EA0FC0131F7C9D17> I<13181338EA01F8EA0E701200A513E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B 9D17>II<137F380183C0380201E0EA0400000713F05A1301A2000013 E0A2EB03C0EB07801400131CEA01F8EA000E7F148014C0130313071230127812F8A200F0 138038800F00EA400E6C5AEA1078EA0FE0141F7D9D17>I<1460A214E0EB01C013031305 130D13091311EB2380134313C31383EA010312023804070012081218121012201240B512 F038000E00A55B131E3801FFC0141E7E9D17>I<380180303803FFE014C0140013FC0002 C7FCA25AA4137CEA0587380A0380EA0C01000813C0120014E0A4387003C012F812F000E0 1380EA800700401300130E6C5AEA1070EA0FC0141F7D9D17>II<1220383FFFF04813E014C03840008038C0010012801302485A5B5B5BA25B13C048 5AA2120390C7FC5AA25A120EA2121EA35AA31218141F7A9D17>I<133FEBC1C038010060 00021320481330120CA3000E1360A2380F80C0EBC1803807F600EA03FC120113FF38063F 80EA0C1F381007C0EA3003EA600113005AA31480EB0100EA6003EA3004EA1818EA07E014 1F7D9D17>I<137EEA01C338030180000613C0120EEA1C00003C13E0A213011278A41303 A2003813C01307EA1C0BEA0C133803E380EA0007A214005BEA600EEAF01C1318485AEA80 60EA41C0003FC7FC131F7C9D17>I<1408140C141C143CA2147C147E149EA2EB011EA213 02801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100A21202EC 01E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C090387801E0EC 00F04913F8A515F03801E001EC03E015C0EC0F809038FFFE009038E00F803903C003C0EC 01E015F0A21400A2485A1401A215E01403EC07C0390F000F80EC3E00B512F01D1F7E9E20 >II<0007B57E3900F801E0903878007081497F15 1E150E150FA348481480A6484814005DA3151E153E4848133C5DA25D4A5A4A5A260F000F C7FC143CB512F0211F7E9E23>I<0007B512FC3900F8007C0178131C150C5B1504A41404 3901E00800A31438EBFFF8EBE0383803C010A4EC00081510485AA21520A2156015C0380F 00011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B1508A53901 E00800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E >II<3A07FF83FFC03A00F800 7C000178133CA2495BA648485BA490B5FCEBE0004848485AA64848485AA64848485A0180 7F39FFF07FF8221F7E9E22>I<3807FF803800F8001378A25BA6485AA6485AA6485AA648 C7FC7FEAFFF0111F7E9E10>I<3A07FF803FE03A00F8001F000178130C5D4913205D5D4A C7FC1402140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F 48487E81140781140381380F00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA6485AA41580EC0100EA0780A25C1402140614 0E380F001E147CB512FC191F7E9E1C>IIII<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC 01E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>II<3807FFFE3900F8078090387801E0EC00F05B15F8A415F03801 E00115E0EC03C0EC0780EC1E00EBFFF03803C03880141E140EA2140F48485AA51502D80F 001304EB800F39FFF00788C7EA01F01F207E9E21>II<003FB512F0383C078000301430126039400F0010A212C01280A3D8001E13 00A65BA65BA65B7F383FFFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB0180140000 1EEB0100A6481302A6485BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01 F81D20799E22>I<39FFF001FE391F8000F86CC712601540A215807F0007EB0100A21402 1406EBC00400035BA25CA26C6C5AA25CA26D5A120001F1C7FC13F2A213FC137C1378A213 70A213201F207A9E22>I<3BFFF07FF81FF03B1F000FC007C0001E903907800380001FED 01006C1502140F5EEC17C002135B142301805C000713435E14C3913883E0401481D98101 5B13C1D803C213E193C7FC13C415F2EBC80015F4EA01F015F85B5D5B15605B000014402C 207A9E2F>I<3A03FFC0FFC03A007F003E00013C1318013E1310011E5B011F5B6D5B0281 C7FCEB078314C2EB03C414E8EB01F0A2130080A2EB017CEB023CEB043EEB0C1EEB081F49 7E132001407FEB8007000180EB0003000780391F8007F039FFC01FFE221F7F9E22>I<39 FFF001FF391F8000786CC712606D134000071480EBC00100031400EBE0025C12016D5A00 005B6D5A1378EB7C40EB3C80013FC7FC7F131EA3131C133CA513381378137C3807FF8020 1F7A9E22>I<0003B512F09038F001E0EB8003010013C00006EB0780EC0F000004131E14 3E143C5CC75A495A13035C495A49C7FC131E133E133C4913805B3901E00100120313C048 485A380F0002001E1306003E130E003C131E4813FCB5FC1C1F7E9E1C>I E /Fy 57 123 df<137EEA01C33903018080380E00C0001E13E0001CEBE100123C5A14E2 14E45A14E814F0A25C1270EB016038300671381818323807E01C19147E931D>11 D<14F8EB03061304EB080313101320EB4007A2138014063801000E140CEB07F8EB047038 0207D8EB001CA2141E5AA448133CA3147800181370001413F014E0381201C038218700EA 207C90C7FCA25AA45AA318297F9F1A>I<133EEB7FC013833801018090C7FC7FA27F1200 7FA213701378A2EA01BCEA071E120EEA1C0E1218EA380F12707FA2EAE006130EA2130CA2 EA6018A26C5A6C5AEA0F8012217EA014>14 D<137CEA0180EA0700120E5A123C12381278 A2EA7FF0EAF000A31270A312301238EA0C18EA07E00E147E9312>I<131E1363EBC380EA 01C1EA0381EB01C01207120F120EEA1E03121C123CA338780780EA7FFFA2EA780738F00F 00A3130E131EEAE01C133C13381330EA60705BEA70C0EA3180001EC7FC12207E9F15>18 D<1207EA01C07F12007F1370A213781338A2133C131CA2131E130EA2130F7F131FEB3780 136313C3380183C0EA0381EA0701000E13E0EA1C005A48137012F048137848133815207D 9F1B>21 D26 D<380FFFF05A5A3860400012C0EA80C012005B1201A4120390C7FCA25AA3120E12061414 7E9314>28 D<127012F8A3127005057C840D>58 D<127012F012F8A212781208A31210A3 1220A21240050E7C840D>II<144014C0EB0180A3EB0300A31306A25BA35BA35BA25B A35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D7EA117>I<12E01278121E EA0780EA01E0EA0078131C1307EB03C0EB00F0143C140FEC03C0A2EC0F00143C14F0EB03 C049C7FC131C1378EA01E0EA0780001EC8FC127812E01A1A7C9723>I<131FEB60C0EB80 6038010030000213183803801C13C0EA0780EA0300C7121EA3133E13C13803809C380700 7C120E5A123C003813781278A214F05A14E0A2EB01C0A2EB03800070130013066C5AEA1C 38EA07E017227EA018>64 D<14021406140EA2141E141F142F146F144F148FA2EB010F13 03130201041380A2EB0807131813101320A2EB7FFFEB8007A2D8010013C0140312025AA2 120C003C1307B4EB3FFC1E207E9F22>I<48B512E039001E0078153C151C151E5BA44913 3CA2157815F09038F003C090B512009038F007C0EC00E0484813F01578A3485AA3157048 4813F0EC01E0EC03C0EC0780390F001E00B512F01F1F7E9E22>I<027F1380903803C0C1 90390E0023000138131749130F5B48481306485A48C7FC5A000E1404121E4891C7FCA25A A45AA400701420A35D6C5CA26C49C7FC6C13066C13183801C06038007F8021217F9F21> I<48B512E039001E0038150E81A249EB0380A2ED01C0A25BA4491303A44848EB0780A216 005D4848130E151E151C5D48485B5D4A5A0207C7FC380F001CB512F0221F7E9E26>I<48 B6FC39001E001E1506A215025BA4491304EC0200A3495A140CEBFFFCEBF00C3801E008A4 4848C7FCA4485AA4120FEAFFFC201F7E9E1D>70 D<027F1380903803C0C190390E002300 0138131749130F5B48481306485A48C7FC5A000E1404121E4891C7FCA25AA45AEC3FFEEC 00F0A20070495AA46C495AA26C13076C13056CEB19803801C06026007F80C7FC21217F9F 24>I<3801FFF038001F00131EA35BA45BA45BA4485AA4485AA4485AA4120FEAFFF0141F 7E9E14>73 D<3801FFF8D8001FC7FC131EA35BA45BA45BA4485AA3154048481380A21401 150048485AA21406140E380F007CB512FC1A1F7E9E1F>76 DI<48B4EB1FF8D8001FEB03C091388001 001317A2903823C002A2EB21E0A2903841F0041340A2147801805B147C143CA248486C5A A2140FA2000214A01407A2EC03E0485CA21401120C001E6D5AEAFFC0251F7E9E25>I<48 B512E039001E0078151C150E150F5BA449131EA2153C15784913E0EC03C09038FFFE0001 F0C7FC485AA4485AA4485AA4120FEAFFF8201F7E9E1D>80 D<48B5128039001E00F01538 151CA249131EA449133CA2157815F09038F001C0EC0700EBFFF8EBF00E48487E15801403 15C03903C00780A43907800F001502A21504000F130739FFF80308C7EA01F01F207E9E23 >82 D<903803F04090380C08C09038300580EB600313C000011301018013001203A391C7 FC7F7F13FC3801FFC06C13F06D7E131FEB01FCEB007C143C141CA21220A2141800601338 1430147000705B38E80180D8C603C7FCEA81FC1A217E9F1C>I<000FB512FC391E03C038 00181418001014081220EB078012601240A239800F001000001400A3131EA45BA45BA45B A41201387FFFC01E1F7F9E1B>I<39FFF001FF390F80007890C712301520154015807F00 07EB01005C14025CA25C6D5AA200035B146014405CA201C1C7FC13E2120113E413E8A213 F0A25B5B12005B20207E9E1B>86 D<39FFF001FF390F80007815301540000714C06D1380 0003EB0100EBE0025C00015BEBF018141000005B6D5AEB7880137D91C7FC7F133CA21338 1378A3137013F0A4485AEA1FFE201F7F9E1A>89 D<90387FFFFE9038FC003C01F0137801 C013F090388001E00001EB03C09038000780140FEC1F000002131EC75A5C5C495A495A49 5A130F91C7FC131E4913405B491380485A3803C0010007140048485AEB0002001E130648 131E48137CB512FC1F1F7E9E1F>I97 DI<137CEA01C338070080EA0E07 121E001C1300EA3C0248C7FCA35AA5EA70011302EA3004EA1838EA0FC011147E9314>I< 1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938070780EA0E03121C123C38380700 1278A3EAF00EA31410EB1C20A2EA703CEB5C40EA308C380F078015207E9F18>I<137CEA 0182EA0701120E121C123CEA3802EA780CEA7BF0EA7C0012F0A4127013011302EA3004EA 1838EA0FC010147E9315>I<147C14CEEB019E1303140CEB0700A4130EA3EBFFF0EB0E00 A25BA55BA55BA55BA45B1201EA3180127948C7FC1262123C17297E9F16>III<13E01201A2EA00 C01300A7120E1213EA23801243A3EA87001207A2120EA25AA21320EA3840A31380EA1900 120E0B1F7E9E10>I<14C0EB01E0A214C090C7FCA7131E1323EB43801383EA0103A23802 07001200A3130EA45BA45BA45BA21230EA78E0EAF1C0EA6380003EC7FC1328819E13>I< EA01E0120FEA01C0A4485AA448C7FCA2EB01E0EB0610380E0870EB10F013201460381C40 00EA1D80001EC7FCEA1FC0EA38707FA2EB1C2038703840A3EB188012E038600F0014207E 9F18>II<391E07C07C39231861869038A032033843C034D980381380A23A87007007 001207A3000EEBE00EA3ED1C10261C01C01320153816401518263803801380D81801EB0F 0024147E9328>I<381E0780382318C0EBA0603843C0701380A2388700E01207A3380E01 C0A3EB0382001C1384EB07041408130300381310381801E017147E931B>I<137CEA01C3 38030180000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F130EEA30 18EA1870EA07C013147E9316>I<3803C1E038046218EB741CEA0878EB701EA2EA10E012 00A33801C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2 EAFFC0171D819317>III<13 FCEA030338060080EA0C0113031400000EC7FCEA0F8013F86C7EEA01FEEA001F13071270 EAF006A2EAE004EA4008EA2030EA1FC011147E9315>II<00 0F136038118070002113E013C01241EA4380388381C0EA0701A3380E0380A31484EB0708 120CA2380E0F10EA06133803E1E016147E931A>I<381E01C0EA230314E0EA4381130000 47136000871340120EA3481380A3EB0100A213025B120CEA0E18EA03E013147E9316>I< 000FEB607039118070F00021EBE0F801C0137800411438D843801318398381C010EA0701 A3390E038020A31540A2158013070006EB8100380709C23801F07C1D147E9321>I<3803 C1C0380C622038103470EB38F012201460384070001200A35BA314203861C04012F11480 12E238446300EA383C14147E931A>I<001E13600023137014E0EA438013001247388701 C0120EA3381C0380A4EB07001218121C5BEA0C3EEA03CEEA000EA25BEAF0181338485AEA C060EA41C0003FC7FC141D7E9316>I<3801C0203803F0403807F8C0380C1F8038080100 EA00025B5B5B13605B48C7FC120248138038080100485AEA3F06EA63FEEA40FCEA807013 147E9315>I E /Fz 67 123 df<90380FF07F90397FF9FF809039F83FC7C03901E07F8F 0003140FEA07C091383F07806EC7FCA5B612F8A22607C01FC7FCB0393FF8FFF0A2222080 9F1F>11 DII<1330136013C0EA018012 03EA07005A120E121E121C123CA212381278A412F85AA97E1278A41238123CA2121C121E 120E120F7EEA03801201EA00C0136013300C2D7CA114>40 D<12C012607E7E121C7E120F 7E1380120313C0A2120113E0A413F01200A9120113E0A413C01203A21380120713005A12 0E5A12185A5A5A0C2D7DA114>I<13E0487E6C5AA23870E1C038F8E3E0EAFCE7387E4FC0 380F5E00EA03F8A2EA0F5E387E4FC038FCE7E0EAF8E33870E1C03800E000A2487E6C5A13 147DA11A>I45 D<1238127C12FEA3127C123807077C860F>I48 D<137013F0120712FF12F91201B3A438 7FFFC0A2121D7D9C1A>IIII<001C13E0EA1FFF14C01480140013FC13C0 0018C7FCA4EA19FE381FFF80381E07C0381803E0381001F0120014F8A2127812FCA314F0 EA7803007013E0383C0FC0380FFF00EA03FC151D7E9C1A>I<133F3801FFC03807C0E0EA 0F81381F03F0121E123E127CEB01E090C7FCEAFC1013FF00FD13C0EB03E038FE01F0A200 FC13F8A4127CA3003C13F0123E381E03E0380F07C03807FF803801FE00151D7E9C1A>I< 1260387FFFF8A214F014E014C038E0018038C00300A21306C65A5B13381330137013F0A2 485AA21203A41207A56C5A6C5A151E7D9D1A>II<1238127C12FEA3127C12381200A61238127C12FEA3127C123807147C93 0F>58 D<14E0A2497EA3497EA2EB06FCA2EB0EFEEB0C7EA2497EA201307F141F01707FEB 600FA2496C7E90B5FC4880EB8003000380EB0001A200066D7EA2000E803AFFE00FFFE0A2 231F7E9E28>65 DI<903807FC0290383FFF0E9038FE03DE3903F000FE4848133E4848131E 485A48C7120EA2481406127EA200FE1400A7127E1506127F7E150C6C7E6C6C13186C6C13 386C6C13703900FE01C090383FFF80903807FC001F1F7D9E26>IIII<903807FC0290383FFF0E9038FE03DE3903F0 00FE4848133E4848131E485A48C7120EA2481406127EA200FE91C7FCA591381FFFE0A200 7E9038007E00A2127F7EA26C7E6C7E6C7E6C6C13FE3800FE0190383FFF8E903807FC0623 1F7D9E29>III76 DII IIII<3803FC08380FFF38381E03F8EA 3800481378143812F01418A26C13007EEA7FC013FE383FFF806C13C06C13E06C13F0C613 F81307EB00FC147C143C12C0A36C1338147800F8137038FE01E038EFFFC000811300161F 7D9E1D>I<007FB512FCA2397C07E07C0070141C0060140CA200E0140E00C01406A40000 1400B10003B512C0A21F1E7E9D24>III<3CFFFC0FFFC0FFE0A23C0FC000FC000E007F00076E130CA26D151C0003D901BF1318 A2D801F85D9138031F80A22600FC076D5AEC060F01FE15E0903A7E0C07E0C0A2013FECE1 8091381803F1A2D91FB801FBC7FCECB00102F013FF6D486C5AA201075C4A137CA2010314 784A133801011430331F7F9E36>I<003FB51280A29038803F00383E007F0038137E5CEA 70015C386003F013075CC6485A131F5C49C7FC5B137E5B0001EB018013F8EA03F01207EB E003EA0FC0001F1400495A48485A485B007E137FB6FCA2191F7D9E20>90 D<12FFA312E0B3B3A312FFA3082D7BA10F>I<12FFA31207B3B3A312FFA3082D7FA10F> 93 D97 DIIIII<38 03FC3C380FFFFE381E079E383C03DE007C13E0A5003C13C0381E0780381FFF00EA13FC00 30C7FCA21238383FFF806C13F06C13F84813FC3878007C0070133E00F0131EA30078133C A2383F01F8380FFFE000011300171E7F931A>II<121C123E127FA3123E121CC7FCA6B4FCA2 121FB0EAFFE0A20B217EA00E>I107 DI<3AFE0FE03F8090391FF07FC03A1E 70F9C3E09039407D01F0EB807E121FEB007CAC3AFFE3FF8FFEA227147D932C>I<38FE0F C0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE7FFA218147D931D>I<48B4FC000713C0 381F83F0383E00F8A248137CA200FC137EA6007C137CA26C13F8A2381F83F03807FFC000 01130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143FA6143E14 7E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I<3801F8183807 FE38381F8778383F01F8123EEA7E00127C12FCA6127C127EA2EA3F01EA1F87EA0FFEEA03 F8C7FCA7EB07FFA2181D7E931C>II I<1203A45AA25AA2123FEAFFFCA2EA1F00AA1306A5EA0F8CEA07F8EA03F00F1D7F9C14> I<38FF07F8A2EA1F00AD1301A2EA0F063807FCFF6C5A18147D931D>I<39FFE07F80A239 1F001C00380F8018A26C6C5AA26C6C5AA2EBF0E000015B13F900005B13FF6DC7FCA2133E A2131CA219147F931C>I<3AFFC7FE1FE0A23A1F00F0030014F8D80F801306A29038C1BC 0E0007140CEBC3BE3903E31E18A29038F60F380001143001FE13B03900FC07E0A2EBF803 01785BA2903830018023147F9326>I<38FFC0FFA2380F80703807C0606D5A3803E180EA 01F36CB4C7FC137E133E133F497E136FEBC7C0380183E0380381F048C67E000E7F39FF81 FF80A219147F931C>I<39FFE07F80A2391F001C00380F8018A26C6C5AA26C6C5AA2EBF0 E000015B13F900005B13FF6DC7FCA2133EA2131CA21318A2EA783012FC5BEAC0E0EAE1C0 EA7F80001EC8FC191D7F931C>I<383FFFE0A2383C07C038380F80EA701F38603F00133E 5BC65A1201485AEBE060EA07C0EA0F80001F13E0383F00C0EA3E01EA7C03B5FCA213147F 9317>I E /FA 37 123 df<92261FFF80EBFFC00203B5D8F01F13F0021FDAF87F13FC91 267FF801B5EAC0FE902801FFC0003FEB01FF010790C738FFFC03D90FFC4949481380495A 013F4A13F05C017F16E04A70130001FF6E6E5A735A70153097C7FCABBA12FEA4C601E0C7 01E0C8FCB3B3A2007F9026FFC07FEBFFF0A449487EC744>11 D 45 DI49 D67 D70 DI73 D76 D<923803FFF0037FEBFF800203B612F0020F9038003FFCDA3FF8EB07FFDAFF E0010113C0010301809038007FF04990C86C7E49486F7E49486F7E49486F7E49486F7F01 FF8448496F7F48854A8148854A167F4885A24890CA6C7EA24885A3481A804983A400FF1A C0AE007F1A806D5FA36C1A00A36C6D4C5AA36C6D4C5AA26C616C6D4B5BA26C6D4B5B6C6D 4B5B017F606E5D6D6C4B90C7FCD90FFFED3FFC6D01C0ECFFF86D6D495B010001F8010713 C091277FFF807F5B020F90B500FCC8FC020315F0DA007F1480030301F0C9FC4A497AC757 >79 DI82 DI<003FBA12FCA49026FE00079038E0007F01F0170FD87FC0EF03FE49170190C71600 007E197EA2007C193EA30078191EA400F8191F48190FA5C81700B3B3A60103B812C0A448 467CC551>I86 D<90380FFFF090B6FC000315C03A07F8007FF0486CEB1FFCED07FE486C6D7E838183816C 48816C5A6C5AC9FCA5157F023FB5FC0103B6FC011F13F090387FFE003801FFE0481380D8 0FFEC7FC485A5B123F485AA2485AA45DA26C6C5BED077F6C6C130F6C6C013E13F83C0FFF 80F83FFFE000039038FFF01FC6ECC00F90390FFE0003332E7CAD38>97 DI<91381FFFC049B512FC0107 14FF903A1FF8007F80D97FE0EBFFC0EBFF8048494813E0485A1207485AA248486D13C000 3FED7F80EE3F00007F92C7FC5BA312FFAA127FA27FA2123FA26C6C15F0120F6DEC01E012 076C6CEC03C06C6DEB07806C6DEB0F00D97FF0133E90391FFC01FC0107B512F0010114C0 9026001FFCC7FC2C2E7CAD34>IIII<171FDA7FF0EBFFC00107B5000313E0011FECC7E7903B7FE03FFF0FF09039FF800F FC48EB00074848EB03FE00079238FF07E0496DEB03C0000FEE8000A2001F82A8000F5EA2 000793C7FC6D5B00035D6C6C495A6C6D485A9138E03FF0D801DFB512C0D803C791C8FC90 38C07FF04848CAFCA37FA27FA213F890B612F06C15FF17E06C8217FC6C826D8148B81280 1207D80FF0C7001F13C0D81FC014014848EC007F007FEE3FE048C9FC171FA56C6CED3FC0 A26C6CED7F806C6CEDFF00D80FF8EC03FED803FEEC0FF82601FFE0EBFFF06C6CB612C001 0F4AC7FCD9007F13C034447DAE3A>II<137C48B4FC4813804813C0A24813E0A56C13C0A26C13 806C1300EA007C90C7FCACEB7FC0B5FCA412037EB3B2B6FCA418497CC820>I108 D<9027FF8003FFEC03FFB5011F01E0 011F13E0037F01F8017F13F8913D81F80FFC01F80FFC913D83C007FE03C007FE0003903D 878003FF078003FF6CD98E00EC0E00029C039C8102B86D01B87F06F88102F05DA24A5DA3 4A5DB3A9B66CB66CB61280A4592E7BAD62>I<9039FF8007FEB590383FFFC04B13F09139 81F81FF8913983C00FFC00039039870007FE6C138E029C8002B87F188014F0A25CA35CB3 A9B60081B6FCA4382E7BAD41>II<90397FC01FFCB590B57E02C314F09139CFE03FFC9139DF0007FE 000301FC6D7E6C496D13804A6D13C04AEC7FE04A15F0EF3FF8A2EF1FFCA218FEA2170FA2 18FFAA18FE171FA218FCA2173F18F818F0177F6EECFFE06E15C06E4913806E49130002DF EB0FFE9139CFC03FF802C3B512E002C01480DB1FF8C7FC92C9FCB0B67EA438427CAD41> II<90397F803F80B5EBFFE0 028113F8913883C3FC91388707FE0003138E6C90389C0FFF14B8A214F0A2ED07FE9138E0 03FCED01F892C7FCA25CB3A8B612E0A4282E7DAD2F>I<90390FFE01C090B512C7000314 FF3807F801390FC0007F48C7121F48140F007E1407A2150312FEA27E7F01E090C7FC13F8 387FFFC014FF6C14E015F86C806C14FF6C1580000115C06C6C14E0131F010014F0140391 38007FF80070141F00F0140F15077E1503A26C15F0A27E6CEC07E07F6DEB0FC001F0EB1F 80D8FEFCEBFF0039F87FFFFCD8F01F13F0D8E0031380252E7CAD2E>IIII120 D<001FB712E0A39026FE000313C001F0491380 01C05B4949130090C75B4B5A003E147F5E4B5A003C495B5C5E4A5B5CC74890C7FC5D4A5A 147F4A5A5D495B5B495B92388001E04913005B495A4A1303494814C013FF5C485B484913 075A4A130F4890C7FC48151F4848147F49ECFF804848130FB8FCA32B2E7DAD34>122 D E /FB 28 108 df0 D<127012F8A3127005057C8D0D>I<0040 130400C0130C006013186C13306C13606C13C03806018038030300EA0186EA00CC137813 30A2137813CCEA0186EA030338060180380C00C048136048133048131848130C00401304 16187A9623>II8 D12 D<14FF010713E090381F00F80178131E01 E01307D80180EB018048C812C000061560481530A248151848150CA2481506A4481503A9 00601506A46C150CA26C15186C1530A26C15606C15C06C6CEB0180D800E0EB0700017813 1E011F13F8903807FFE0010090C7FC282B7EA02D>III< B612FC7EC9FCA7B612FCA2C9FCA7007FB512FCB6FC1E147E9423>17 D<15C01403EC0F00143C14F0EB03C049C7FC131C1378EA01E0EA0780001EC8FC127812E0 1278121EEA0780EA01E0EA0078131C1307EB03C0EB00F0143C140FEC03C014001500A700 7FB51280B612C01A247C9C23>20 D<12C012F0123C120FEA03C0EA00F01338130E6D7EEB 01E0EB0078141EEC0780EC01C0EC0780EC1E001478EB01E0EB0780010EC7FC133813F0EA 03C0000FC8FC123C127012C0C9FCA7007FB51280B612C01A247C9C23>I<13C0A3485AA2 120390C9FC12065A121C1230B712FEA20030C9FC121C120C7E7E7F1201A26C7EA327187D 962D>32 D<1506A381A216801501ED00C0166016701618B8FCA2C912181670166016C0ED 018015031600A21506A328187E962D>I49 DI<140CA21418A21430 A21460A214C0A2EB0180A3EB0300A21306A25BA25BA25BA25BA25BA2485AA248C7FCA212 06A35AA25AA25AA25AA25A1240162C7AA000>54 D58 D<1308131CA21336A31363A2EBC180A2380180C0A238030060A300067FA2487FA2487FA2 487FA3487FA248EB01801400191C7E9A1E>94 D<00C0148014010060EB0300A26C1306A3 6C5BA26C5BA26C5BA26C5BA36C6C5AA23800C180A20163C7FCA21336A3131CA21308191C 7E9A1E>I<124012C0B3B3A7EAFFC0127F0A2E79A114>98 D<134013C0B3B3A712FFA20A 2E7EA114>III<130F1338136013E0EA01C0AFEA0380EA0700121E12F8121E1207EA0380 EA01C0AFEA00E013601338130F102D7DA117>I<12F8121E1207EA0380EA01C0AFEA00E0 13601338130F1338136013E0EA01C0AFEA0380EA0700121E12F8102D7DA117>I<12C0B3 B3A9022D7BA10D>106 DI E /FC 87 124 df<80497EA2497EA2EB05F01304497E1478EB107C143CEB203E141EEB40 1F8001807F1407D801007F14030002801401488014004880157848147C153C48143E151E 007FB6FCA2B7128021207E9F26>1 D<90381F83E09038F06E303901C07878380380F890 3800F03048EB7000A7B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2383FC3FC1620809F 19>II<9038 1F81F89038F04F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907007007B23A 3FE3FE3FE02320809F26>I34 D<137813841201EA03021207A45BA25BA2EA03909038 A00FFC9038C001E0EC00C000011480EC0100EA02E000041302EA08703818780438303808 EA703CEB1C10EAF00EEB0F20EB07C09038038004387001C0397802E0083938047018391C 183C303907E00FC01E227EA023>38 D<127012F812FCA212741204A31208A21210A21220 1240060E7C9F0D>I<13401380EA01005A12061204120C5AA212381230A212701260A412 E0AC1260A412701230A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12 407E12307E1208120C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A 120812185A12205A5A0A2E7EA112>II<1303AFB612FCA2D80003C7FCAF 1E207E9A23>I<127012F012F8A212781208A31210A31220A21240050E7C840D>II<127012F8A3127005057C840D>I<144014C0EB0180A3EB0300A31306A2 5BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D7EA117> II<13801203120F12F31203B3A6EA07C0EAFF FE0F1E7C9D17>III<1306A2130EA2131E132EA2134E138EA2EA010E1202 A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>II<137CEA0182EA07 01380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB03 80A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240 387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B1201A412 03A76C5A131F7E9D17>III<127012F8A312701200AA 127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A212781208A3 1210A31220A21240051D7C930D>I<007FB512F8B612FCC9FCA8B612FC6C14F81E0C7E90 23>61 D63 D<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB801EA248B5FCEB000F A20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F9F22>65 DI<90380FE0109038381C30 9038E002703803C00139078000F048C71270121E15305A1510127C127800F81400A91278 007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C217E9F21 >IIII<90380FE01090 38381C309038E002703803C00139078000F048C71270121E15305A1510127C127800F814 00A7EC3FFEEC01F000781300127C123CA27EA27E6C7E3903C001703900E002309038380C 1090380FF0001F217E9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FFF07FF8 1D1F7E9E22>II<3807FFC038003E00131EB3A3 122012F8A3EAF01CEA403CEA6038EA1070EA0FC012207F9E17>I<39FFF007FC390F0003 E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E01341EB80F0EB0078 A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>IIIIIIII<3803F040 380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4FC0007 1380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C60300EA 81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C0143000801410 A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3A46CEB 01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE391F8000 F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB7804A2 6D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B 1F000FC007C06C903907800180170015C001805C00071502EC09E013C000035DEC19F014 10D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090383D00 0F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<397FF81FF839 0FE007C03907C0030000031302EBE0063801F00400005BEBF818EB78106D5AEB3E60EB1E 406D5AA213076D7E497E1305EB08F0EB18F8EB1078EB207CEB603EEB401EEB801F390100 0F801407000214C000061303001FEB07E039FFC01FFE1F1F7F9E22>I<39FFF001FF391F 800078000F146012076D1340000314807F3901F001001200EBF802EB7C06EB3C04EB3E08 131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>I<387FFFFE387E003C1278 00701378006013F814F0384001E0130314C0EB07801200EB0F00131EA25B137C13785B12 01EBE002EA03C0A2EA0780000F13061300001E1304003E130C123C48133C14FCB5FC171F 7E9E1C>I<12FFA212C0B3B3A512FFA2082D7CA10D>II<12FFA21203B3B3A512FFA208 2D80A10D>I<120C121E1233EA6180EAC0C0EA80400A067A9E17>I97 D<121C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A214 78A6147014F014E0001E13C0381A018038198700EA107C15207E9F19>III I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E0 3803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230 A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13C0381C03803803FC 00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF01420 7E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0 A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E >I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38 133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC121CB3ABEAFF800920 7F9F0C>I<391C3E03E039FCC30C30391D039038391E01E01CA2001C13C0AE3AFF8FF8FF 8021147E9326>IIII< 3801F04038070CC0EA0E02EA1C03EA38011278127012F0A6127012781238EA1C03EA0C05 EA0709EA01F1EA0001A8EB0FF8151D7F9318>III<1202A31206A2 120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC 1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8383E00E0001C13C06C 1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3132015147F9318>I< 39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D80704138014E0A2390388 61001471A23801D032143A143E3800E01CA2EB6018EB40081E147F9321>I<38FF87F838 1E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F01370137813F8139CEA010E12 02EA060738040380000C13C0003C13E038FE07FC16147F9318>I<38FF83F8383E00E000 1C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3 EAF080A200F1C7FC1262123C151D7F9318>III E /FD 134[27 2[22 26 24 26 23 1[26 27 24 33 9 22 1[15 25 26 25 23 29 26 28 28 11[25 35 28 34 2[29 2[27 2[9 1[31 3[30 9[24 1[28 4[25 10 2[10 25 12 44[{}37 50.000000 /whaeberli rf /FE 14 123 df<1207EA0F80A21300120E C7FCAB127012F8A25A5A09157A940F>58 D<027F138090390380810090380E0063013813 2749131F49130E485A485A48C7FC481404120E121E5A5D4891C7FCA35AA55A1520A25DA2 6C5C12704AC7FC6C130200185B001C5B00061330380381C0D800FEC8FC212479A223>67 D<90B6128090380F00071501A2131EA21600A25BA2140192C7FCEB7802A21406140EEBFF FCEBF00CA33801E008A21504EC0008485AA25DA248485B15605D1401380F0007B65A2122 7DA121>69 D<90B6FC90380F000F1503A2131EA21502A25BA214011500EB7802A2140614 0EEBFFFCEBF00CA33801E008A391C7FC485AA4485AA4120FEAFFF820227DA120>I97 D<143CEB03F8EB0038A31470A414E0A4EB01C0 13F9EA0185EA0705380E0380A2121C123C383807001278A3EAF00EA31410EB1C20127013 3C38305C40138C380F078016237BA219>100 D<13F8EA0384EA0E02121C123C1238EA78 04EAF018EAFFE0EAF000A25AA41302A2EA6004EA7018EA3060EA0F800F157A9416>I<13 F0EA0FE01200A3485AA4485AA448C7FC131FEB2180EBC0C0380F00E0A2120EA2381C01C0 A438380380A3EB070400701308130E1410130600E01320386003C016237DA219>104 D<13C0EA01E013C0A2C7FCA8121E12231243A25AA3120EA25AA35AA21340EA7080A3EA71 001232121C0B217BA00F>I<137EEA01C338038180380701C0120E001C13E0123C123812 78A338F003C0A21480130700701300130E130CEA3018EA1870EA07C013157B9419>111 D114 D<13FCEA018338020080EA0401EA0C03140090C7FC120F13F0EA07FC6C7EEA 003E130F7F1270EAF006A2EAE004EA4008EA2030EA1FC011157D9414>I<13C01201A4EA 0380A4EA0700EAFFF8EA0700A2120EA45AA45AA31310EA7020A213401380EA3100121E0D 1F7C9E10>I<3801E0203803F0603807F8C038041F80380801001302C65A5B5B5B5B5B48 C7FC120248138038080100485AEA3F06EA61FEEA40FCEA807013157D9414>122 D E /FF 56 123 df<90381FC1F090387037189038C03E3C3801807C0003137839070038 00A9B612C03907003800B2143C397FE1FFC01E2380A21C>11 D<132013401380EA01005A 12061204120CA25AA25AA312701260A312E0AE1260A312701230A37EA27EA2120412067E 7EEA0080134013200B327CA413>40 D<7E12407E7E12187E12041206A27EA2EA0180A313 C01200A313E0AE13C0A312011380A3EA0300A21206A21204120C5A12105A5A5A0B327DA4 13>I45 D<127012F8A3127005057C840E>I48 D<13801203120F12F31203B3A9EA07C0EAFFFE0F21 7CA018>III<1303A25B A25B1317A21327136713471387120113071202120612041208A212101220A2124012C0B5 12F838000700A7EB0F80EB7FF015217FA018>I<00101380381E0700EA1FFF5B13F8EA17 E00010C7FCA6EA11F8EA120CEA1C07381803801210380001C0A214E0A4127012F0A200E0 13C01280EA4003148038200700EA1006EA0C1CEA03F013227EA018>I<137EEA01C13803 0080380601C0EA0C03121C381801800038C7FCA212781270A2EAF0F8EAF30CEAF4067F00 F81380EB01C012F014E0A51270A3003813C0A238180380001C1300EA0C06EA070CEA01F0 13227EA018>I<12401260387FFFE014C0A23840008038C0010012801302A2485A5BA25B 5BA21360134013C0A21201A25B1203A41207A76CC7FC13237DA118>III<497EA3497EA3EB05E0A2EB09F01308 A2EB1078A3497EA3497EA2EBC01F497EA248B51280EB0007A20002EB03C0A348EB01E0A3 48EB00F0121C003EEB01F839FF800FFF20237EA225>65 D<903807E0109038381830EBE0 063901C0017039038000F048C7FC000E1470121E001C1430123CA2007C14101278A200F8 1400A812781510127C123CA2001C1420121E000E14407E6C6C13803901C001003800E002 EB381CEB07E01C247DA223>67 DIII<903807F00890383C0C18EBE002 3901C001B839038000F848C71278481438121E15185AA2007C14081278A200F81400A7EC 1FFF0078EB00F81578127C123CA27EA27E7E6C6C13B86C7E3900E0031890383C0C089038 07F00020247DA226>I<39FFFC3FFF390FC003F039078001E0AE90B5FCEB8001AF390FC0 03F039FFFC3FFF20227EA125>I I75 DII79 DI82 D<3803F020380C0C60EA1802383001E0EA70000060136012E0A21420A36C1300A212 78127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A214707EA46C1360A2 6C13C07E38C8018038C60700EA81FC14247DA21B>I<007FB512F8397807807800601418 00401408A300C0140C00801404A400001400B3A3497E3801FFFE1E227EA123>I86 D97 D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA7141C14 3C1438000F1370380C8060EB41C038083F0017237FA21B>II<14E0130F13011300ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0 A7127012781238EA1801EA0C0238070CF03801F0FE17237EA21B>II<133E13E33801C780EA0387130748C7FCA9EAFFF8 0007C7FCB27FEA7FF0112380A20F>I<14703803F198380E1E18EA1C0E38380700A20078 1380A400381300A2EA1C0EEA1E1CEA33F00020C7FCA212301238EA3FFE381FFFC06C13E0 383000F0481330481318A400601330A2003813E0380E03803803FE0015217F9518>I<12 0E12FE121E120EABEB1F80EB60C0EB80E0380F0070A2120EAF38FFE7FF18237FA21B>I< 121C123EA3121CC7FCA8120E127E121E120EB1EAFFC00A227FA10E>I<13E0EA01F0A3EA 00E01300A81370EA07F012001370B3A51260EAF0E013C0EA6180EA3F000C2C83A10F>I< 120E12FE121E120EABEB03FCEB01F014C01480EB02005B5B5B133813F8EA0F1CEA0E1E13 0E7F1480EB03C0130114E0EB00F014F838FFE3FE17237FA21A>I<120E12FE121E120EB3 ADEAFFE00B237FA20E>I<390E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A200 0E1338AF3AFFE3FF8FFE27157F942A>I<380E1F8038FE60C0381E80E0380F0070A2120E AF38FFE7FF18157F941B>I II114 DI<1202A41206A3120E121E123EEAFFFCEA0E00AB1304A6EA07081203EA01 F00E1F7F9E13>I<000E137038FE07F0EA1E00000E1370AD14F0A2380601703803827838 00FC7F18157F941B>I<38FF80FE381E00781430000E1320A26C1340A2EB80C000031380 A23801C100A2EA00E2A31374A21338A3131017157F941A>I<38FF83FE381F00F0000E13 C06C1380EB8100EA0383EA01C2EA00E41378A21338133C134E138FEA0187EB0380380201 C0000413E0EA0C00383E01F038FF03FE17157F941A>120 D<38FF80FE381E0078143000 0E1320A26C1340A2EB80C000031380A23801C100A2EA00E2A31374A21338A31310A25BA3 5B12F05B12F10043C7FC123C171F7F941A>I<383FFFC038380380EA300700201300EA60 0EEA401C133C1338C65A5B12015B38038040EA07005A000E13C04813805AEA7801EA7007 B5FC12157F9416>I E /FG 5 49 df0 D<1202A3EAC218EAF278 EA3AE0EA0F80A2EA3AE0EAF278EAC218EA0200A30D0E7E8E12>3 D<13FC38071380380810400010132000201310A200401308A200801304A3B512FC388010 04A400401308A200201310A20010132000081340380713803800FC0016187E931B>8 D13 D<1206120FA2120E121EA2121C123C1238A212301270A2126012E0 12C0124008117F910A>48 D E /FH 1 83 df82 D E /FI 26 122 df12 D<13021304130813101330136013C0A2EA0180A2EA03005A1206120EA2120C121CA21218 1238A35AA612F0A25AAD7EA21270A67EA31218121CA2120C120EA2120612077EEA0180A2 EA00C0A21360133013101308130413020F497AB519>40 D<7E12407E7E12187E7EA27EA2 EA018013C0120013E0A213601370A213301338A3131CA6131EA2130EAD131EA2131CA613 38A313301370A2136013E0A213C012011380EA0300A21206A25A5A12105A5A5A0F497CB5 19>I<127812FCA4127806067A8512>46 D<130813381378EA01F8123FEAFE7812C01200 B3B313FC387FFFF8A2152F7AAE21>49 D<127812FCA412781200B3127812FCA41278061F 7A9E12>58 D<1403A34A7EA24A7EA3EC17E01413A2EC23F01421A2EC40F8A3EC807CA290 3801007E153EA20102133F81A2496D7EA3496D7EA2011880011FB5FCA29039200003F015 01A2496D7EA349147CA20001157E90C8123EA248153F825AD81F80EC3F80D8FFE0903801 FFFCA22E327EB132>65 D71 D76 D79 D<90387F80203801FFE03907C07860380F001C001E EB06E048130300381301007813001270156012F0A21520A37E1500127C127E7E13C0EA1F F86CB47E6C13F06C13FCC613FF010F1380010013C0EC1FE01407EC03F01401140015F8A2 6C1478A57E15706C14F015E07E6CEB01C000ECEB038000C7EB070038C1F01E38807FFCEB 0FF01D337CB125>83 D<007FB712E0A23A7E000F80070078150100701500006016600040 1620A200C01630A2481610A6C71500B3AC4A7E010FB57EA22C317EB030>I86 D<13FE380303C0380C00E00010137080003C133C003E131C141EA21208C7FCA3EB 0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143EA21278007C135E6CEB8F 08390F0307F03903FC03E01E1F7D9E21>97 D99 D101 D104 D<120FEA1F80A4EA0F00C7FCABEA 0780127FA2120F1207B3A6EA0FC0EAFFF8A20D307EAF12>I<260780FEEB1FC03BFF8307 8060F0903A8C03C180783B0F9001E2003CD807A013E4DA00F47F01C013F8A2495BB3A248 6C486C133F3CFFFC1FFF83FFF0A2341F7E9E38>109 D<380780FE39FF83078090388C03 C0390F9001E0EA07A06E7E13C0A25BB3A2486C487E3AFFFC1FFF80A2211F7E9E25>II<380781FC39FF86078090388801C0390F9000E0D807A013 7001C01378497F153E151E151FA2811680A716005DA2151E153E153C6D5B01A013705D90 389803C0D9860FC7FCEB81F80180C8FCAB487EEAFFFCA2212D7E9E25>I<380783E038FF 8418EB887CEA0F90EA07A01438EBC000A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380E0330381800F048137048133012E01410A37E6C1300127EEA3FF06CB4FC 6C13C0000313E038003FF0EB01F813006C133CA2141C7EA27E14186C1338143000CC1360 38C301C03880FE00161F7E9E1A>I<1340A513C0A31201A212031207120F381FFFE0B5FC 3803C000B01410A80001132013E000001340EB78C0EB1F00142C7FAB19>I121 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 0 1 0 0 bop 607 906 a FI(The)21 b(Op)r(enGL)1001 863 y FH(R)-26 b FG(\015)1048 906 y FI(Graphics)22 b(System:)863 997 y(A)f(Sp)r(eci\014cation)895 1069 y(\(V)-6 b(ersion)22 b(1.1\))959 1286 y FF(Mark)16 b(Segal)948 1344 y(Kurt)g(Ak)o(eley)853 1460 y FE(Editor:)21 b(Chris)c(F)l(r)n(azier)p eop %%Page: 1 2 1 1 bop 375 449 a FD(Copyright)632 448 y FC(c)619 449 y FB(\015)20 b FD(1992-1997)g(Silicon)g(Graphics,)i(Inc.)277 605 y(This)e(document)i(contains)f(unpublished)h(information)e(of)636 662 y(Silicon)h(Graphics,)g(Inc.)120 768 y FC(This)d(do)q(cumen)o(t)e (is)i(protected)e(b)o(y)h(cop)o(yrigh)o(t,)f(and)g(con)o(tains)h (information)g(propri-)120 824 y(etary)12 b(to)g(Silicon)j(Graphics,)e (Inc.)20 b(An)o(y)12 b(cop)o(ying,)i(adaptation,)e(distribution,)i (public)120 881 y(p)q(erformance,)g(or)e(public)k(displa)o(y)e(of)f (this)h(do)q(cumen)o(t)f(without)h(the)f(express)g(written)120 937 y(consen)o(t)k(of)f(Silicon)j(Graphics,)d(Inc.)25 b(is)17 b(strictly)g(prohibited.)25 b(The)17 b(receipt)g(or)f(p)q(os-) 120 994 y(session)h(of)f(this)h(do)q(cumen)o(t)g(do)q(es)f(not)g(con)o (v)o(ey)g(an)o(y)g(righ)o(ts)g(to)g(repro)q(duce,)h(disclose,)120 1050 y(or)i(distribute)i(its)e(con)o(ten)o(ts,)g(or)g(to)f(man)o (ufacture,)i(use,)g(or)f(sell)h(an)o(ything)g(that)e(it)120 1107 y(ma)o(y)d(describ)q(e,)h(in)g(whole)g(or)f(in)h(part.)390 1213 y FD(U.S.)21 b(Government)g(Restricted)h(Rights)e(Legend)120 1319 y FC(Use,)c(duplication,)i(or)e(disclosure)h(b)o(y)f(the)g(Go)o(v) o(ernmen)o(t)e(is)j(sub)s(ject)f(to)f(restrictions)120 1376 y(set)21 b(forth)f(in)h(F)-5 b(AR)21 b(52.227.19\(c\)\()o(2\))c (or)j(subparagraph)g(\(c\)\(1\)\(ii\))g(of)g(the)h(Righ)o(ts)120 1432 y(in)f(T)l(ec)o(hnical)g(Data)e(and)h(Computer)f(Soft)o(w)o(are)f (clause)j(at)e(DF)-5 b(ARS)18 b(252.227-7013)120 1489 y(and/or)12 b(in)h(similar)h(or)e(successor)g(clauses)h(in)g(the)g(F)-5 b(AR)12 b(or)g(the)h(DOD)f(or)f(NASA)i(F)-5 b(AR)120 1545 y(Supplemen)o(t.)33 b(Unpublished)22 b(righ)o(ts)d(reserv)o(ed)g (under)g(the)g(cop)o(yrigh)o(t)g(la)o(ws)g(of)f(the)120 1601 y(United)h(States.)26 b(Con)o(tractor/man)o(ufacturer)15 b(is)j(Silicon)h(Graphics,)f(Inc.,)g(2011)f(N.)120 1658 y(Shoreline)g(Blvd.,)f(Moun)o(tain)f(View,)h(CA)f(94039-7311.)328 1764 y FD(OpenGL)21 b(is)f(a)g(trademark)h(of)f(Silicon)h(Graphics,)g (Inc.)p eop %%Page: 1 3 1 2 bop 120 619 a FA(Con)m(ten)m(ts)120 889 y Fz(1)43 b(In)o(tro)q(duction)1113 b(1)189 947 y FC(1.1)45 b(What)15 b(is)g(the)h(Op)q(enGL)g(Graphics)g(System?)34 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)68 b FC(1)189 1004 y(1.2)45 b(Programmer's)13 b(View)j(of)f(Op)q(enGL)21 b Fy(:)h(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:) 68 b FC(1)189 1062 y(1.3)45 b(Implemen)o(tor's)15 b(View)h(of)f(Op)q (enGL)i Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)68 b FC(2)189 1119 y(1.4)45 b(Our)16 b(View)35 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)68 b FC(2)120 1223 y Fz(2)43 b(Op)q(enGL)18 b(Op)q(eration)959 b(4)189 1280 y FC(2.1)45 b(Op)q(enGL)17 b(F)l(undamen)o(tals)46 b Fy(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)68 b FC(4)189 1338 y(2.2)45 b(GL)15 b(State)45 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)68 b FC(6)189 1395 y(2.3)45 b(GL)15 b(Command)g(Syn)o(tax)38 b Fy(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)68 b FC(7)189 1453 y(2.4)45 b(Basic)16 b(GL)f(Op)q(eration)40 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)68 b FC(9)189 1510 y(2.5)45 b(GL)15 b(Errors)23 b Fy(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(11)189 1568 y(2.6)g(Begin/End)16 b(P)o(aradigm)g Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(13)293 1625 y(2.6.1)51 b(Begin)16 b(and)f(End)h(Ob)s(jects)40 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)45 b FC(15)293 1683 y(2.6.2)51 b(P)o(olygon)14 b(Edges)38 b Fy(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)45 b FC(18)293 1740 y(2.6.3)51 b(GL)15 b(Commands)f(within)j Fz(Begin)p FC(/)p Fz(End)e Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(19)189 1798 y(2.7)g(V)l(ertex)15 b(Sp)q(eci\014cation)46 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(19)189 1856 y(2.8)g(V)l(ertex)15 b(Arra)o(ys)k Fy(:)k(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(21)189 1913 y(2.9)g(Rectangles)16 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)45 b FC(27)189 1971 y(2.10)22 b(Co)q(ordinate)15 b(T)l(ransformations)20 b Fy(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(27)293 2028 y(2.10.1)28 b(Con)o(trolling)15 b(the)h(Viewp)q(ort)40 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(28)293 2086 y(2.10.2)28 b(Matrices)17 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(29)293 2143 y(2.10.3)28 b(Normal)15 b(T)l(ransformation)36 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(33)293 2201 y(2.10.4)28 b(Generating)15 b(texture)g(co)q(ordinates)28 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(34)189 2258 y(2.11)22 b(Clipping)j Fy(:)e(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)45 b FC(36)189 2316 y(2.12)22 b(Curren)o(t)15 b(Raster)g(P)o(osition)33 b Fy(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(38)189 2373 y(2.13)22 b(Colors)15 b(and)g(Coloring)41 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)45 b FC(39)293 2431 y(2.13.1)28 b(Ligh)o(ting)23 b Fy(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(40)293 2488 y(2.13.2)28 b(Ligh)o(ting)16 b(P)o(arameter)e(Sp)q(eci\014cation)31 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(46)861 2613 y(i)p eop %%Page: 2 4 2 3 bop 332 137 a FC(ii)1212 b Fx(CONTENTS)505 286 y FC(2.13.3)27 b Fz(ColorMaterial)45 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(47)505 345 y(2.13.4)27 b(Ligh)o(ting)16 b(State)45 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)46 b FC(50)505 403 y(2.13.5)27 b(Color)15 b(Index)h(Ligh)o(ting)21 b Fy(:)h(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(50)505 461 y(2.13.6)27 b(Clamping)16 b(or)f(Masking)41 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(51)505 519 y(2.13.7)27 b(Flatshading)e Fy(:)d(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) 46 b FC(51)505 578 y(2.13.8)27 b(Color)15 b(and)h(T)l(exture)f(Co)q (ordinate)g(Clipping)40 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(52)505 636 y(2.13.9)27 b(Final)16 b(Color)f(Pro)q(cessing)20 b Fy(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)46 b FC(53)332 741 y Fz(3)c(Rasterization)1072 b(54)400 799 y FC(3.1)46 b(In)o(v)m(ariance)25 b Fy(:)e(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)46 b FC(55)400 857 y(3.2)g(An)o(tialiasing)27 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(55)400 916 y(3.3)g(P)o(oin)o(ts)32 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)46 b FC(57)505 974 y(3.3.1)k(P)o(oin)o(t)15 b(Rasterization)h(State)37 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(60)400 1032 y(3.4)g(Line)16 b(Segmen)o(ts)46 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(60)505 1090 y(3.4.1)k(Basic)16 b(Line)h(Segmen)o(t)e (Rasterization)f Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(60)505 1149 y(3.4.2)k(Other)16 b(Line)g(Segmen)o(t)f(F)l(eatures) 29 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(63)505 1207 y(3.4.3)k(Line)17 b(Rasterization)f(State)22 b Fy(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) 46 b FC(66)400 1265 y(3.5)g(P)o(olygons)14 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(66)505 1323 y(3.5.1)k(Basic)16 b(P)o(olygon)f(Rasterization)j Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(66)505 1381 y(3.5.2)k(Stippling)d Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)46 b FC(68)505 1440 y(3.5.3)k(An)o(tialiasing)23 b Fy(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(69)505 1498 y(3.5.4)k(Options)16 b(Con)o(trolling)g(P)o(olygon)f(Rasterization)46 b Fy(:)23 b(:)f(:)h(:)f(:)g(:)46 b FC(69)505 1556 y(3.5.5)k(Depth)16 b(O\013set)37 b Fy(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(70)505 1614 y(3.5.6)k(P)o(olygon)15 b(Rasterization)h(State)j Fy(:)k(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(71)400 1673 y(3.6)g(Pixel)16 b(Rectangles)42 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(71)505 1731 y(3.6.1)k(Pixel)17 b(Storage)d(Mo)q(des)27 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(72)505 1789 y(3.6.2)k(Pixel)17 b(T)l(ransfer)e(Mo)q(des)46 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(73)505 1847 y(3.6.3)k(Rasterization)16 b(of)f(Pixel)h(Rectangles) 25 b Fy(:)e(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(75)505 1906 y(3.6.4)k(Pixel)17 b(T)l(ransfer)e(Op)q(erations)28 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) 46 b FC(81)400 1964 y(3.7)g(Bitmaps)26 b Fy(:)c(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)46 b FC(83)400 2022 y(3.8)g(T)l(exturing)33 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(85)505 2080 y(3.8.1)k(T)l(exture)16 b(Mini\014cation)29 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)46 b FC(94)505 2139 y(3.8.2)k(T)l(exture)16 b(Magni\014cation)30 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(98)505 2197 y(3.8.3)k(T)l(exture)16 b(State)e(and)i(Pro)o(xy)e(State)34 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)46 b FC(98)505 2255 y(3.8.4)k(T)l(exture)16 b(Ob)s(jects)42 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(99)505 2313 y(3.8.5)k(T)l(exture)16 b(En)o(vironmen)o(ts)f(and)g(T)l(exture)g(F)l (unctions)22 b Fy(:)g(:)h(:)f(:)g(:)h FC(101)505 2372 y(3.8.6)50 b(T)l(exture)16 b(Application)37 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h FC(102)400 2430 y(3.9)46 b(F)l(og)14 b Fy(:)22 b(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(105)400 2488 y(3.10)g(An)o(tialiasing)17 b(Application)28 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h FC(106)p eop %%Page: 3 5 3 4 bop 120 137 a Fx(CONTENTS)1199 b FC(iii)120 286 y Fz(4)43 b(F)l(ragmen)o(ts)16 b(and)i(the)f(F)l(ramebu\013er)622 b(108)189 347 y FC(4.1)45 b(P)o(er-F)l(ragmen)o(t)14 b(Op)q(erations)41 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(109)293 408 y(4.1.1)51 b(Pixel)16 b(Ownership)h(T)l(est)43 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(109)293 469 y(4.1.2)51 b(Scissor)15 b(test)35 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:) g FC(110)293 530 y(4.1.3)51 b(Alpha)16 b(test)e Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(110)293 591 y(4.1.4)51 b(Stencil)17 b(test)35 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(111)293 652 y(4.1.5)51 b(Depth)15 b(bu\013er)g(test)22 b Fy(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)g FC(112)293 712 y(4.1.6)51 b(Blending)14 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(112)293 773 y(4.1.7)51 b(Dithering)35 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(114)293 834 y(4.1.8)51 b(Logical)16 b(Op)q(eration)43 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)g FC(115)189 895 y(4.2)45 b(Whole)16 b(F)l(ramebu\013er) e(Op)q(erations)37 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)g FC(116)293 956 y(4.2.1)51 b(Selecting)16 b(a)f(Bu\013er)g(for)g(W)l(riting)25 b Fy(:)d(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(116)293 1017 y(4.2.2)51 b(Fine)15 b(Con)o(trol)g(of)g(Bu\013er)g(Up)q(dates)26 b Fy(:)d(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(118)293 1078 y(4.2.3)51 b(Clearing)16 b(the)f(Bu\013ers)35 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)g FC(119)293 1138 y(4.2.4)51 b(The)15 b(Accum)o(ulation)h (Bu\013er)36 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)h(:)g FC(120)189 1199 y(4.3)45 b(Dra)o(wing,)14 b(Reading,)i(and)g(Cop)o(ying)f(Pixels)23 b Fy(:)g(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(121)293 1260 y(4.3.1)51 b(W)l(riting)15 b(to)g(the)g(Stencil)i(Bu\013er)41 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(121)293 1321 y(4.3.2)51 b(Reading)16 b(Pixels)35 b Fy(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)g FC(121)293 1382 y(4.3.3)51 b(Cop)o(ying)15 b(Pixels)33 b Fy(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(126)293 1443 y(4.3.4)51 b(Pixel)16 b(dra)o(w/read)e(state)38 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(127)120 1552 y Fz(5)43 b(Sp)q(ecial)19 b(F)l(unctions)949 b(128)189 1613 y FC(5.1)45 b(Ev)m(aluators)16 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(128)189 1674 y(5.2)45 b(Selection)17 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)g FC(134)189 1734 y(5.3)45 b(F)l(eedbac)o(k)h Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(136)189 1795 y(5.4)45 b(Displa)o(y)16 b(Lists)40 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(140)189 1856 y(5.5)45 b Fz(Flush)15 b FC(and)h Fz(Finish)34 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(143)189 1917 y(5.6)45 b(Hin)o(ts)16 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)h(:)g FC(143)120 2026 y Fz(6)43 b(State)18 b(and)g(State)g (Requests)768 b(144)120 2136 y(A)29 b(In)o(v)m(ariance)1112 b(171)189 2196 y FC(A.1)34 b(Rep)q(eatabilit)o(y)f Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(171)189 2257 y(A.2)34 b(Multi-pass)16 b(Algorithms)30 b Fy(:)22 b(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(172)189 2318 y(A.3)34 b(In)o(v)m(ariance)17 b(Rules)42 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(172)189 2379 y(A.4)34 b(What)15 b(All)h(This)g(Means)41 b Fy(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)g FC(174)120 2488 y Fz(B)32 b(Corollaries)1101 b(175)p eop %%Page: 4 6 4 5 bop 332 137 a FC(iv)1200 b Fx(CONTENTS)332 286 y Fz(C)30 b(V)l(ersion)17 b(1.1)1092 b(178)400 343 y FC(C.1)36 b(V)l(ertex)15 b(Arra)o(y)37 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h FC(178)400 399 y(C.2)36 b(P)o(olygon)15 b(O\013set)40 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(179)400 456 y(C.3)36 b(Logical)16 b(Op)q(eration)47 b Fy(:)22 b(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h FC(179)400 512 y(C.4)36 b(T)l(exture)15 b(Image)g(F)l(ormats)42 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h FC(179)400 569 y(C.5)36 b(T)l(exture)15 b(Replace)i(En)o(vironmen)o(t)j Fy(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(179)400 625 y(C.6)36 b(T)l(exture)15 b(Pro)o(xies)k Fy(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(180)400 682 y(C.7)36 b(Cop)o(y)15 b(T)l(exture)g(and)g(Subtexture)22 b Fy(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h FC(180)400 738 y(C.8)36 b(T)l(exture)15 b(Ob)s(jects)47 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(180)400 795 y(C.9)36 b(Other)15 b(Changes)35 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(180)400 851 y(C.10)13 b(Ac)o(kno)o(wledgemen)o(ts)29 b Fy(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(181)p eop %%Page: 5 7 5 6 bop 120 619 a FA(List)39 b(of)g(Figures)189 841 y FC(2.1)45 b(Blo)q(c)o(k)16 b(diagram)f(of)g(the)g(GL.)35 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)68 b FC(9)189 897 y(2.2)45 b(Creation)13 b(of)f(a)g(pro)q(cessed)h(v)o(ertex)g(from)e(a)i(transformed)e(v)o (ertex)i(and)293 954 y(curren)o(t)i(v)m(alues.)44 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(13)189 1010 y(2.3)g(Primitiv)o (e)16 b(assem)o(bly)g(and)f(pro)q(cessing.)26 b Fy(:)c(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(13)189 1067 y(2.4)g(T)l(riangle)16 b(strips,)f(fans,)g(and)g(indep)q(enden)o (t)j(triangles.)h Fy(:)j(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(16)189 1123 y(2.5)g(Quadrilateral)17 b(strips)e(and)g(indep)q (enden)o(t)j(quadrilaterals.)41 b Fy(:)22 b(:)h(:)f(:)h(:)45 b FC(17)189 1180 y(2.6)g(V)l(ertex)15 b(transformation)f(sequence.)47 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:) 45 b FC(27)189 1236 y(2.7)g(Curren)o(t)15 b(raster)f(p)q(osition.)40 b Fy(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)45 b FC(39)189 1293 y(2.8)g(Pro)q(cessing)16 b(of)f(colors.)36 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(39)189 1349 y(2.9)g(ColorMaterial)15 b(op)q(eration.)i Fy(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)45 b FC(47)189 1447 y(3.1)g(Rasterization.)22 b Fy(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(54)189 1504 y(3.2)g(Rasterization)16 b(of)f(non-an)o(tialiased)h(wide)g(p)q (oin)o(ts.)e Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(57)189 1560 y(3.3)g(Rasterization)16 b(of)f(an)o(tialiased)h(wide) g(p)q(oin)o(ts.)32 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)45 b FC(58)189 1616 y(3.4)g(Visualization)17 b(of)e(Bresenham's)g (algorithm.)33 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(61)189 1673 y(3.5)g(Rasterization)16 b(of)f(non-an)o(tialiased)h (wide)g(lines.)48 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(64)189 1729 y(3.6)g(The)16 b(region)f(used)h(in)g(rasterizing)g (an)f(an)o(tialiased)h(line)h(segmen)o(t.)23 b Fy(:)g(:)45 b FC(65)189 1786 y(3.7)g(Op)q(eration)16 b(of)f Fz(Dra)o(wPixels)p FC(.)39 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)45 b FC(75)189 1842 y(3.8)g(Selecting)17 b(a)e(subimage)h(from)e(an)h(image)42 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(78)189 1899 y(3.9)g(A)15 b(bitmap)h(and)f(its)h(asso)q(ciated)f(parameters.)21 b Fy(:)h(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b FC(84)189 1955 y(3.10)22 b(A)15 b(texture)g(image)h(and)f(the)g(co)q (ordinates)h(used)g(to)e(access)i(it.)27 b Fy(:)c(:)f(:)h(:)45 b FC(89)189 2053 y(4.1)g(P)o(er-fragmen)o(t)14 b(op)q(erations.)i Fy(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)g FC(109)189 2110 y(4.2)45 b(Op)q(eration)16 b(of)f Fz(ReadPixels)p FC(.)46 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(121)189 2166 y(4.3)45 b(Op)q(eration)16 b(of)f Fz(Cop)o(yPixels)p FC(.)43 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)g FC(126)189 2264 y(5.1)45 b(Map)15 b(Ev)m(aluation.)38 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(130)189 2320 y(5.2)45 b(F)l(eedbac)o(k)16 b(syn)o(tax.)27 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(139)856 2613 y(v)p eop %%Page: 6 8 6 7 bop 332 622 a FA(List)39 b(of)f(T)-10 b(ables)400 849 y FC(2.1)46 b(GL)15 b(command)g(su\016xes)46 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)69 b FC(8)400 910 y(2.2)46 b(GL)15 b(data)g(t)o(yp)q(es) 45 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(10)400 971 y(2.3)g(Summary)15 b(of)g(GL)g(errors)23 b Fy(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(12)400 1032 y(2.4)g(V)l(ertex)15 b(arra)o(y)f(sizes)i(\(v)m(alues) g(p)q(er)g(v)o(ertex\))e(and)i(data)e(t)o(yp)q(es)23 b Fy(:)f(:)h(:)f(:)g(:)46 b FC(22)400 1093 y(2.5)g(V)l(ariables)20 b(that)f(direct)h(the)g(execution)g(of)f Fz(In)o(terlea)o(v)o(edArra)o (ys)p FC(.)505 1149 y Fy(f)25 b FC(is)20 b Fw(sizeof\(FLOAT\))p FC(.)e Fy(c)h FC(is)i(4)e(times)h Fw(sizeof\(UNSIGNED)p 1566 1149 15 2 v 16 w(BYTE\))p FC(,)505 1205 y(rounded)f(up)g(to)f(the) h(nearest)f(m)o(ultiple)i(of)e Fy(f)5 b FC(.)30 b(All)20 b(p)q(oin)o(ter)f(arith-)505 1262 y(metic)d(is)f(p)q(erformed)h(in)g (units)g(of)e Fw(sizeof\(UNSIGNED)p 1473 1262 V 16 w(BYTE\))p FC(.)33 b Fy(:)22 b(:)g(:)46 b FC(25)400 1323 y(2.6)g(Comp)q(onen)o(t) 15 b(con)o(v)o(ersions)41 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(42)400 1384 y(2.7)g(Summary)15 b(of)g(ligh)o(ting)h(parameters.)30 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) 46 b FC(44)400 1445 y(2.8)g(Corresp)q(ondence)16 b(of)f(ligh)o(ting)h (parameter)e(sym)o(b)q(ols)i(to)f(names.)h Fy(:)22 b(:)g(:)46 b FC(48)400 1505 y(2.9)g(P)o(olygon)15 b(\015atshading)g(color)h (selection.)22 b Fy(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)46 b FC(52)400 1608 y(3.1)g Fz(PixelStore)15 b FC(parameters)g(p)q(ertaining)h(to)f Fz(Dra)o(wPixels)p FC(.)40 b Fy(:)22 b(:)h(:)f(:)g(:)46 b FC(72)400 1669 y(3.2)g Fz(PixelT)l(ransfer)14 b FC(parameters.)26 b Fy(:)c(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)46 b FC(73)400 1730 y(3.3)g Fz(PixelMap)15 b FC(parameters.)41 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)46 b FC(74)400 1790 y(3.4)g Fz(Dra)o(wPixels)14 b FC(and)i Fz(ReadPixels)f FC(t)o(yp)q(es)20 b Fy(:)i(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(77)400 1851 y(3.5)g Fz(Dra)o(wPixels)14 b FC(and)i Fz(ReadPixels)f FC(formats.)30 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 b FC(77)400 1912 y(3.6)g(Sw)o(ap)15 b(Bytes)g(Bit)h(ordering.)44 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)46 b FC(78)400 1973 y(3.7)g(Corresp)q(ondence)17 b(of)g(texture)f(comp)q(onen)o(ts)h(to)f(pixel)i(group)f(R,)f(G,)505 2029 y(B,)f(and)g(A)g(v)m(alues.)40 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) 46 b FC(87)400 2090 y(3.8)g(Corresp)q(ondence)14 b(of)f(sized)h(in)o (ternal)g(formats)e(to)h(base)g(in)o(ternal)h(for-)505 2147 y(mats.)d Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)46 b FC(88)400 2208 y(3.9)g(T)l(exture)15 b(parameters)f(and)i (their)g(v)m(alues.)24 b Fy(:)e(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)46 b FC(94)400 2268 y(3.10)23 b(Replace)17 b(and)e(mo)q(dulate)h(texture)f(functions.)j Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(103)400 2329 y(3.11)g(Decal)15 b(and)h(blend)h(texture)e(functions.)33 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h FC(104)400 2432 y(4.1)46 b(V)l(alues)12 b(con)o(trolling)f(the)g (source)g(blending)i(function)f(and)f(the)f(source)505 2488 y(blending)17 b(v)m(alues)g(they)e(compute)25 b Fy(:)e(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h FC(113)1061 2613 y(vi)p eop %%Page: 7 9 7 8 bop 120 137 a Fx(LIST)16 b(OF)g(T)l(ABLES)1068 b FC(vii)189 286 y(4.2)45 b(V)l(alues)17 b(con)o(trolling)h(the)e (destination)h(blending)i(function)e(and)g(the)293 343 y(destination)f(blending)i(v)m(alues)e(they)f(compute)38 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(114)189 399 y(4.3)45 b(Argumen)o(ts)15 b(to)f Fz(LogicOp)j FC(and)f(their)f (corresp)q(onding)i(op)q(erations.)f Fy(:)23 b FC(116)189 456 y(4.4)45 b(Argumen)o(ts)15 b(to)f Fz(Dra)o(wBu\013er)f FC(and)i(the)g(bu\013ers)g(that)f(they)h(indicate.)r(117)189 512 y(4.5)45 b Fz(PixelStore)16 b FC(parameters)e(p)q(ertaining)i(to)f Fz(ReadPixels)p FC(.)d Fy(:)22 b(:)g(:)h(:)f(:)h(:)g FC(123)189 569 y(4.6)45 b Fz(ReadPixels)16 b FC(index)g(masks.)k Fy(:)i(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)g FC(125)189 625 y(4.7)45 b Fz(ReadPixels)17 b FC(GL)g(Data)f(T)o(yp)q(es)h(and)g(Rev)o(ersed)h(comp)q(onen)o(t)f (con-)293 682 y(v)o(ersion)f(form)o(ulas.)31 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(126)189 780 y(5.1)45 b(V)l(alues)16 b(sp)q(eci\014ed)i(b)o(y)d(the)g Fv(tar)n(get)g FC(to)g Fz(Map1)p FC(.)34 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)g FC(129)189 836 y(5.2)45 b(Corresp)q(ondence)12 b(of)e(feedbac)o(k)h(t)o(yp)q(e)f(to)g(n)o(um)o(b)q(er)h(of)f(v)m (alues)i(p)q(er)f(v)o(ertex.)r(138)189 934 y(6.1)45 b(T)l(exture)16 b(return)f(v)m(alues.)22 b Fy(R)791 941 y Fu(t)806 934 y FC(,)15 b Fy(G)870 941 y Fu(t)884 934 y FC(,)g Fy(B)946 941 y Fu(t)962 934 y FC(,)g Fy(A)1024 941 y Fu(t)1039 934 y FC(,)g Fy(L)1098 941 y Fu(t)1113 934 y FC(,)g(and)h Fy(I)1250 941 y Fu(t)1280 934 y FC(are)f(texture)293 990 y(arra)o(y)f(v)m(alues)i(that)f(are)g(assigned)h(to)e(pixel)j(v)m (alues)f(R,)g(G,)e(B,)h(and)g(A.)25 b(147)189 1047 y(6.2)45 b(A)o(ttribute)15 b(groups)35 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(150)189 1103 y(6.3)45 b(State)15 b(v)m(ariable)h(t)o(yp)q(es)46 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(151)189 1160 y(6.4)45 b(GL)15 b(In)o(ternal)h(b)q(egin-end)i(state)c(v)m(ariables)i (\(inaccessible\))21 b Fy(:)h(:)g(:)h(:)f(:)h(:)g FC(152)189 1216 y(6.5)45 b(Curren)o(t)15 b(V)l(alues)h(and)f(Asso)q(ciated)h(Data) 28 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(153)189 1273 y(6.6)45 b(V)l(ertex)15 b(Arra)o(y)g(Data)29 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(154)189 1329 y(6.7)45 b(T)l(ransformation)14 b(state)22 b Fy(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(155)189 1386 y(6.8)45 b(Coloring)23 b Fy(:)g(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)g FC(156)189 1442 y(6.9)45 b(Ligh)o(ting)16 b(\(see)f(also)h(T)l(able)g(2.5)e(for)g(defaults\))25 b Fy(:)d(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(157)189 1499 y(6.10)f(Rasterization)35 b Fy(:)23 b(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)g FC(158)189 1555 y(6.11)f(T)l(exture)15 b(Ob)s(jects)47 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(159)189 1611 y(6.12)f(T)l(exture)15 b(En)o(vironmen)o(t)h(and)f (Generation)43 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)g FC(160)189 1668 y(6.13)f(Pixel)17 b(Op)q(erations)35 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(161)189 1724 y(6.14)f(F)l(ramebu\013er)15 b(Con)o(trol)34 b Fy(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)g FC(162)189 1781 y(6.15)f(Pixels)40 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(163)189 1837 y(6.16)f(Pixels)17 b(\(con)o(t.\))30 b Fy(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(164)189 1894 y(6.17)f(Ev)m(aluators)15 b(\()p Fz(GetMap)g FC(tak)o(es)g(a)g (map)g(name\))35 b Fy(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(165)189 1950 y(6.18)f(Hin)o(ts)16 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(166)189 2007 y(6.19)f(Implemen)o (tation)16 b(Dep)q(enden)o(t)h(V)l(alues)37 b Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(167)189 2063 y(6.20)f(More)15 b(Implemen)o(tation)h(Dep)q(enden)o(t) g(V)l(alues)26 b Fy(:)c(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(168)189 2120 y(6.21)f(Implemen)o(tation)16 b(Dep)q(enden)o(t)h (Pixel)f(Depths)f Fy(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)g FC(169)189 2176 y(6.22)f(Miscellaneous)28 b Fy(:)23 b(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)g FC(170)p eop %%Page: 1 10 1 9 bop 120 601 a Ft(Chapter)32 b(1)120 812 y FA(In)m(tro)s(duction)120 1038 y FC(This)19 b(do)q(cumen)o(t)f(describ)q(es)h(the)f(Op)q(enGL)h (graphics)g(system:)24 b(what)18 b(it)g(is,)g(ho)o(w)f(it)120 1095 y(acts,)e(and)g(what)g(is)h(required)h(to)d(implemen)o(t)j(it.)k (W)l(e)15 b(assume)g(that)g(the)h(reader)f(has)120 1151 y(at)20 b(least)h(a)f(rudimen)o(tary)g(understanding)i(of)e(computer)g (graphics.)36 b(This)21 b(means)120 1208 y(familiarit)o(y)g(with)f(the) g(essen)o(tials)g(of)g(computer)f(graphics)h(algorithms)g(as)f(w)o(ell) i(as)120 1264 y(familiarit)o(y)16 b(with)g(basic)g(graphics)g(hardw)o (are)e(and)h(asso)q(ciated)h(terms.)120 1427 y Fs(1.1)67 b(What)23 b(is)f(the)h(Op)r(enGL)f(Graphics)i(System?)120 1536 y FC(Op)q(enGL)18 b(\(for)e(\\Op)q(en)h(Graphics)g(Library"\))f (is)h(a)f(soft)o(w)o(are)f(in)o(terface)h(to)g(graphics)120 1592 y(hardw)o(are.)j(The)c(in)o(terface)f(consists)h(of)f(a)g(set)g (of)g(sev)o(eral)g(h)o(undred)h(pro)q(cedures)h(and)120 1649 y(functions)22 b(that)d(allo)o(w)i(a)f(programmer)f(to)h(sp)q (ecify)i(the)e(ob)s(jects)g(and)h(op)q(erations)120 1705 y(in)o(v)o(olv)o(ed)12 b(in)f(pro)q(ducing)g(high-qualit)o(y)h (graphical)f(images,)g(sp)q(eci\014cally)i(color)e(images)120 1761 y(of)k(three-dimensional)j(ob)s(jects.)191 1821 y(Most)e(of)h(Op)q(enGL)h(requires)g(that)e(the)h(graphics)h(hardw)o (are)e(con)o(tain)h(a)g(frame-)120 1878 y(bu\013er.)j(Man)o(y)12 b(Op)q(enGL)j(calls)f(p)q(ertain)g(to)f(dra)o(wing)g(ob)s(jects)f(suc)o (h)i(as)f(p)q(oin)o(ts,)h(lines,)120 1934 y(p)q(olygons,)h(and)g (bitmaps,)f(but)h(the)f(w)o(a)o(y)g(that)g(some)g(of)g(this)h(dra)o (wing)f(o)q(ccurs)h(\(suc)o(h)120 1991 y(as)21 b(when)g(an)o (tialiasing)h(or)f(texturing)g(is)g(enabled\))h(relies)h(on)d(the)h (existence)i(of)d(a)120 2047 y(framebu\013er.)f(F)l(urther,)13 b(some)g(of)g(Op)q(enGL)i(is)f(sp)q(eci\014cally)i(concerned)e(with)g (frame-)120 2104 y(bu\013er)i(manipulation.)120 2267 y Fs(1.2)67 b(Programmer's)21 b(View)h(of)g(Op)r(enGL)120 2375 y FC(T)l(o)c(the)f(programmer,)g(Op)q(enGL)i(is)f(a)f(set)g(of)g (commands)h(that)f(allo)o(w)g(the)h(sp)q(eci\014-)120 2432 y(cation)e(of)g(geometric)g(ob)s(jects)f(in)i(t)o(w)o(o)e(or)g (three)h(dimensions,)h(together)f(with)g(com-)120 2488 y(mands)21 b(that)g(con)o(trol)g(ho)o(w)f(these)h(ob)s(jects)g(are)f (rendered)i(in)o(to)f(the)h(framebu\013er.)856 2613 y(1)p eop %%Page: 2 11 2 10 bop 332 137 a FC(2)785 b Fx(CHAPTER)16 b(1.)34 b(INTR)o(ODUCTION) 332 286 y FC(F)l(or)17 b(the)g(most)f(part,)h(Op)q(enGL)i(pro)o(vides)f (an)f(immediate-mo)q(de)i(in)o(terface,)e(mean-)332 343 y(ing)f(that)e(sp)q(ecifying)j(an)f(ob)s(ject)e(causes)i(it)f(to)g(b)q (e)g(dra)o(wn.)403 400 y(A)d(t)o(ypical)h(program)e(that)g(uses)i(Op)q (enGL)g(b)q(egins)g(with)g(calls)g(to)f(op)q(en)g(a)g(windo)o(w)332 457 y(in)o(to)g(the)h(framebu\013er)f(in)o(to)g(whic)o(h)h(the)g (program)e(will)j(dra)o(w.)k(Then,)13 b(calls)g(are)f(made)332 513 y(to)i(allo)q(cate)g(a)g(GL)g(con)o(text)g(and)g(asso)q(ciate)g(it) h(with)f(the)g(windo)o(w.)20 b(Once)15 b(a)f(GL)g(con-)332 570 y(text)f(is)g(allo)q(cated,)i(the)e(programmer)f(is)h(free)g(to)g (issue)h(Op)q(enGL)g(commands.)19 b(Some)332 626 y(calls)f(are)e(used)h (to)f(dra)o(w)g(simple)i(geometric)f(ob)s(jects)f(\(i.e.)24 b(p)q(oin)o(ts,)17 b(line)h(segmen)o(ts,)332 683 y(and)f(p)q (olygons\),)f(while)h(others)f(a\013ect)g(the)g(rendering)h(of)f(these) h(primitiv)o(es)g(includ-)332 739 y(ing)i(ho)o(w)f(they)g(are)g(lit)h (or)f(colored)h(and)f(ho)o(w)g(they)h(are)f(mapp)q(ed)h(from)e(the)i (user's)332 796 y(t)o(w)o(o-)11 b(or)h(three-dimensional)i(mo)q(del)f (space)f(to)g(the)g(t)o(w)o(o-dimensional)h(screen.)19 b(There)332 852 y(are)14 b(also)h(calls)g(to)f(e\013ect)g(direct)h(con) o(trol)f(of)g(the)h(framebu\013er,)e(suc)o(h)i(as)f(reading)h(and)332 909 y(writing)h(pixels.)332 1058 y Fs(1.3)66 b(Implemen)n(tor's)23 b(View)f(of)g(Op)r(enGL)332 1161 y FC(T)l(o)17 b(the)h(implemen)o(tor,) h(Op)q(enGL)g(is)f(a)g(set)f(of)g(commands)h(that)f(a\013ect)g(the)g (op)q(era-)332 1218 y(tion)g(of)g(graphics)g(hardw)o(are.)24 b(If)17 b(the)g(hardw)o(are)f(consists)h(only)g(of)g(an)g(addressable) 332 1274 y(framebu\013er,)12 b(then)g(Op)q(enGL)i(m)o(ust)d(b)q(e)i (implemen)o(ted)h(almost)e(en)o(tirely)h(on)f(the)g(host)332 1331 y(CPU.)j(More)h(t)o(ypically)l(,)h(the)f(graphics)g(hardw)o(are)f (ma)o(y)g(comprise)i(v)m(arying)f(degrees)332 1387 y(of)f(graphics)h (acceleration,)g(from)f(a)g(raster)f(subsystem)i(capable)g(of)f (rendering)i(t)o(w)o(o-)332 1444 y(dimensional)24 b(lines)g(and)e(p)q (olygons)h(to)f(sophisticated)h(\015oating-p)q(oin)o(t)g(pro)q(cessors) 332 1500 y(capable)d(of)e(transforming)g(and)h(computing)h(on)e (geometric)h(data.)30 b(The)19 b(Op)q(enGL)332 1557 y(implemen)o(tor's) d(task)f(is)i(to)e(pro)o(vide)h(the)g(CPU)g(soft)o(w)o(are)e(in)o (terface)i(while)h(dividing)332 1613 y(the)i(w)o(ork)f(for)g(eac)o(h)i (Op)q(enGL)g(command)f(b)q(et)o(w)o(een)g(the)g(CPU)g(and)g(the)g (graphics)332 1670 y(hardw)o(are.)g(This)13 b(division)j(m)o(ust)c(b)q (e)i(tailored)g(to)e(the)i(a)o(v)m(ailable)g(graphics)g(hardw)o(are)332 1726 y(to)h(obtain)g(optim)o(um)g(p)q(erformance)h(in)g(carrying)f(out) g(Op)q(enGL)h(calls.)403 1784 y(Op)q(enGL)21 b(main)o(tains)g(a)f (considerable)i(amoun)o(t)e(of)g(state)f(information.)36 b(This)332 1840 y(state)20 b(con)o(trols)g(ho)o(w)g(ob)s(jects)g(are)h (dra)o(wn)f(in)o(to)h(the)f(framebu\013er.)36 b(Some)21 b(of)f(this)332 1896 y(state)14 b(is)h(directly)h(a)o(v)m(ailable)h(to) d(the)h(user:)20 b(he)15 b(or)f(she)h(can)g(mak)o(e)f(calls)i(to)e (obtain)h(its)332 1953 y(v)m(alue.)32 b(Some)18 b(of)g(it,)i(ho)o(w)o (ev)o(er,)e(is)h(visible)i(only)e(b)o(y)g(the)g(e\013ect)f(it)h(has)f (on)h(what)f(is)332 2009 y(dra)o(wn.)h(One)c(of)e(the)h(main)g(goals)g (of)f(this)h(sp)q(eci\014cation)i(is)f(to)e(mak)o(e)g(Op)q(enGL)i (state)332 2066 y(information)j(explicit,)i(to)d(elucidate)j(ho)o(w)d (it)h(c)o(hanges,)g(and)g(to)f(indicate)i(what)e(its)332 2122 y(e\013ects)e(are.)332 2272 y Fs(1.4)66 b(Our)23 b(View)332 2375 y FC(W)l(e)c(view)g(Op)q(enGL)g(as)f(a)g(state)g(mac)o (hine)h(that)f(con)o(trols)g(a)g(set)g(of)g(sp)q(eci\014c)i(dra)o(w-) 332 2432 y(ing)h(op)q(erations.)36 b(This)20 b(mo)q(del)i(should)f (engender)g(a)f(sp)q(eci\014cation)j(that)c(satis\014es)332 2488 y(the)h(needs)g(of)f(b)q(oth)g(programmers)g(and)g(implemen)o (tors.)34 b(It)19 b(do)q(es)h(not,)g(ho)o(w)o(ev)o(er,)p eop %%Page: 3 12 3 11 bop 120 137 a Fx(1.4.)34 b(OUR)16 b(VIEW)1120 b FC(3)120 286 y(necessarily)20 b(pro)o(vide)e(a)f(mo)q(del)i(for)e (implemen)o(tation.)28 b(An)18 b(implemen)o(tation)h(m)o(ust)120 343 y(pro)q(duce)14 b(results)g(conforming)f(to)f(those)h(pro)q(duced)h (b)o(y)f(the)g(sp)q(eci\014ed)i(metho)q(ds,)f(but)120 399 y(there)21 b(ma)o(y)f(b)q(e)i(w)o(a)o(ys)e(to)g(carry)g(out)h(a)f (particular)i(computation)f(that)f(are)g(more)120 456 y(e\016cien)o(t)c(than)f(the)h(one)f(sp)q(eci\014ed.)p eop %%Page: 4 13 4 12 bop 332 603 a Ft(Chapter)31 b(2)332 816 y FA(Op)s(enGL)39 b(Op)s(eration)332 1062 y Fs(2.1)66 b(Op)r(enGL)23 b(F)-6 b(undamen)n(tals)332 1174 y FC(Op)q(enGL)22 b(\(henceforth,)g(the)e (\\GL"\))g(is)h(concerned)h(only)f(with)g(rendering)g(in)o(to)g(a)332 1230 y(framebu\013er)f(\(and)f(reading)i(v)m(alues)g(stored)e(in)i (that)f(framebu\013er\).)33 b(There)20 b(is)h(no)332 1287 y(supp)q(ort)14 b(for)f(other)g(p)q(eripherals)j(sometimes)d(asso) q(ciated)h(with)g(graphics)h(hardw)o(are,)332 1343 y(suc)o(h)h(as)f (mice)i(and)f(k)o(eyb)q(oards.)21 b(Programmers)14 b(m)o(ust)i(rely)g (on)g(other)f(mec)o(hanisms)332 1400 y(to)g(obtain)g(user)g(input.)403 1461 y(The)e(GL)g(dra)o(ws)g Fv(primitives)g FC(sub)s(ject)g(to)f(a)h (n)o(um)o(b)q(er)h(of)e(selectable)j(mo)q(des.)20 b(Eac)o(h)332 1518 y(primitiv)o(e)f(is)e(a)g(p)q(oin)o(t,)h(line)h(segmen)o(t,)e(p)q (olygon,)h(or)f(pixel)i(rectangle.)26 b(Eac)o(h)17 b(mo)q(de)332 1574 y(ma)o(y)11 b(b)q(e)g(c)o(hanged)h(indep)q(enden)o(tly;)j(the)c (setting)g(of)g(one)g(do)q(es)h(not)f(a\013ect)f(the)h(settings)332 1631 y(of)i(others)h(\(although)f(man)o(y)g(mo)q(des)h(ma)o(y)f(in)o (teract)h(to)f(determine)h(what)f(ev)o(en)o(tually)332 1687 y(ends)k(up)f(in)h(the)f(framebu\013er\).)22 b(Mo)q(des)16 b(are)g(set,)f(primitiv)o(es)j(sp)q(eci\014ed,)g(and)e(other)332 1744 y(GL)i(op)q(erations)h(describ)q(ed)h(b)o(y)e(sending)i Fv(c)n(ommands)e FC(in)h(the)f(form)g(of)g(function)h(or)332 1800 y(pro)q(cedure)d(calls.)403 1862 y(Primitiv)o(es)22 b(are)f(de\014ned)i(b)o(y)e(a)g(group)g(of)g(one)g(or)g(more)g Fv(vertic)n(es)p FC(.)38 b(A)21 b(v)o(ertex)332 1918 y(de\014nes)h(a)f(p)q(oin)o(t,)h(an)f(endp)q(oin)o(t)h(of)e(an)h(edge,) h(or)f(a)f(corner)h(of)f(a)h(p)q(olygon)g(where)332 1975 y(t)o(w)o(o)13 b(edges)h(meet.)20 b(Data)13 b(\(consisting)h(of)g(p)q (ositional)i(co)q(ordinates,)e(colors,)g(normals,)332 2031 y(and)21 b(texture)f(co)q(ordinates\))h(are)f(asso)q(ciated)g (with)h(a)g(v)o(ertex)f(and)g(eac)o(h)h(v)o(ertex)f(is)332 2088 y(pro)q(cessed)14 b(indep)q(enden)o(tly)l(,)j(in)d(order,)f(and)h (in)g(the)f(same)g(w)o(a)o(y)l(.)19 b(The)13 b(only)h(exception)332 2144 y(to)h(this)i(rule)g(is)f(if)h(the)f(group)f(of)h(v)o(ertices)g(m) o(ust)g(b)q(e)g Fv(clipp)n(e)n(d)g FC(so)f(that)h(the)g(indicated)332 2201 y(primitiv)o(e)24 b(\014ts)e(within)h(a)f(sp)q(eci\014ed)i (region;)i(in)d(this)g(case)f(v)o(ertex)g(data)f(ma)o(y)h(b)q(e)332 2257 y(mo)q(di\014ed)c(and)e(new)g(v)o(ertices)h(created.)23 b(The)16 b(t)o(yp)q(e)g(of)g(clipping)j(dep)q(ends)e(on)g(whic)o(h)332 2313 y(primitiv)o(e)g(the)e(group)g(of)g(v)o(ertices)g(represen)o(ts.) 403 2375 y(Commands)d(are)h(alw)o(a)o(ys)g(pro)q(cessed)g(in)h(the)g (order)f(in)h(whic)o(h)g(they)f(are)g(receiv)o(ed,)332 2432 y(although)k(there)g(ma)o(y)f(b)q(e)h(an)g(indeterminate)h(dela)o (y)f(b)q(efore)g(the)g(e\013ects)f(of)g(a)h(com-)332 2488 y(mand)j(are)f(realized.)34 b(This)19 b(means,)h(for)f(example,)i (that)e(one)g(primitiv)o(e)i(m)o(ust)e(b)q(e)1068 2613 y(4)p eop %%Page: 5 14 5 13 bop 120 137 a Fx(2.1.)34 b(OPENGL)16 b(FUND)o(AMENT)l(ALS)766 b FC(5)120 286 y(dra)o(wn)16 b(completely)i(b)q(efore)e(an)o(y)g (subsequen)o(t)g(one)h(can)f(a\013ect)f(the)i(framebu\013er.)22 b(It)120 343 y(also)e(means)g(that)f(queries)h(and)g(pixel)i(read)d(op) q(erations)h(return)g(state)f(consisten)o(t)120 399 y(with)g(complete)g (execution)g(of)f(all)h(previously)g(in)o(v)o(ok)o(ed)g(GL)f(commands.) 29 b(In)18 b(gen-)120 456 y(eral,)g(the)g(e\013ects)f(of)f(a)h(GL)h (command)f(on)g(either)h(GL)g(mo)q(des)f(or)g(the)g(framebu\013er)120 512 y(m)o(ust)11 b(b)q(e)g(complete)h(b)q(efore)g(an)o(y)e(subsequen)o (t)i(command)f(can)g(ha)o(v)o(e)f(an)o(y)h(suc)o(h)g(e\013ects.)191 569 y(In)19 b(the)g(GL,)g(data)f(binding)j(o)q(ccurs)e(on)f(call.)32 b(This)20 b(means)e(that)g(data)g(passed)120 625 y(to)d(a)g(command)h (are)f(in)o(terpreted)h(when)g(that)e(command)i(is)g(receiv)o(ed.)21 b(Ev)o(en)16 b(if)g(the)120 682 y(command)j(requires)g(a)f(p)q(oin)o (ter)h(to)f(data,)g(those)g(data)g(are)g(in)o(terpreted)h(when)g(the) 120 738 y(call)e(is)f(made,)f(and)h(an)o(y)f(subsequen)o(t)h(c)o (hanges)g(to)f(the)g(data)g(ha)o(v)o(e)g(no)h(e\013ect)f(on)h(the)120 795 y(GL)g(\(unless)g(the)f(same)g(p)q(oin)o(ter)g(is)h(used)g(in)g(a)f (subsequen)o(t)h(command\).)191 851 y(The)h(GL)h(pro)o(vides)g(direct)g (con)o(trol)f(o)o(v)o(er)f(the)h(fundamen)o(tal)h(op)q(erations)f(of)g (3D)120 907 y(and)i(2D)e(graphics.)30 b(This)19 b(includes)h(sp)q (eci\014cation)h(of)c(suc)o(h)i(parameters)e(as)h(trans-)120 964 y(formation)13 b(matrices,)g(ligh)o(ting)h(equation)g(co)q (e\016cien)o(ts,)g(an)o(tialiasing)g(metho)q(ds,)g(and)120 1020 y(pixel)j(up)q(date)f(op)q(erators.)j(It)c(do)q(es)g(not)g(pro)o (vide)h(a)e(means)i(for)e(describing)j(or)e(mo)q(d-)120 1077 y(eling)j(complex)g(geometric)e(ob)s(jects.)24 b(Another)16 b(w)o(a)o(y)g(to)g(describ)q(e)i(this)f(situation)g(is)120 1133 y(to)c(sa)o(y)f(that)h(the)g(GL)g(pro)o(vides)g(mec)o(hanisms)h (to)e(describ)q(e)j(ho)o(w)e(complex)h(geometric)120 1190 y(ob)s(jects)g(are)g(to)g(b)q(e)h(rendered)g(rather)f(than)h(mec)o (hanisms)g(to)e(describ)q(e)j(the)f(complex)120 1246 y(ob)s(jects)g(themselv)o(es.)191 1303 y(The)d(mo)q(del)h(for)f(in)o (terpretation)g(of)f(GL)h(commands)g(is)h(clien)o(t-serv)o(er.)20 b(That)11 b(is,)i(a)120 1359 y(program)g(\(the)h(clien)o(t\))g(issues)h (commands,)e(and)h(these)g(commands)g(are)f(in)o(terpreted)120 1416 y(and)k(pro)q(cessed)f(b)o(y)g(the)g(GL)g(\(the)g(serv)o(er\).)22 b(The)16 b(serv)o(er)f(ma)o(y)h(or)f(ma)o(y)g(not)h(op)q(erate)120 1472 y(on)21 b(the)g(same)g(computer)g(as)g(the)g(clien)o(t.)39 b(In)21 b(this)h(sense,)g(the)f(GL)g(is)h(\\net)o(w)o(ork-)120 1528 y(transparen)o(t.")17 b(A)11 b(serv)o(er)g(ma)o(y)f(main)o(tain)h (a)f(n)o(um)o(b)q(er)h(of)g(GL)f Fv(c)n(ontexts)p FC(,)h(eac)o(h)g(of)f (whic)o(h)120 1585 y(is)17 b(an)e(encapsulation)j(of)d(curren)o(t)h(GL) f(state.)21 b(A)16 b(clien)o(t)h(ma)o(y)e(c)o(ho)q(ose)h(to)f Fv(c)n(onne)n(ct)f FC(to)120 1641 y(an)o(y)i(one)g(of)g(these)g(con)o (texts.)22 b(Issuing)17 b(GL)f(commands)g(when)h(the)f(program)f(is)h (not)120 1698 y Fv(c)n(onne)n(cte)n(d)e FC(to)g(a)h Fv(c)n(ontext)g FC(results)h(in)g(unde\014ned)h(b)q(eha)o(vior.)191 1754 y(The)12 b(e\013ects)f(of)g(GL)g(commands)g(on)h(the)f(framebu\013er)g (are)g(ultimately)i(con)o(trolled)120 1811 y(b)o(y)g(the)g(windo)o(w)f (system)h(that)f(allo)q(cates)h(framebu\013er)f(resources.)19 b(It)13 b(is)g(the)g(windo)o(w)120 1867 y(system)e(that)g(determines)i (whic)o(h)f(p)q(ortions)f(of)g(the)h(framebu\013er)f(the)g(GL)h(ma)o(y) f(access)120 1924 y(at)20 b(an)o(y)g(giv)o(en)g(time)h(and)f(that)g (comm)o(unicates)g(to)g(the)g(GL)g(ho)o(w)g(those)g(p)q(ortions)120 1980 y(are)j(structured.)41 b(Therefore,)24 b(there)f(are)f(no)g(GL)h (commands)f(to)g(con\014gure)h(the)120 2037 y(framebu\013er)18 b(or)f(initialize)22 b(the)c(GL.)f(Similarly)l(,)k(displa)o(y)e(of)f (framebu\013er)f(con)o(ten)o(ts)120 2093 y(on)g(a)g(CR)l(T)g(monitor)g (\(including)i(the)e(transformation)f(of)g(individual)k(framebu\013er) 120 2149 y(v)m(alues)15 b(b)o(y)d(suc)o(h)i(tec)o(hniques)g(as)f(gamma) f(correction\))g(is)i(not)f(addressed)g(b)o(y)g(the)g(GL.)120 2206 y(F)l(ramebu\013er)h(con\014guration)h(o)q(ccurs)g(outside)g(of)e (the)i(GL)f(in)i(conjunction)f(with)g(the)120 2262 y(windo)o(w)h (system;)f(the)h(initialization)i(of)d(a)g(GL)h(con)o(text)f(o)q(ccurs) h(when)g(the)g(windo)o(w)120 2319 y(system)f(allo)q(cates)h(a)f(windo)o (w)g(for)g(GL)g(rendering.)191 2375 y(The)d(GL)g(is)h(designed)g(to)f (b)q(e)g(run)g(on)g(a)g(range)g(of)f(graphics)i(platforms)e(with)i(v)m (ary-)120 2432 y(ing)h(graphics)f(capabilities)j(and)d(p)q(erformance.) 19 b(T)l(o)13 b(accommo)q(date)f(this)i(v)m(ariet)o(y)l(,)f(w)o(e)120 2488 y(sp)q(ecify)k(ideal)f(b)q(eha)o(vior)g(instead)g(of)f(actual)g(b) q(eha)o(vior)h(for)e(certain)i(GL)f(op)q(erations.)p eop %%Page: 6 15 6 14 bop 332 137 a FC(6)666 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)332 286 y FC(In)g(cases)f(where)g(deviation)h(from)f (the)g(ideal)h(is)g(allo)o(w)o(ed,)f(w)o(e)g(also)g(sp)q(ecify)h(the)g (rules)332 343 y(that)d(an)g(implemen)o(tation)i(m)o(ust)e(ob)q(ey)g (if)h(it)g(is)g(to)f(appro)o(ximate)g(the)g(ideal)i(b)q(eha)o(vior)332 399 y(usefully)l(.)35 b(This)20 b(allo)o(w)o(ed)g(v)m(ariation)g(in)g (GL)g(b)q(eha)o(vior)g(implies)h(that)e(t)o(w)o(o)f(distinct)332 456 y(GL)d(implemen)o(tations)h(ma)o(y)e(not)h(agree)f(pixel)j(for)d (pixel)i(when)g(presen)o(ted)f(with)g(the)332 512 y(same)g(input)h(ev)o (en)g(when)f(run)h(on)f(iden)o(tical)i(framebu\013er)e (con\014gurations.)403 569 y(Finally)l(,)20 b(command)e(names,)h (constan)o(ts,)f(and)h(t)o(yp)q(es)f(are)g(pre\014xed)i(in)f(the)f(GL) 332 625 y(\(b)o(y)h Fz(gl)p FC(,)i Fr(GL)p 538 625 14 2 v 15 w FC(,)f(and)g Fw(GL)p FC(,)e(resp)q(ectiv)o(ely)j(in)g Fw(C)p FC(\))d(to)h(reduce)h(name)g(clashes)g(with)g(other)332 682 y(pac)o(k)m(ages.)g(The)15 b(pre\014xes)h(are)f(omitted)g(in)h (this)g(do)q(cumen)o(t)f(for)g(clarit)o(y)l(.)332 802 y Fz(Floating-P)o(oin)o(t)20 b(Computation)332 888 y FC(The)j(GL)f(m)o(ust)g(p)q(erform)g(a)g(n)o(um)o(b)q(er)g(of)g (\015oating-p)q(oin)o(t)h(op)q(erations)f(during)h(the)332 944 y(course)17 b(of)g(its)g(op)q(eration.)26 b(W)l(e)17 b(do)g(not)g(sp)q(ecify)h(ho)o(w)f(\015oating-p)q(oin)o(t)g(n)o(um)o(b) q(ers)h(are)332 1001 y(to)10 b(b)q(e)h(represen)o(ted)g(or)e(ho)o(w)h (op)q(erations)h(on)f(them)g(are)g(to)g(b)q(e)h(p)q(erformed.)18 b(W)l(e)11 b(require)332 1057 y(simply)i(that)f(n)o(um)o(b)q(ers')g (\015oating-p)q(oin)o(t)h(parts)e(con)o(tain)h(enough)h(bits)f(and)h (that)e(their)332 1114 y(exp)q(onen)o(t)16 b(\014elds)i(are)d(large)h (enough)g(so)g(that)f(individual)k(results)d(of)g(\015oating-p)q(oin)o (t)332 1170 y(op)q(erations)d(are)f(accurate)h(to)f(ab)q(out)h(1)f (part)g(in)i(10)1213 1154 y Fq(5)1232 1170 y FC(.)19 b(The)13 b(maxim)o(um)g(represen)o(table)332 1227 y(magnitude)g(of)f(a) g(\015oating-p)q(oin)o(t)h(n)o(um)o(b)q(er)g(used)g(to)f(represen)o(t)h (p)q(ositional)h(or)d(normal)332 1283 y(co)q(ordinates)j(m)o(ust)f(b)q (e)h(at)e(least)i(2)924 1267 y Fq(32)961 1283 y FC(;)f(the)h(maxim)o (um)f(represen)o(table)h(magnitude)g(for)332 1340 y(colors)20 b(or)f(texture)g(co)q(ordinates)i(m)o(ust)e(b)q(e)h(at)f(least)h(2)1312 1323 y Fq(10)1349 1340 y FC(.)33 b(The)20 b(maxim)o(um)g(repre-)332 1396 y(sen)o(table)d(magnitude)g(for)f(all)i(other)e(\015oating-p)q (oin)o(t)h(v)m(alues)h(m)o(ust)e(b)q(e)h(at)f(least)h(2)1777 1380 y Fq(32)1814 1396 y FC(.)332 1453 y Fy(x)c FB(\001)f FC(0)19 b(=)h(0)12 b FB(\001)h Fy(x)19 b FC(=)g(0)g(for)g(an)o(y)g (non-in\014nite)i(and)e(non-NaN)h Fy(x)p FC(.)32 b(1)12 b FB(\001)g Fy(x)20 b FC(=)f Fy(x)13 b FB(\001)f FC(1)19 b(=)h Fy(x)p FC(.)332 1509 y Fy(x)7 b FC(+)g(0)14 b(=)e(0)7 b(+)g Fy(x)14 b FC(=)f Fy(x)p FC(.)19 b(0)732 1493 y Fq(0)764 1509 y FC(=)13 b(1.)19 b(\(Occasionally)d(further)e (requiremen)o(ts)g(will)h(b)q(e)g(sp)q(eci-)332 1565 y(\014ed.\))20 b(Most)14 b(single-precision)k(\015oating-p)q(oin)o(t)d (formats)f(meet)g(these)h(requiremen)o(ts.)403 1622 y(An)o(y)c (represen)o(table)h(\015oating-p)q(oin)o(t)g(v)m(alue)g(is)g(legal)g (as)f(input)h(to)e(a)h(GL)h(command)332 1678 y(that)h(requires)h (\015oating-p)q(oin)o(t)h(data.)j(The)c(result)g(of)f(pro)o(viding)i(a) e(v)m(alue)i(that)e(is)h(not)332 1735 y(a)20 b(\015oating-p)q(oin)o(t)g (n)o(um)o(b)q(er)g(to)f(suc)o(h)h(a)g(command)f(is)i(unsp)q(eci\014ed,) i(but)d(m)o(ust)f(not)332 1791 y(lead)f(to)f(GL)h(in)o(terruption)h(or) e(termination.)27 b(In)19 b(IEEE)e(arithmetic,)i(for)e(example,)332 1848 y(pro)o(viding)12 b(a)f(negativ)o(e)g(zero)g(or)f(a)h (denormalized)i(n)o(um)o(b)q(er)e(to)f(a)h(GL)g(command)g(yields)332 1904 y(predictable)19 b(results,)e(while)h(pro)o(viding)g(a)e(NaN)h(or) f(an)g(in\014nit)o(y)i(yields)h(unsp)q(eci\014ed)332 1961 y(results.)403 2017 y(Some)d(calculations)i(require)f(division.)26 b(In)17 b(suc)o(h)f(cases)h(\(including)i(implied)f(di-)332 2074 y(visions)h(required)g(b)o(y)f(v)o(ector)f(normalizations\),)i(a)e (division)j(b)o(y)e(zero)g(pro)q(duces)h(an)332 2130 y(unsp)q(eci\014ed)f(result)e(but)f(m)o(ust)g(not)f(lead)i(to)f(GL)g (in)o(terruption)h(or)f(termination.)332 2274 y Fs(2.2)66 b(GL)23 b(State)332 2375 y FC(The)13 b(GL)f(main)o(tains)g (considerable)i(state.)k(This)13 b(do)q(cumen)o(t)g(en)o(umerates)f (eac)o(h)g(state)332 2432 y(v)m(ariable)23 b(and)f(describ)q(es)i(ho)o (w)d(eac)o(h)h(v)m(ariable)i(can)e(b)q(e)g(c)o(hanged.)41 b(F)l(or)21 b(purp)q(oses)332 2488 y(of)c(discussion,)h(state)e(v)m (ariables)j(are)d(categorized)h(somewhat)g(arbitrarily)g(b)o(y)g(their) p eop %%Page: 7 16 7 15 bop 120 137 a Fx(2.3.)34 b(GL)16 b(COMMAND)e(SYNT)l(AX)827 b FC(7)120 286 y(function.)21 b(Although)14 b(w)o(e)f(describ)q(e)i (the)f(op)q(erations)g(that)f(the)g(GL)h(p)q(erforms)f(on)h(the)120 343 y(framebu\013er,)h(the)g(framebu\013er)g(is)g(not)g(a)g(part)g(of)f (GL)i(state.)191 399 y(W)l(e)k(distinguish)i(t)o(w)o(o)d(t)o(yp)q(es)h (of)g(state.)34 b(The)20 b(\014rst)g(t)o(yp)q(e)g(of)g(state,)g(called) i(GL)120 456 y Fv(server)d(state)p FC(,)e(resides)i(in)f(the)g(GL)g (serv)o(er.)27 b(The)17 b(ma)s(jorit)o(y)g(of)g(GL)h(state)e(falls)j (in)o(to)120 512 y(this)14 b(category)l(.)k(The)13 b(second)h(t)o(yp)q (e)f(of)g(state,)f(called)j(GL)e Fv(client)g(state)p FC(,)g(resides)h(in)g(the)120 569 y(GL)i(clien)o(t.)21 b(Unless)16 b(otherwise)f(sp)q(eci\014ed,)i(all)f(state)e(referred)h (to)g(in)h(this)f(do)q(cumen)o(t)120 625 y(is)f(GL)g(serv)o(er)f (state;)g(GL)h(clien)o(t)h(state)d(is)j(sp)q(eci\014cally)h(iden)o (ti\014ed.)21 b(Eac)o(h)14 b(instance)g(of)120 682 y(a)i(GL)h(con)o (text)e(implies)k(one)d(complete)h(set)f(of)g(GL)h(serv)o(er)f(state;)f (eac)o(h)i(connection)120 738 y(from)d(a)f(clien)o(t)j(to)d(a)h(serv)o (er)g(implies)i(a)d(set)h(of)g(b)q(oth)g(GL)g(clien)o(t)i(state)d(and)h (GL)g(serv)o(er)120 795 y(state.)191 851 y(While)19 b(an)f(implemen)o (tation)i(of)e(the)g(GL)g(ma)o(y)f(b)q(e)i(hardw)o(are)e(dep)q(enden)o (t,)j(this)120 907 y(discussion)e(is)f(indep)q(enden)o(t)i(of)c(the)i (sp)q(eci\014c)h(hardw)o(are)d(on)h(whic)o(h)h(a)f(GL)g(is)h(imple-)120 964 y(men)o(ted.)33 b(W)l(e)20 b(are)f(therefore)g(concerned)i(with)e (the)h(state)e(of)i(graphics)f(hardw)o(are)120 1020 y(only)d(when)g(it) f(corresp)q(onds)h(precisely)h(to)d(GL)i(state.)120 1161 y Fs(2.3)67 b(GL)22 b(Command)g(Syn)n(tax)120 1263 y FC(GL)e(commands)e(are)h(functions)h(or)f(pro)q(cedures.)32 b(V)l(arious)20 b(groups)e(of)h(commands)120 1319 y(p)q(erform)i(the)g (same)f(op)q(eration)h(but)g(di\013er)g(in)h(ho)o(w)e(argumen)o(ts)g (are)g(supplied)j(to)120 1375 y(them.)d(T)l(o)13 b(con)o(v)o(enien)o (tly)h(accommo)q(date)f(this)h(v)m(ariation,)g(w)o(e)f(adopt)g(a)g (notation)g(for)120 1432 y(describing)k(commands)e(and)h(their)g (argumen)o(ts.)191 1488 y(GL)f(commands)f(are)h(formed)f(from)g(a)g Fv(name)h FC(follo)o(w)o(ed,)g(dep)q(ending)h(on)f(the)g(par-)120 1545 y(ticular)k(command,)f(b)o(y)g(up)g(to)g(4)f(c)o(haracters.)27 b(The)19 b(\014rst)e(c)o(haracter)g(indicates)j(the)120 1601 y(n)o(um)o(b)q(er)c(of)g(v)m(alues)g(of)g(the)f(indicated)j(t)o (yp)q(e)e(that)f(m)o(ust)g(b)q(e)h(presen)o(ted)g(to)f(the)h(com-)120 1658 y(mand.)k(The)c(second)f(c)o(haracter)g(or)f(c)o(haracter)h(pair)g (indicates)i(the)e(sp)q(eci\014c)i(t)o(yp)q(e)e(of)120 1714 y(the)i(argumen)o(ts:)23 b(8-bit)17 b(in)o(teger,)g(16-bit)g(in)o (teger,)g(32-bit)g(in)o(teger,)g(single-precision)120 1771 y(\015oating-p)q(oin)o(t,)26 b(or)c(double-precision)k (\015oating-p)q(oin)o(t.)44 b(The)24 b(\014nal)f(c)o(haracter,)h(if)120 1827 y(presen)o(t,)19 b(is)g Fw(v)p FC(,)f(indicating)i(that)e(the)g (command)g(tak)o(es)g(a)g(p)q(oin)o(ter)h(to)e(an)h(arra)o(y)f(\(a)120 1884 y(v)o(ector\))e(of)g(v)m(alues)h(rather)f(than)g(a)g(series)h(of)f (individual)j(argumen)o(ts.)h(Tw)o(o)c(sp)q(eci\014c)120 1940 y(examples)h(come)g(from)e(the)h Fz(V)l(ertex)f FC(command:)234 2021 y Fw(void)30 b Fz(V)l(ertex3f)p FC(\()e Fw(float)15 b Fv(x)p Fw(,)g(float)f Fv(y)p Fw(,)i(float)e Fv(z)h FC(\))g Fw(;)120 2102 y FC(and)234 2182 y Fw(void)30 b Fz(V)l(ertex2sv)p FC(\()e Fw(short)14 b Fv(v[2])h FC(\))g Fw(;)120 2263 y FC(These)23 b(examples)h(sho)o(w)e(the)g(ANSI)i Fw(C)e FC(declarations)h(for)f(these)h(commands.)42 b(In)120 2320 y(general,)31 b(a)15 b(command)g(declaration)h(has)f(the)g(form) 1037 2303 y FG(\003)p 120 2354 598 2 v 172 2381 a Fp(\003)189 2397 y Fo(The)h(declarations)j(sho)o(wn)d(in)h(this)g(do)q(cumen)o(t)f (apply)i(to)e(ANSI)f Fn(C)p Fo(.)g(Languages)i(suc)o(h)g(as)f Fn(C++)120 2443 y Fo(and)d(Ada)f(that)h(allo)o(w)g(passing)h(of)e (argumen)o(t)h(t)o(yp)q(e)f(information)i(admit)f(simpler)h (declarations)h(and)120 2488 y(few)o(er)e(en)o(try)g(p)q(oin)o(ts.)p eop %%Page: 8 17 8 16 bop 332 137 a FC(8)666 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 734 242 692 2 v 733 299 2 57 v 758 282 a FC(Letter)p 904 299 V 50 w(Corresp)q(onding)g Fw(GL)f FC(T)o(yp)q(e)p 1424 299 V 734 301 692 2 v 734 309 V 733 365 2 57 v 805 348 a Fz(b)p 904 365 V 96 w Fw(byte)p 1424 365 V 734 367 692 2 v 733 423 2 57 v 809 406 a Fz(s)p 904 423 V 100 w Fw(short)p 1424 423 V 734 425 692 2 v 733 482 2 57 v 812 465 a Fz(i)p 904 482 V 104 w Fw(int)p 1424 482 V 734 483 692 2 v 733 540 2 57 v 811 523 a Fz(f)p 904 540 V 103 w Fw(float)p 1424 540 V 734 541 692 2 v 733 598 2 57 v 805 581 a Fz(d)p 904 598 V 96 w Fw(double)p 1424 598 V 734 599 692 2 v 733 656 2 57 v 790 639 a Fz(ub)p 904 656 V 82 w Fw(ubyte)p 1424 656 V 734 658 692 2 v 733 714 2 57 v 795 697 a Fz(us)p 904 714 V 85 w Fw(ushort)p 1424 714 V 734 716 692 2 v 733 772 2 57 v 798 755 a Fz(ui)p 904 772 V 89 w Fw(uint)p 1424 772 V 734 774 692 2 v 332 851 a FC(T)l(able)e(2.1:)18 b(Corresp)q(ondence)13 b(of)f(command)h (su\016x)f(letters)h(to)f(GL)g(argumen)o(t)g(t)o(yp)q(es.)332 907 y(Refer)k(to)e(T)l(able)i(2.2)f(for)f(de\014nitions)j(of)e(the)g (GL)g(t)o(yp)q(es.)446 1089 y Fv(rtyp)n(e)g Fz(Name)p FB(f)p Fy(\017)p Fz(1234)p FB(gf)p Fy(\017)j Fz(b)f(s)g(i)h(f)g(d)f(ub) h(us)f(ui)p FB(gf)p Fy(\017)p Fz(v)p FB(g)806 1146 y Fw(\()e Fv([ar)n(gs)h(,])g(T)f(ar)n(g1)i(,)f Fy(:)8 b(:)g(:)14 b Fv(,)j(T)e(ar)n(g)p Fy(N)21 b Fv([,)16 b(ar)n(gs])31 b Fw(\);)332 1233 y Fv(rtyp)n(e)20 b FC(is)f(the)h(return)f(t)o(yp)q(e) h(of)f(the)g(function.)33 b(The)20 b(braces)f(\()p FB(fg)p FC(\))f(enclose)j(a)e(series)332 1289 y(of)g(c)o(haracters)f(\(or)h(c)o (haracter)f(pairs\))h(of)g(whic)o(h)h(one)f(is)h(selected.)33 b Fy(\017)20 b FC(indicates)h(no)332 1346 y(c)o(haracter.)28 b(The)19 b(argumen)o(ts)e(enclosed)i(in)h(brac)o(k)o(ets)d(\()p Fv([ar)n(gs)h(,])h FC(and)f Fv([,)i(ar)n(gs])p FC(\))d(ma)o(y)332 1402 y(or)e(ma)o(y)g(not)h(b)q(e)g(presen)o(t.)22 b(The)16 b Fy(N)k FC(argumen)o(ts)15 b Fv(ar)n(g1)h FC(through)g Fv(ar)n(g)p Fy(N)k FC(ha)o(v)o(e)15 b(t)o(yp)q(e)h Fv(T)p FC(,)332 1458 y(whic)o(h)i(corresp)q(onds)g(to)e(one)h(of)g(the)g(t)o (yp)q(e)g(letters)h(or)e(letter)i(pairs)f(as)g(indicated)i(in)332 1515 y(T)l(able)e(2.1)f(\(if)h(there)f(are)g(no)h(letters,)f(then)h (the)g(argumen)o(ts')e(t)o(yp)q(e)h(is)h(giv)o(en)g(explic-)332 1571 y(itly\).)j(If)c(the)f(\014nal)h(c)o(haracter)e(is)i(not)e Fz(v)p FC(,)h(then)g Fy(N)k FC(is)d(giv)o(en)g(b)o(y)f(the)g(digit)h Fz(1)p FC(,)e Fz(2)p FC(,)h Fz(3)p FC(,)g(or)332 1628 y Fz(4)i FC(\(if)g(there)g(is)g(no)g(digit,)h(then)f(the)g(n)o(um)o(b)q (er)g(of)g(argumen)o(ts)f(is)h(\014xed\).)26 b(If)17 b(the)g(\014nal)332 1684 y(c)o(haracter)g(is)i Fz(v)p FC(,)f(then)g(only)h Fv(ar)n(g1)f FC(is)h(presen)o(t)f(and)g(it)g(is)h (an)f(arra)o(y)f(of)g Fy(N)23 b FC(v)m(alues)c(of)332 1741 y(the)14 b(indicated)h(t)o(yp)q(e.)20 b(Finally)l(,)15 b(w)o(e)e(indicate)i(an)f Fw(unsigned)f FC(t)o(yp)q(e)g(b)o(y)h(the)g (shorthand)332 1797 y(of)h(prep)q(ending)j(a)d Fw(u)g FC(to)g(the)h(b)q(eginning)i(of)d(the)g(t)o(yp)q(e)h(name)g(\(so)e (that,)h(for)g(instance,)332 1854 y Fw(unsigned)23 b(char)14 b FC(is)i(abbreviated)g Fw(uchar)p FC(\).)403 1910 y(F)l(or)e(example,) 446 1997 y Fw(void)29 b Fz(Normal3)p FB(f)p Fz(fd)p FB(g)p FC(\()h Fw(T)15 b Fv(ar)n(g)g FC(\))g Fw(;)332 2084 y FC(indicates)i(the)e(t)o(w)o(o)f(declarations)446 2171 y Fw(void)29 b Fz(Normal3f)p FC(\()i Fw(float)14 b Fv(ar)n(g1)p Fw(,)h(float)g Fv(ar)n(g2)p Fw(,)g(float)g Fv(ar)n(g3)g FC(\))g Fw(;)446 2227 y(void)27 b Fz(Normal3d)p FC(\()h Fw(double)14 b Fv(ar)n(g1)p Fw(,)g(double)f Fv(ar)n(g2)p Fw(,)i(double)e Fv(ar)n(g3)h FC(\))g Fw(;)332 2314 y FC(while)446 2401 y Fw(void)29 b Fz(Normal3)p FB(f)p Fz(fd)p FB(g)p Fz(v)p FC(\()h Fw(T)15 b Fv(ar)n(g)g FC(\))g Fw(;)332 2488 y FC(means)g(the)h(t)o(w)o(o)d(declarations)p eop %%Page: 9 18 9 17 bop 120 137 a Fx(2.4.)34 b(BASIC)16 b(GL)g(OPERA)l(TION)852 b FC(9)234 286 y Fw(void)30 b Fz(Normal3fv)p FC(\()g Fw(float)14 b Fv(ar)n(g[3])h FC(\))g Fw(;)234 343 y(void)30 b Fz(Normal3dv)p FC(\()g Fw(double)14 b Fv(ar)n(g[3])h FC(\))g Fw(;)191 468 y FC(Argumen)o(ts)20 b(whose)h(t)o(yp)q(e)g(is)g (\014xed)g(\(i.e.)37 b(not)20 b(indicated)j(b)o(y)e(a)f(su\016x)h(on)g (the)120 524 y(command\))15 b(are)g(of)g(one)g(of)g(14)f(t)o(yp)q(es)h (\(or)f(p)q(oin)o(ters)i(to)f(one)g(of)f(these\).)20 b(These)c(t)o(yp)q(es)120 580 y(are)f(summarized)h(in)g(T)l(able)g (2.2.)120 768 y Fs(2.4)67 b(Basic)22 b(GL)g(Op)r(eration)120 884 y FC(Figure)16 b(2.1)f(sho)o(ws)g(a)h(sc)o(hematic)g(diagram)f(of)h (the)g(GL.)f(Commands)g(en)o(ter)h(the)g(GL)120 941 y(on)i(the)h(left.) 28 b(Some)19 b(commands)e(sp)q(ecify)j(geometric)e(ob)s(jects)f(to)h(b) q(e)h(dra)o(wn)e(while)120 997 y(others)k(con)o(trol)g(ho)o(w)g(the)g (ob)s(jects)g(are)g(handled)i(b)o(y)e(the)h(v)m(arious)f(stages.)38 b(Most)120 1054 y(commands)14 b(ma)o(y)e(b)q(e)j(accum)o(ulated)f(in)g (a)f Fv(display)i(list)e FC(for)f(pro)q(cessing)j(b)o(y)e(the)h(GL)f (at)120 1110 y(a)g(later)g(time.)20 b(Otherwise,)13 b(commands)g(are)g (e\013ectiv)o(ely)h(sen)o(t)f(through)f(a)h(pro)q(cessing)120 1167 y(pip)q(eline)q(.)191 1231 y(The)j(\014rst)f(stage)g(pro)o(vides)g (an)h(e\016cien)o(t)g(means)g(for)e(appro)o(ximating)i(curv)o(e)g(and) 120 1287 y(surface)i(geometry)f(b)o(y)g(ev)m(aluating)i(p)q(olynomial)g (functions)g(of)e(input)h(v)m(alues.)28 b(The)120 1344 y(next)19 b(stage)e(op)q(erates)h(on)h(geometric)f(primitiv)o(es)i (describ)q(ed)g(b)o(y)e(v)o(ertices:)27 b(p)q(oin)o(ts,)120 1400 y(line)18 b(segmen)o(ts,)d(and)g(p)q(olygons.)22 b(In)16 b(this)g(stage)f(v)o(ertices)h(are)g(transformed)e(and)i(lit,) 120 1457 y(and)h(primitiv)o(es)g(are)f(clipp)q(ed)j(to)c(a)h(viewing)h (v)o(olume)g(in)g(preparation)f(for)f(the)i(next)120 1513 y(stage,)11 b(rasterization.)18 b(The)10 b(rasterizer)h(pro)q (duces)g(a)f(series)h(of)f(framebu\013er)g(addresses)120 1569 y(and)17 b(v)m(alues)g(using)f(a)g(t)o(w)o(o-dimensional)h (description)h(of)d(a)h(p)q(oin)o(t,)g(line)i(segmen)o(t,)d(or)120 1626 y(p)q(olygon.)21 b(Eac)o(h)16 b Fv(fr)n(agment)f FC(so)g(pro)q(duced)h(is)g(fed)g(to)f(the)g(next)h(stage)e(that)h(p)q (erforms)120 1682 y(op)q(erations)f(on)g(individual)i(fragmen)o(ts)d(b) q(efore)h(they)f(\014nally)i(alter)f(the)g(framebu\013er.)120 1739 y(These)23 b(op)q(erations)f(include)i(conditional)g(up)q(dates)f (in)o(to)f(the)g(framebu\013er)f(based)120 1795 y(on)16 b(incoming)g(and)g(previously)h(stored)e(depth)h(v)m(alues)g(\(to)f (e\013ect)g(depth)h(bu\013ering\),)120 1852 y(blending)h(of)d(incoming) i(fragmen)o(t)e(colors)g(with)h(stored)f(colors,)h(as)f(w)o(ell)h(as)g (masking)120 1908 y(and)h(other)f(logical)h(op)q(erations)f(on)g (fragmen)o(t)g(v)m(alues.)191 1972 y(Finally)l(,)22 b(there)e(is)g(a)g (w)o(a)o(y)e(to)h(b)o(ypass)h(the)g(v)o(ertex)f(pro)q(cessing)h(p)q (ortion)g(of)g(the)120 2029 y(pip)q(eline)k(to)19 b(send)i(a)f(blo)q(c) o(k)h(of)f(fragmen)o(ts)f(directly)j(to)d(the)h(individual)k(fragmen)o (t)120 2085 y(op)q(erations,)16 b(ev)o(en)o(tually)h(causing)f(a)f(blo) q(c)o(k)i(of)e(pixels)i(to)e(b)q(e)i(written)e(to)g(the)h(frame-)120 2142 y(bu\013er;)k(v)m(alues)f(ma)o(y)f(also)g(b)q(e)i(read)e(bac)o(k)g (from)g(the)g(framebu\013er)g(or)g(copied)h(from)120 2198 y(one)12 b(p)q(ortion)h(of)e(the)h(framebu\013er)g(to)f(another.) 18 b(These)12 b(transfers)g(ma)o(y)f(include)j(some)120 2255 y(t)o(yp)q(e)i(of)e(deco)q(ding)j(or)e(enco)q(ding.)191 2319 y(This)d(ordering)f(is)h(mean)o(t)e(only)i(as)f(a)f(to)q(ol)h(for) g(describing)i(the)e(GL,)g(not)f(as)h(a)g(strict)120 2375 y(rule)19 b(of)e(ho)o(w)h(the)g(GL)g(is)g(implemen)o(ted,)i(and)e (w)o(e)f(presen)o(t)h(it)g(only)h(as)e(a)h(means)f(to)120 2432 y(organize)e(the)g(v)m(arious)h(op)q(erations)f(of)f(the)h(GL.)g (Ob)s(jects)f(suc)o(h)i(as)e(curv)o(ed)h(surfaces,)120 2488 y(for)g(instance,)h(ma)o(y)e(b)q(e)i(transformed)e(b)q(efore)i (they)f(are)g(con)o(v)o(erted)g(to)f(p)q(olygons.)p eop %%Page: 10 19 10 18 bop 332 137 a FC(10)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 332 582 1546 2 v 331 638 2 57 v 362 621 a FC(GL)f(T)o(yp)q(e)p 572 638 V 55 w(Minim)o(um)h(Num)o (b)q(er)f(of)g(Bits)p 1137 638 V 50 w(Description)p 1877 638 V 332 640 1546 2 v 332 648 V 331 704 2 57 v 369 687 a Fw(boolean)p 572 704 V 307 w FC(1)p 1137 704 V 295 w(Bo)q(olean)p 1877 704 V 332 706 1546 2 v 331 819 2 113 v 405 746 a Fw(byte)p 572 819 V 343 w FC(8)p 1137 819 V 295 w(signed)50 b(2's)e(complemen)o(t)i(binary)1162 802 y(in)o(teger)p 1877 819 V 332 821 1546 2 v 331 877 2 57 v 393 860 a Fw(ubyte)p 572 877 V 331 w FC(8)p 1137 877 V 295 w(unsigned)17 b(binary)f(in)o(teger)p 1877 877 V 332 879 1546 2 v 331 992 2 113 v 393 918 a Fw(short)p 572 992 V 319 w FC(16)p 1137 992 V 284 w(signed)50 b(2's)e(complemen)o (t)i(binary)1162 975 y(in)o(teger)p 1877 992 V 332 993 1546 2 v 331 1050 2 57 v 381 1033 a Fw(ushort)p 572 1050 V 307 w FC(16)p 1137 1050 V 284 w(unsigned)17 b(binary)f(in)o(teger)p 1877 1050 V 332 1051 1546 2 v 331 1164 2 113 v 417 1091 a Fw(int)p 572 1164 V 343 w FC(32)p 1137 1164 V 284 w(signed)50 b(2's)e(complemen)o(t)i(binary)1162 1147 y(in)o(teger)p 1877 1164 V 332 1166 1546 2 v 331 1222 2 57 v 405 1206 a Fw(uint)p 572 1222 V 331 w FC(32)p 1137 1222 V 284 w(unsigned)17 b(binary)f(in)o(teger)p 1877 1222 V 332 1224 1546 2 v 331 1281 2 57 v 393 1264 a Fw(sizei)p 572 1281 V 319 w FC(32)p 1137 1281 V 284 w(Non-negativ)o(e)g(binary)g(in)o (teger)f(size)p 1877 1281 V 332 1282 1546 2 v 331 1339 2 57 v 405 1322 a Fw(enum)p 572 1339 V 331 w FC(32)p 1137 1339 V 284 w(En)o(umerated)g(binary)h(in)o(teger)g(v)m(alue)p 1877 1339 V 332 1340 1546 2 v 331 1397 2 57 v 357 1380 a Fw(bitfield)p 572 1397 V 283 w FC(32)p 1137 1397 V 284 w(Bit)g(\014eld)p 1877 1397 V 332 1398 1546 2 v 331 1455 2 57 v 393 1438 a Fw(float)p 572 1455 V 319 w FC(32)p 1137 1455 V 284 w(Floating-p)q(oin)o(t)g(v)m(alue)p 1877 1455 V 332 1457 1546 2 v 331 1570 2 113 v 381 1496 a Fw(clampf)p 572 1570 V 307 w FC(32)p 1137 1570 V 284 w(Floating-p)q(oin)o(t)34 b(v)m(alue)f(clamp)q(ed)h(to)1162 1553 y([0)p Fy(;)8 b FC(1])p 1877 1570 V 332 1571 1546 2 v 331 1628 2 57 v 381 1611 a Fw(double)p 572 1628 V 307 w FC(64)p 1137 1628 V 284 w(Floating-p)q(oin)o(t)16 b(v)m(alue)p 1877 1628 V 332 1629 1546 2 v 331 1742 2 113 v 381 1669 a Fw(clampd)p 572 1742 V 307 w FC(64)p 1137 1742 V 284 w(Floating-p)q(oin)o(t)34 b(v)m(alue)f(clamp)q(ed)h(to) 1162 1725 y([0)p Fy(;)8 b FC(1])p 1877 1742 V 332 1744 1546 2 v 332 1821 a(T)l(able)18 b(2.2:)24 b(GL)18 b(data)f(t)o(yp)q (es.)26 b(GL)18 b(t)o(yp)q(es)g(are)f(not)g(C)g(t)o(yp)q(es.)27 b(Th)o(us,)18 b(for)f(example,)332 1878 y(GL)23 b(t)o(yp)q(e)g Fw(int)f FC(is)h(referred)g(to)f(as)g Fw(GLint)g FC(outside)h(this)g (do)q(cumen)o(t,)i(and)e(is)g(not)332 1934 y(necessarily)16 b(equiv)m(alen)o(t)f(to)f(the)g(C)g(t)o(yp)q(e)g Fw(int)p FC(.)19 b(An)c(implemen)o(tation)g(ma)o(y)e(use)i(more)332 1990 y(bits)f(than)f(the)g(n)o(um)o(b)q(er)h(indicated)h(in)f(the)f (table)h(to)e(represen)o(t)i(a)f(GL)g(t)o(yp)q(e.)19 b(Correct)332 2047 y(in)o(terpretation)d(of)f(in)o(teger)h(v)m(alues)g (outside)g(the)g(minim)o(um)g(range)g(is)g(not)f(required,)332 2103 y(ho)o(w)o(ev)o(er.)p eop %%Page: 11 20 11 19 bop 120 137 a Fx(2.5.)34 b(GL)16 b(ERR)o(ORS)1074 b FC(11)p 139 242 1459 2 v 139 1045 2 803 v 193 317 a 21313290 9164712 1052508 13616824 56769658 37890293 startTexFig 193 317 a %%BeginDocument: pics/block.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Courier-Bold-SHOWISO exch definefont pop /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave gsave matrix currentmatrix [1 0 0 1 127.5 545.5] concat newpath 0 0 M 0 2 L 2 2 L 2 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 125.5 543.5 M 125.5 549.5 L 131.5 549.5 L 131.5 543.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 127.5 545.5] concat setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 119.5 500.5] concat newpath 0 0 M 0 2 L 2 2 L 2 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 117.5 498.5 M 117.5 504.5 L 123.5 504.5 L 123.5 498.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 119.5 500.5] concat setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 82 519] concat newpath 0 0 M 0 44 L 76.026 44 L 76.026 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 80 517 M 80 565 L 160.026 565 L 160.026 517 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 82 519] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 10 25.913 M (Display) 64.026 S 10 3.91304 M ( List) 47.016 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 162 412] concat newpath 0 0 M 0 24 L 84.026 24 L 84.026 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 160 410 M 160 438 L 248.026 438 L 248.026 410 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 162 412] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Evaluator) 82.026 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 302 432] concat newpath 0 0 M 0 48 L 97.022 48 L 97.022 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 300 430 M 300 482 L 401.022 482 L 401.022 430 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 302 432] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 27.913 M (Per-Vertex) 94.554 S 0 3.91304 M (Operations) 95.022 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 471 401] concat newpath 0 0 M 0 48 L 82.532 48 L 82.532 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 469 399 M 469 451 L 555.532 451 L 555.532 399 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 471 401] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 27.913 M (Rasteriz-) 80.532 S 0 3.91304 M (ation) 43.002 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 599 387] concat newpath 0 0 M 0 72 L 97.022 72 L 97.022 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 597 385 M 597 461 L 698.022 461 L 698.022 385 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 599 387] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 51.913 M (Per-) 39.528 S 0 27.913 M (Fragment) 82.008 S 0 3.91304 M (Operations) 95.022 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 739 411] concat newpath 0 0 M 0 24 L 107.012 24 L 107.012 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 737 409 M 737 437 L 848.012 437 L 848.012 409 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 739 411] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Framebuffer) 105.012 S setmatrix grestore gsave matrix currentmatrix [88 0 0 64 80 512] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [104 0 0 104 152 376] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [140 0 0 103 284 377] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [112 0 0 104 455 375] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [104 0 0 104 595 375] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [136 0 0 136 727 359] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 307 215] concat newpath 0 0 M 0 48 L 97.022 48 L 97.022 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 305 213 M 305 265 L 406.022 265 L 406.022 213 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 307 215] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 27.913 M (Pixel) 42.03 S 0 3.91304 M (Operations) 95.022 S setmatrix grestore gsave matrix currentmatrix [112 0 0 64 303 207] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 41 424 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 36 424 M 22 424 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 48 240 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 304 240 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 67 240 M 303 240 L 303 240 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 149 424 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 16 424 M 130 424 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 256 428 M closepath stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 285 424 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 256 424 M 266 424 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 455 424 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 426 424 M 436 424 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 596 423 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 567 423 M 577 423 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 728 423 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 699 423 M 709 423 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 120 423 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 120 512 M 120 442 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 96 239 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 96 512 M 96 258 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 48 240 M 48 424 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 41 444 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 36 444 M 22 444 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 81 544 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 20 444 M 48 444 L 48 544 L 62 544 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 303 377] concat newpath 0 0 M 0 48 L 87.032 48 L 87.032 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 301 375 M 301 427 L 392.032 427 L 392.032 375 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 303 377] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 27.913 M (Primitive) 76.032 S 0 3.91304 M (Assembly) 85.032 S setmatrix grestore gsave matrix currentmatrix [96 0 0 56 463 279] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 475 281] concat newpath 0 0 M 0 48 L 71.012 48 L 71.012 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 473 279 M 473 331 L 548.012 331 L 548.012 279 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 475 281] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 27.913 M (Texture) 65.016 S 0 3.91304 M (Memory) 69.012 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 512 377 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 512 336 M 512 358 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 512 281 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 416 248 M 512 248 L 512 262 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 415 232 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 800 361 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 434 232 M 800 232 L 800 342 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 457 400 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 432 248 M 432 400 L 438 400 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1016 a Fm(Figure)14 b(2.1.)j(Blo)q(c)o(k)c(diagram)f(of)h(the)i (GL.)p 1595 1045 2 803 v 139 1047 1459 2 v 120 1227 a Fs(2.5)67 b(GL)22 b(Errors)120 1331 y FC(The)17 b(GL)f(detects)h(only)g (a)e(subset)i(of)f(those)g(conditions)h(that)f(could)h(b)q(e)g (considered)120 1387 y(errors.)i(This)13 b(is)h(b)q(ecause)g(in)f(man)o (y)g(cases)g(error)f(c)o(hec)o(king)i(w)o(ould)f(adv)o(ersely)g(impact) 120 1444 y(the)j(p)q(erformance)f(of)g(an)g(error-free)g(program.)191 1501 y(The)g(command)234 1599 y Fw(enum)30 b Fz(GetError)p FC(\()f Fw(void)39 b FC(\))14 b Fw(;)120 1697 y FC(is)22 b(used)h(to)d(obtain)i(error)f(information.)39 b(Eac)o(h)21 b(detectable)i(error)e(is)h(assigned)g(a)120 1753 y(n)o(umeric)h(co)q (de.)41 b(When)22 b(an)g(error)f(is)i(detected,)g(a)f(\015ag)g(is)g (set)g(and)g(the)g(co)q(de)g(is)120 1810 y(recorded.)35 b(F)l(urther)20 b(errors,)g(if)g(they)g(o)q(ccur,)h(do)f(not)g (a\013ect)f(this)h(recorded)h(co)q(de.)120 1866 y(When)i Fz(GetError)f FC(is)g(called,)j(the)e(co)q(de)g(is)f(returned)h(and)f (the)h(\015ag)e(is)i(cleared,)120 1923 y(so)d(that)f(a)g(further)h (error)f(will)i(again)f(record)g(its)g(co)q(de.)34 b(If)20 b(a)f(call)i(to)e Fz(GetError)120 1979 y FC(returns)c Fr(NO)p 324 1979 14 2 v 16 w(ERROR)p FC(,)e(then)i(there)g(has)g(b)q (een)h(no)f(detectable)h(error)e(since)j(the)e(last)g(call)120 2036 y(to)g Fz(GetError)g FC(\(or)f(since)i(the)g(GL)f(w)o(as)f (initialized)q(\).)191 2093 y(T)l(o)22 b(allo)o(w)h(for)g(distributed)h (implemen)o(tations,)i(there)c(ma)o(y)g(b)q(e)i(sev)o(eral)f(\015ag-) 120 2149 y(co)q(de)e(pairs.)36 b(In)21 b(this)g(case,)h(after)e(a)g (call)h(to)f Fz(GetError)g FC(returns)g(a)g(v)m(alue)i(other)120 2206 y(than)c Fr(NO)p 276 2206 V 15 w(ERROR)e FC(eac)o(h)h(subsequen)o (t)h(call)h(returns)e(the)g(non-zero)h(co)q(de)g(of)f(a)g(distinct)120 2262 y(\015ag-co)q(de)e(pair)g(\(in)h(unsp)q(eci\014ed)h(order\),)d(un) o(til)h(all)h(non-)p Fr(NO)p 1160 2262 V 16 w(ERROR)d FC(co)q(des)i(ha)o(v)o(e)g(b)q(een)120 2319 y(returned.)31 b(When)19 b(there)f(are)g(no)h(more)f(non-)p Fr(NO)p 986 2319 V 16 w(ERROR)f FC(error)h(co)q(des,)h(all)h(\015ags)e(are)120 2375 y(reset.)j(This)c(sc)o(heme)f(requires)g(some)g(p)q(ositiv)o(e)g (n)o(um)o(b)q(er)g(of)f(pairs)h(of)g(a)f(\015ag)g(bit)i(and)120 2432 y(an)e(in)o(teger.)20 b(The)15 b(initial)i(state)d(of)g(all)i (\015ags)e(is)h(cleared)h(and)f(the)g(initial)i(v)m(alue)e(of)g(all)120 2488 y(co)q(des)h(is)g Fr(NO)p 336 2488 V 15 w(ERROR)p FC(.)p eop %%Page: 12 21 12 20 bop 332 137 a FC(12)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 368 242 1423 2 v 367 355 2 113 v 393 282 a FC(Error)p 782 355 V 791 355 V 315 w(Description)p 1440 355 V 423 w(O\013ending)c(com-)1465 338 y(mand)k(ignored?)p 1790 355 V 368 357 1423 2 v 368 365 V 367 422 2 57 v 393 405 a Fr(INVALID)p 550 405 14 2 v 14 w(ENUM)p 782 422 2 57 v 791 422 V 167 w Fw(enum)e FC(argumen)o(t)h(out)f(of)h(range)p 1440 422 V 94 w(Y)l(es)p 1790 422 V 368 423 1423 2 v 367 536 2 113 v 393 463 a Fr(INVALID)p 550 463 14 2 v 14 w(VALUE)p 782 536 2 113 v 791 536 V 145 w FC(Numeric)48 b(argumen)o(t)e(out)h(of)816 519 y(range)p 1440 536 V 1465 463 a(Y)l(es)p 1790 536 V 368 538 1423 2 v 367 651 2 113 v 393 578 a Fr(INVALID)p 550 578 14 2 v 14 w(OPERATION)p 782 651 2 113 v 791 651 V 57 w FC(Op)q(eration)35 b(illegal)h(in)f(curren)o(t)816 634 y(state)p 1440 651 V 1465 578 a(Y)l(es)p 1790 651 V 368 653 1423 2 v 367 765 2 113 v 393 692 a Fr(STACK)p 506 692 14 2 v 15 w(OVERFLOW)p 782 765 2 113 v 791 765 V 122 w FC(Command)11 b(w)o(ould)h(cause)h(a)e(stac)o(k)816 749 y(o)o(v)o(er\015o)o(w)p 1440 765 V 1465 692 a(Y)l(es)p 1790 765 V 368 767 1423 2 v 367 880 2 113 v 393 807 a Fr(STACK)p 506 807 14 2 v 15 w(UNDERFLOW)p 782 880 2 113 v 791 880 V 100 w FC(Command)g(w)o(ould)h(cause)h(a)e(stac)o(k)816 863 y(under\015o)o(w)p 1440 880 V 1465 807 a(Y)l(es)p 1790 880 V 368 882 1423 2 v 367 995 2 113 v 393 921 a Fr(OUT)p 462 921 14 2 v 15 w(OF)p 521 921 V 15 w(MEMORY)p 782 995 2 113 v 791 995 V 151 w FC(Not)g(enough)h(memory)g(left)g(to)f (ex-)816 978 y(ecute)k(command)p 1440 995 V 1465 921 a(Unkno)o(wn)p 1790 995 V 368 996 1423 2 v 746 1123 a(T)l(able)h(2.3:)j (Summary)c(of)f(GL)i(errors)403 1402 y(T)l(able)j(2.3)f(summarizes)g (GL)h(errors.)29 b(Curren)o(tly)l(,)19 b(when)h(an)e(error)g(\015ag)g (is)h(set,)332 1458 y(results)h(of)f(GL)g(op)q(eration)g(are)g (unde\014ned)i(only)f(if)g Fr(OUT)p 1337 1458 14 2 v 15 w(OF)p 1396 1458 V 15 w(MEMORY)e FC(has)h(o)q(ccurred.)332 1515 y(In)f(other)e(cases,)h(the)g(command)f(generating)h(the)g(error)f (is)i(ignored)f(so)f(that)h(it)g(has)332 1571 y(no)g(e\013ect)g(on)g (GL)g(state)f(or)h(framebu\013er)f(con)o(ten)o(ts.)25 b(If)17 b(the)g(generating)h(command)332 1627 y(returns)d(a)g(v)m (alue,)h(it)g(returns)f(zero.)20 b(If)c(the)f(generating)h(command)f (mo)q(di\014es)h(v)m(alues)332 1684 y(through)d(a)g(p)q(oin)o(ter)h (argumen)o(t,)e(no)i(c)o(hange)f(is)h(made)f(to)g(these)g(v)m(alues.)20 b(These)14 b(error)332 1740 y(seman)o(tics)20 b(apply)g(only)g(to)e(GL) i(errors,)f(not)g(to)g(system)g(errors)f(suc)o(h)i(as)f(memory)332 1797 y(access)14 b(errors.)k(This)d(b)q(eha)o(vior)f(is)g(the)g(curren) o(t)f(b)q(eha)o(vior;)i(the)e(action)h(of)f(the)h(GL)g(in)332 1853 y(the)h(presence)i(of)d(errors)h(is)g(sub)s(ject)h(to)e(c)o (hange.)403 1980 y(Three)f(error)f(generation)h(conditions)i(are)d (implicit)k(in)d(the)h(description)g(of)f(ev)o(ery)332 2037 y(GL)19 b(command.)32 b(First,)20 b(if)f(a)g(command)g(that)g (requires)h(an)f(en)o(umerated)g(v)m(alue)i(is)332 2093 y(passed)13 b(a)g(sym)o(b)q(olic)h(constan)o(t)e(that)g(is)i(not)e(one) h(of)g(those)g(sp)q(eci\014ed)i(as)d(allo)o(w)o(able)i(for)332 2149 y(that)i(command,)h(the)f(error)g Fr(INVALID)p 1003 2149 V 15 w(ENUM)f FC(results.)25 b(This)17 b(is)h(the)e(case)h(ev)o (en)g(if)g(the)332 2206 y(argumen)o(t)f(is)h(a)g(p)q(oin)o(ter)g(to)f (a)g(sym)o(b)q(olic)i(constan)o(t)e(if)h(that)f(v)m(alue)i(is)f(not)g (allo)o(w)o(able)332 2262 y(for)e(the)g(giv)o(en)h(command.)j(Second,)d (if)g(a)f(negativ)o(e)g(n)o(um)o(b)q(er)g(is)h(pro)o(vided)g(where)g (an)332 2319 y(argumen)o(t)11 b(of)g(t)o(yp)q(e)h Fw(sizei)f FC(is)h(sp)q(eci\014ed,)i(the)e(error)f Fr(INVALID)p 1385 2319 V 14 w(VALUE)g FC(results.)19 b(Finally)l(,)332 2375 y(if)d(memory)f(is)i(exhausted)f(as)f(a)g(side)i(e\013ect)f(of)f (the)h(execution)g(of)g(a)f(command,)g(the)332 2432 y(error)f Fr(OUT)p 512 2432 V 16 w(OF)p 572 2432 V 15 w(MEMORY)g FC(ma)o(y)g(b)q(e)i(generated.)k(Otherwise)c(errors)e(are)h(generated)g (only)332 2488 y(for)g(conditions)h(that)f(are)f(explicitly)k(describ)q (ed)g(in)e(this)f(sp)q(eci\014cation.)p eop %%Page: 13 22 13 21 bop 120 137 a Fx(2.6.)34 b(BEGIN/END)15 b(P)l(ARADIGM)799 b FC(13)120 286 y Fs(2.6)67 b(Begin/End)23 b(P)n(aradigm)120 391 y FC(In)14 b(the)f(GL,)g(most)f(geometric)h(ob)s(jects)g(are)g(dra) o(wn)f(b)o(y)h(enclosing)i(a)e(series)g(of)g(co)q(ordi-)120 447 y(nate)j(sets)g(that)f(sp)q(ecify)j(v)o(ertices)e(and)g(optionally) h(normals,)f(texture)g(co)q(ordinates,)120 504 y(and)e(colors)f(b)q(et) o(w)o(een)g Fz(Begin)p FC(/)p Fz(End)h FC(pairs.)19 b(There)13 b(are)g(ten)g(geometric)g(ob)s(jects)f(that)120 560 y(are)20 b(dra)o(wn)g(this)h(w)o(a)o(y:)29 b(p)q(oin)o(ts,)21 b(line)h(segmen)o(ts,)f(line)h(segmen)o(t)d(lo)q(ops,)j(separated)120 617 y(line)f(segmen)o(ts,)e(p)q(olygons,)h(triangle)g(strips,)g (triangle)f(fans,)h(separated)f(triangles,)120 673 y(quadrilateral)e (strips,)e(and)g(separated)g(quadrilaterals.)191 731 y(Eac)o(h)d(v)o(ertex)g(is)g(sp)q(eci\014ed)j(with)d(t)o(w)o(o,)f (three,)i(or)e(four)h(co)q(ordinates.)19 b(In)13 b(addition,)120 787 y(a)f Fv(curr)n(ent)h(normal)p FC(,)f Fv(curr)n(ent)h(textur)n(e)g (c)n(o)n(or)n(dinates)p FC(,)e(and)h Fv(curr)n(ent)h(c)n(olor)f FC(ma)o(y)f(b)q(e)h(used)120 844 y(in)20 b(pro)q(cessing)f(eac)o(h)g(v) o(ertex.)30 b(Normals)18 b(are)h(used)g(b)o(y)g(the)g(GL)f(in)i(ligh)o (ting)g(calcu-)120 900 y(lations;)h(the)e(curren)o(t)g(normal)g(is)h(a) e(three-dimensional)k(v)o(ector)c(that)g(ma)o(y)g(b)q(e)i(set)120 957 y(b)o(y)14 b(sending)h(three)f(co)q(ordinates)g(that)g(sp)q(ecify)h (it.)k(T)l(exture)14 b(co)q(ordinates)h(determine)120 1013 y(ho)o(w)g(a)g(texture)g(image)g(is)h(mapp)q(ed)g(on)o(to)e(a)h (primitiv)o(e.)191 1071 y(A)h(color)g(is)g(asso)q(ciated)g(with)h(eac)o (h)e(v)o(ertex)h(as)f(it)i(is)f(sp)q(eci\014ed.)24 b(This)16 b Fv(asso)n(ciate)n(d)120 1127 y FC(color)d(is)g(either)g(the)f(curren) o(t)g(color)h(or)f(a)g(color)g(pro)q(duced)h(b)o(y)g(ligh)o(ting)g(dep) q(ending)i(on)120 1184 y(whether)i(or)g(not)f(ligh)o(ting)i(is)f (enabled.)26 b(T)l(exture)17 b(co)q(ordinates)g(are)g(similarly)h (asso-)120 1240 y(ciated)e(with)g(eac)o(h)f(v)o(ertex.)20 b(Figure)c(2.2)e(summarizes)i(the)f(asso)q(ciation)h(of)e(auxiliary)120 1297 y(data)h(with)g(a)g(transformed)g(v)o(ertex)f(to)h(pro)q(duce)h(a) f Fv(pr)n(o)n(c)n(esse)n(d)g(vertex)p FC(.)191 1355 y(The)e(curren)o(t) g(v)m(alues)i(are)e(part)f(of)h(GL)g(state.)19 b(V)l(ertices)14 b(and)f(normals)g(are)g(trans-)120 1411 y(formed,)j(colors)g(ma)o(y)g (b)q(e)h(a\013ected)e(or)h(replaced)h(b)o(y)g(ligh)o(ting,)g(and)f (texture)g(co)q(ordi-)120 1468 y(nates)e(are)g(transformed)f(and)h(p)q (ossibly)h(a\013ected)f(b)o(y)g(a)g(texture)f(co)q(ordinate)i(genera-) 120 1524 y(tion)g(function.)20 b(The)15 b(pro)q(cessing)g(indicated)g (for)f(eac)o(h)g(curren)o(t)g(v)m(alue)i(is)e(applied)i(for)120 1581 y(eac)o(h)g(v)o(ertex)e(that)h(is)h(sen)o(t)f(to)f(the)h(GL.)191 1638 y(The)e(metho)q(ds)f(b)o(y)h(whic)o(h)g(v)o(ertices,)g(normals,)g (texture)f(co)q(ordinates,)h(and)g(colors)120 1695 y(are)g(sen)o(t)f (to)g(the)h(GL,)f(as)h(w)o(ell)g(as)g(ho)o(w)f(normals)g(are)h (transformed)e(and)i(ho)o(w)f(v)o(ertices)120 1751 y(are)j(mapp)q(ed)h (to)f(the)g(t)o(w)o(o-dimensional)h(screen,)g(are)e(discussed)j(later.) 191 1809 y(Before)c(a)g(color)h(has)f(b)q(een)i(assigned)f(to)f(a)g(v)o (ertex,)g(the)g(state)g(required)h(b)o(y)g(a)f(v)o(er-)120 1866 y(tex)i(is)h(the)f(v)o(ertex's)g(co)q(ordinates,)g(the)g(curren)o (t)g(normal,)g(and)h(the)f(curren)o(t)g(texture)120 1922 y(co)q(ordinates.)37 b(Once)22 b(color)f(has)g(b)q(een)h(assigned,)g (ho)o(w)o(ev)o(er,)f(the)g(curren)o(t)g(normal)120 1979 y(is)e(no)f(longer)g(needed.)29 b(Because)18 b(color)g(assignmen)o(t)g (is)g(done)g(v)o(ertex-b)o(y-v)o(ertex,)g(a)120 2035 y(pro)q(cessed)f(v)o(ertex)e(comprises)h(the)g(v)o(ertex's)e(co)q (ordinates,)i(its)g(assigned)g(color,)g(and)120 2092 y(its)g(texture)f(co)q(ordinates.)191 2149 y(Figure)24 b(2.3)f(sho)o(ws)h(the)g(sequence)h(of)e(op)q(erations)i(that)e(builds) j(a)d Fv(primitive)120 2206 y FC(\(p)q(oin)o(t,)14 b(line)h(segmen)o (t,)e(or)g(p)q(olygon\))g(from)g(a)g(sequence)i(of)e(v)o(ertices.)19 b(After)13 b(a)g(primi-)120 2262 y(tiv)o(e)f(is)f(formed,)h(it)f(is)h (clipp)q(ed)h(to)e(a)g(viewing)h(v)o(olume.)19 b(This)12 b(ma)o(y)e(alter)h(the)g(primitiv)o(e)120 2319 y(b)o(y)18 b(altering)g(v)o(ertex)f(co)q(ordinates,)g(texture)h(co)q(ordinates,)f (and)h(color.)26 b(In)18 b(the)g(case)120 2375 y(of)e(a)g(p)q(olygon)g (primitiv)o(e,)h(clipping)i(ma)o(y)c(insert)h(new)g(v)o(ertices)h(in)o (to)f(the)g(primitiv)o(e.)120 2432 y(The)i(v)o(ertices)f(de\014ning)h (a)f(primitiv)o(e)i(to)d(b)q(e)i(rasterized)f(ha)o(v)o(e)g(texture)f (co)q(ordinates)120 2488 y(and)g(color)f(asso)q(ciated)g(with)h(them.)p eop %%Page: 14 23 14 22 bop 332 137 a FC(14)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 350 305 1459 2 v 350 1414 2 1109 v 404 379 a 21313290 13214238 2368143 8420065 50849300 38877020 startTexFig 404 379 a %%BeginDocument: pics/assoc.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Courier-Bold-SHOWISO exch definefont pop /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave matrix currentmatrix [0 0 0 0 36 408] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [0 0 0 0 36 408] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [112 0 0 80 36 264] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [112 0 0 80 36 392] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [112 0 0 80 36 136] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 229 432 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 148 432 M 210 432 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 341 304 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 148 304 M 322 304 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 228 408 M 228 504 L 484 504 L 484 456 L 277.091 456 L 277.091 408 L closepath stroke grestore gsave matrix currentmatrix [112 0 0 56 340 292] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 348 296] concat newpath 0 0 M 0 48 L 100 48 L 100 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 346 294 M 346 346 L 450 346 L 450 294 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 348 296] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 24.723 21.4706 M (lighting) 50.554 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 244 452] concat newpath 0 0 M 0 48 L 224 48 L 224 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 242 450 M 242 502.471 L 470 502.471 L 470 450 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 244 452] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 62.202 36.4706 M (vertex / normal) 99.596 S 62.608 19.4706 M (transformation) 98.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 36 392] concat newpath 0 0 M 0 80 L 112 80 L 112 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 34 390 M 34 474 L 150 474 L 150 390 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 36 392] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 23.501 50.913 M (Current) 64.998 S 24.995 28.913 M (Normal) 62.01 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 36 264] concat newpath 0 0 M 0 80 L 112 80 L 112 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 34 262 M 34 346 L 150 346 L 150 262 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 36 264] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 23.501 50.913 M (Current) 64.998 S 32.501 28.913 M (Color) 46.998 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 36 128] concat newpath 0 0 M 0 80 L 112 80 L 112 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 34 126 M 34 211.913 L 150 211.913 L 150 126 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 36 128] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 23.501 65.913 M (Current) 64.998 S 23.492 43.913 M (Texture) 65.016 S 24.5 21.913 M (Coords) 63 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 188 515 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 188 548 M 188 534 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 188 520 M 188 252 L 248 252 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 341 332 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 276 432 M 292 432 L 292 332 L 322 332 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 484 480 M 508 480 L 508 252 L 272 252 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 396 347 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 508 400 M 396 400 L 396 366 L stroke grestore gsave matrix currentmatrix [112 0 0 56 204 148] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 212 152] concat newpath 0 0 M 0 48 L 100 48 L 100 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 210 150 M 210 202 L 314 202 L 314 150 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 212 152] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 27.439 21.4706 M (texgen) 45.122 S setmatrix grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 252 252] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 268 252] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 260 203 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 260 222 M 260 232 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 260 232 M 264 252 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 308 304 M 308 272 L 472 272 L 472 304 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 472 308] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 452 324 M 468 324 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 472 324] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 472 320 M 492 316 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 557 316 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 492 316 M 538 316 L stroke grestore gsave matrix currentmatrix [4 0 0 4 508 400] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 508 400] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave matrix currentmatrix [4 0 0 4 308 304] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 308 304] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 172 176 M 172 132 L 336 132 L 336 164 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 336 168] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 316 184 M 332 184 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 336 184] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 336 180 M 356 176 L stroke grestore gsave matrix currentmatrix [112 0 0 56 372 148] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 380 144] concat newpath 0 0 M 0 48 L 100 48 L 100 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 378 142 M 378 194.471 L 482 194.471 L 482 142 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 380 144] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 26.662 36.4706 M (texture) 46.676 S 28.993 19.4706 M (matrix) 42.014 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 356 176 M 372 176 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 571 269] concat newpath 0 0 M 0 42 L 98.03 42 L 98.03 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 569 267 M 569 314.913 L 671.03 314.913 L 671.03 267 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 571 269] concat 1 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.913 M (Associated) 96.03 S 29.512 3.91304 M 29.512 3.91304 M (Data) 39.006 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 563 457] concat newpath 0 0 M 0 42 L 112.016 42 L 112.016 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 561 455 M 561 502.913 L 677.016 502.913 L 677.016 455 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 563 457] concat 1 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.913 M (Transformed) 110.016 S 3.502 3.91304 M 3.502 3.91304 M (Coordinates) 105.012 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 557 276 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 484 176 M 524 176 L 524 276 L 538 276 L stroke grestore gsave matrix currentmatrix [132 0 0 116 556 224] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 557 480 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 508 480 M 538 480 L stroke grestore gsave matrix currentmatrix [4 0 0 4 508 480] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 508 480] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave matrix currentmatrix [132 0 0 80 556 440] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 679 353] concat newpath 0 0 M 0 66 L 93.044 66 L 93.044 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 677 351 M 677 422.913 L 774.044 422.913 L 774.044 351 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 679 353] concat 1 51.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 51.913 M (Processed) 91.044 S 19.009 27.913 M 19.009 27.913 M (Vertex) 55.026 S 31.024 3.91304 M 31.024 3.91304 M (Out) 30.996 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 677 400 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 620 440 M 620 400 L 658 400 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 677 380 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 620 340 M 620 380 L 658 380 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 229 480 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 188 480 M 210 480 L stroke grestore gsave matrix currentmatrix [4 0 0 4 188 480] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 188 480] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 567 231] concat newpath 0 0 M 0 33 L 111.676 33 L 111.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 565 229 M 565 266.471 L 680.676 266.471 L 680.676 229 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 567 231] concat 1 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 21.4706 M (\(Color & Texture) 109.676 S 12.669 2.47059 M 12.669 2.47059 M (Coordinates\)) 86.338 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 123 549] concat newpath 0 0 M 0 42 L 128.018 42 L 128.018 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 121 547 M 121 594.913 L 253.018 594.913 L 253.018 547 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 123 549] concat 36.496 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 36.496 27.913 M (Vertex) 55.026 S 1 3.91304 M 1 3.91304 M (Coordinates In) 126.018 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 149 176 M 172 176 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1335 a Fm(Figure)j(2.2.)30 b(Asso)q(ciation)18 b(of)g(curren)o(t)i (v)n(alues)e(with)g(a)g(v)o(ertex.)32 b(The)18 b(hea)o(vy)h(lined)389 1385 y(b)q(o)o(xes)c(represen)o(t)h(GL)d(state.)p 1807 1414 2 1109 v 350 1416 1459 2 v 350 1625 V 350 2374 2 749 v 404 1700 a 21313290 8312175 4473159 16840130 60453437 38942801 startTexFig 404 1700 a %%BeginDocument: pics/prim.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 273 512 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 160 512 M 254 512 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 68 455] concat newpath 0 0 M 0 42 L 93.044 42 L 93.044 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 66 453 M 66 500.913 L 163.044 500.913 L 163.044 453 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 68 455] concat 1 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.913 M (Processed) 91.044 S 11.503 3.91304 M 11.503 3.91304 M (Vertices) 70.038 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 273 448 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 160 448 M 254 448 L stroke grestore gsave matrix currentmatrix [160 0 0 192 272 384] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 276 421] concat newpath 0 0 M 0 114 L 148.034 114 L 148.034 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 274 419 M 274 538.913 L 426.034 538.913 L 426.034 419 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 276 421] concat 49.015 99.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 49.015 99.913 M (Point,) 50.004 S 1 75.913 M 1 75.913 M (Line Segment, or) 146.034 S 38.512 51.913 M 38.512 51.913 M (Polygon) 71.01 S 30.007 27.913 M 30.007 27.913 M (\(Primitive\)) 88.02 S 31.501 3.91304 M 31.501 3.91304 M (Assembly) 85.032 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 296 256 M 408 256 L 408 336 L 296 336 L closepath stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 352 385 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 352 336 M 352 366 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 307 269] concat newpath 0 0 M 0 42 L 91.01 42 L 91.01 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 305 267 M 305 314.913 L 400.01 314.913 L 400.01 267 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 307 269] concat 1 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.913 M (Begin/End) 89.01 S 23.5 3.91304 M 23.5 3.91304 M (State) 44.01 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 545 512 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 432 512 M 526 512 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 545 448 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 432 448 M 526 448 L stroke grestore gsave matrix currentmatrix [160 0 0 100 544 372] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [160 0 0 104 544 488] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 559 490] concat newpath 0 0 M 0 90 L 120.026 90 L 120.026 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 557 488 M 557 583.913 L 681.026 583.913 L 681.026 488 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 559 490] concat 3.007 75.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 3.007 75.913 M (Point culling;) 114.012 S 1 51.913 M 1 51.913 M (Line Segment) 118.026 S 10.504 27.913 M 10.504 27.913 M ( or Polygon) 99.018 S 24.013 3.91304 M 24.013 3.91304 M (Clipping) 72 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 573 400] concat newpath 0 0 M 0 42 L 99.038 42 L 99.038 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 571 398 M 571 445.913 L 674.038 445.913 L 674.038 398 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 573 400] concat 26.02 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 26.02 27.913 M (Color) 46.998 S 1 3.91304 M 1 3.91304 M (Processing) 97.038 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 817 512 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 704 512 M 798 512 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 817 448 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 704 448 M 798 448 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 803 469] concat newpath 0 0 M 0 24 L 115.022 24 L 115.022 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 801 467 M 801 495 L 920.022 495 L 920.022 467 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 803 469] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Rasterization) 113.022 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 165 513] concat newpath 0 0 M 0 19 L 77.474 19 L 77.474 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 163 511 M 163 534 L 244.474 534 L 244.474 511 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 165 513] concat /Helvetica-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Coordinates) 75.474 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 156 429] concat newpath 0 0 M 0 33 L 80.474 33 L 80.474 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 154 427 M 154 464.471 L 238.474 464.471 L 238.474 427 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 156 429] concat 11 21.4706 M /Helvetica-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 11 21.4706 M (Associated) 68.474 S 30.453 2.47059 M 30.453 2.47059 M (Data) 29.568 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 2345 a Fm(Figure)h(2.3.)j(Primitiv)o(e)12 b(assem)o(bly)h(and)h (pro)q(cessing.)p 1807 2374 2 749 v 350 2376 1459 2 v eop %%Page: 15 24 15 23 bop 120 137 a Fx(2.6.)34 b(BEGIN/END)15 b(P)l(ARADIGM)799 b FC(15)120 286 y Fl(2.6.1)56 b(Begin)17 b(and)j(End)e(Ob)s(jects)120 381 y Fz(Begin)d FC(and)f Fz(End)h FC(require)g(one)f(state)f(v)m (ariable)i(with)f(elev)o(en)i(v)m(alues:)k(one)14 b(v)m(alue)h(for)120 437 y(eac)o(h)f(of)e(the)i(ten)f(p)q(ossible)i Fz(Begin)p FC(/)p Fz(End)f FC(ob)s(jects,)f(and)g(one)h(other)e(v)m(alue)j (indicating)120 494 y(that)e(no)g Fz(Begin)p FC(/)p Fz(End)i FC(ob)s(ject)e(is)h(b)q(eing)g(pro)q(cessed.)20 b(The)14 b(t)o(w)o(o)e(relev)m(an)o(t)i(commands)120 550 y(are)234 661 y Fw(void)30 b Fz(Begin)p FC(\()h Fw(enum)14 b Fv(mo)n(de)i FC(\))e Fw(;)234 718 y(void)30 b Fz(End)p FC(\()g Fw(void)39 b FC(\))14 b Fw(;)120 829 y FC(There)j(is)h(no)e(limit)i(on)f(the)g(n)o (um)o(b)q(er)g(of)f(v)o(ertices)h(that)f(ma)o(y)g(b)q(e)i(sp)q (eci\014ed)g(b)q(et)o(w)o(een)120 886 y(a)d Fz(Begin)h FC(and)g(an)f Fz(End)p FC(.)191 946 y Fz(P)o(oin)o(ts.)k FC(A)14 b(series)h(of)f(individual)k(p)q(oin)o(ts)c(ma)o(y)g(b)q(e)h (sp)q(eci\014ed)i(b)o(y)d(calling)i Fz(Begin)120 1003 y FC(with)j(an)f(argumen)o(t)f(v)m(alue)j(of)e Fr(POINTS)p FC(.)e(No)i(sp)q(ecial)i(state)d(need)j(b)q(e)e(k)o(ept)g(b)q(et)o(w)o (een)120 1059 y Fz(Begin)i FC(and)g Fz(End)f FC(in)h(this)g(case,)g (since)g(eac)o(h)f(p)q(oin)o(t)h(is)g(indep)q(enden)o(t)h(of)e (previous)120 1116 y(and)d(follo)o(wing)g(p)q(oin)o(ts.)191 1177 y Fz(Line)e(Strips.)19 b FC(A)11 b(series)h(of)f(one)h(or)e(more)h (connected)i(line)g(segmen)o(ts)e(is)h(sp)q(eci\014ed)120 1233 y(b)o(y)19 b(enclosing)h(a)f(series)g(of)g(t)o(w)o(o)e(or)i(more)f (endp)q(oin)o(ts)i(within)g(a)f Fz(Begin)p FC(/)p Fz(End)g FC(pair)120 1290 y(when)c Fz(Begin)g FC(is)f(called)i(with)f Fr(LINE)p 749 1290 14 2 v 14 w(STRIP)p FC(.)e(In)i(this)f(case,)g(the)h (\014rst)e(v)o(ertex)h(sp)q(eci\014es)120 1346 y(the)22 b(\014rst)g(segmen)o(t's)f(start)g(p)q(oin)o(t)h(while)h(the)f(second)h (v)o(ertex)e(sp)q(eci\014es)j(the)e(\014rst)120 1402 y(segmen)o(t's)c(endp)q(oin)o(t)i(and)f(the)g(second)h(segmen)o(t's)e (start)f(p)q(oin)o(t.)31 b(In)20 b(general,)g(the)120 1459 y Fy(i)p FC(th)14 b(v)o(ertex)f(\(for)g Fy(i)g(>)g FC(1\))g(sp)q(eci\014es)j(the)e(b)q(eginning)i(of)e(the)g Fy(i)p FC(th)f(segmen)o(t)h(and)g(the)g(end)120 1515 y(of)h(the)h Fy(i)10 b FB(\000)g FC(1st.)20 b(The)c(last)f(v)o(ertex)g (sp)q(eci\014es)j(the)d(end)h(of)f(the)h(last)f(segmen)o(t.)20 b(If)c(only)120 1572 y(one)j(v)o(ertex)e(is)i(sp)q(eci\014ed)h(b)q(et)o (w)o(een)e(the)g Fz(Begin)p FC(/)p Fz(End)h FC(pair,)g(then)f(no)g (primitiv)o(e)h(is)120 1628 y(generated.)191 1689 y(The)g(required)g (state)f(consists)h(of)f(the)g(pro)q(cessed)h(v)o(ertex)f(pro)q(duced)i (from)e(the)120 1746 y(last)g(v)o(ertex)e(that)h(w)o(as)f(sen)o(t)h (\(so)g(that)f(a)h(line)i(segmen)o(t)e(can)g(b)q(e)h(generated)f(from)f (it)120 1802 y(to)f(the)f(curren)o(t)h(v)o(ertex\),)f(and)h(a)f(b)q(o)q (olean)i(\015ag)e(indicating)j(if)e(the)g(curren)o(t)g(v)o(ertex)f(is) 120 1858 y(the)i(\014rst)e(v)o(ertex.)191 1919 y Fz(Line)h(Lo)q(ops.)20 b FC(Line)14 b(lo)q(ops,)f(sp)q(eci\014ed)h(with)f(the)g Fr(LINE)p 1148 1919 V 14 w(LOOP)f FC(argumen)o(t)g(v)m(alue)h(to)120 1976 y Fz(Begin)p FC(,)h(are)f(the)h(same)f(as)g(line)i(strips)e (except)h(that)f(a)g(\014nal)h(segmen)o(t)f(is)h(added)f(from)120 2032 y(the)i(\014nal)f(sp)q(eci\014ed)j(v)o(ertex)c(to)h(the)g(\014rst) g(v)o(ertex.)19 b(The)14 b(additional)i(state)d(consists)h(of)120 2089 y(the)i(pro)q(cessed)g(\014rst)e(v)o(ertex.)191 2149 y Fz(Separate)21 b(Lines.)26 b FC(Individual)21 b(line)e(segmen)o(ts,)e(eac)o(h)g(sp)q(eci\014ed)j(b)o(y)d(a)g(pair)h (of)120 2206 y(v)o(ertices,)i(are)f(generated)g(b)o(y)g(surrounding)g (v)o(ertex)g(pairs)g(with)g Fz(Begin)h FC(and)f Fz(End)120 2262 y FC(when)h(the)f(v)m(alue)h(of)e(the)h(argumen)o(t)f(to)g Fz(Begin)i FC(is)f Fr(LINES)p FC(.)e(In)j(this)f(case,)g(the)g(\014rst) 120 2319 y(t)o(w)o(o)c(v)o(ertices)i(b)q(et)o(w)o(een)g(a)f Fz(Begin)h FC(and)g Fz(End)g FC(pair)f(de\014ne)i(the)e(\014rst)g (segmen)o(t,)g(with)120 2375 y(subsequen)o(t)g(pairs)f(of)f(v)o (ertices)h(eac)o(h)g(de\014ning)h(one)f(more)f(segmen)o(t.)20 b(If)15 b(the)f(n)o(um)o(b)q(er)120 2432 y(of)h(sp)q(eci\014ed)j(v)o (ertices)d(is)h(o)q(dd,)g(then)g(the)f(last)g(one)h(is)g(ignored.)21 b(The)15 b(state)g(required)120 2488 y(is)i(the)g(same)f(as)g(for)g (lines)i(but)f(it)g(is)g(used)g(di\013eren)o(tly:)23 b(a)16 b(v)o(ertex)h(holding)h(the)e(\014rst)p eop %%Page: 16 25 16 24 bop 332 137 a FC(16)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)332 286 y FC(v)o(ertex)j(of)g(the)h(curren)o (t)f(segmen)o(t,)h(and)g(a)f(b)q(o)q(olean)i(\015ag)e(indicating)j (whether)d(the)332 343 y(curren)o(t)c(v)o(ertex)g(is)h(o)q(dd)f(or)g (ev)o(en)g(\(a)g(segmen)o(t)g(start)f(or)g(end\).)403 399 y Fz(P)o(olygons.)k FC(A)13 b(p)q(olygon)g(is)g(describ)q(ed)i(b)o (y)d(sp)q(ecifying)j(its)e(b)q(oundary)g(as)f(a)h(series)332 456 y(of)19 b(line)j(segmen)o(ts.)33 b(When)20 b Fz(Begin)g FC(is)g(called)i(with)e Fr(POLYGON)p FC(,)e(the)i(b)q(ounding)h(line) 332 512 y(segmen)o(ts)f(are)g(sp)q(eci\014ed)j(in)e(the)f(same)g(w)o(a) o(y)g(as)g(line)i(lo)q(ops.)36 b(Dep)q(ending)22 b(on)e(the)332 569 y(curren)o(t)c(state)f(of)h(the)g(GL,)g(a)g(p)q(olygon)h(ma)o(y)e (b)q(e)i(rendered)g(in)g(one)f(of)g(sev)o(eral)h(w)o(a)o(ys)332 625 y(suc)o(h)f(as)f(outlining)i(its)e(b)q(order)h(or)e(\014lling)k (its)d(in)o(terior.)21 b(A)15 b(p)q(olygon)h(describ)q(ed)h(with)332 682 y(few)o(er)e(than)g(three)g(v)o(ertices)h(do)q(es)f(not)g(generate) g(a)g(primitiv)o(e.)403 738 y(Only)h(con)o(v)o(ex)f(p)q(olygons)h(are)f (guaran)o(teed)g(to)g(b)q(e)h(dra)o(wn)f(correctly)g(b)o(y)g(the)h(GL.) 332 795 y(If)h(a)g(sp)q(eci\014ed)i(p)q(olygon)f(is)g(noncon)o(v)o(ex)f (when)g(pro)s(jected)g(on)o(to)f(the)i(windo)o(w,)f(then)332 851 y(the)g(rendered)g(p)q(olygon)g(need)h(only)f(lie)h(within)g(the)e (con)o(v)o(ex)h(h)o(ull)h(of)e(the)h(pro)s(jected)332 907 y(v)o(ertices)f(de\014ning)g(its)g(b)q(oundary)l(.)403 964 y(The)d(state)e(required)j(to)e(supp)q(ort)h(p)q(olygons)g (consists)g(of)f(at)g(least)g(t)o(w)o(o)g(pro)q(cessed)332 1020 y(v)o(ertices)f(\(more)f(than)h(t)o(w)o(o)f(are)g(nev)o(er)h (required,)i(although)e(an)g(implemen)o(tation)h(ma)o(y)332 1077 y(use)j(more\);)e(this)i(is)g(b)q(ecause)g(a)f(con)o(v)o(ex)g(p)q (olygon)h(can)g(b)q(e)g(rasterized)g(as)f(its)g(v)o(ertices)332 1133 y(arriv)o(e,)e(b)q(efore)g(all)g(of)f(them)g(ha)o(v)o(e)g(b)q(een) i(sp)q(eci\014ed.)21 b(The)12 b(order)f(of)g(the)g(v)o(ertices)h(is)g (sig-)332 1190 y(ni\014can)o(t)j(in)f(ligh)o(ting)h(and)f(p)q(olygon)g (rasterization)g(\(see)g(sections)g(2.13.1)e(and)i(3.5.1\).)403 1246 y Fz(T)l(riangle)h(strips.)k FC(A)13 b(triangle)g(strip)g(is)h(a)e (series)i(of)e(triangles)i(connected)f(along)332 1303 y(shared)j(edges.)k(A)15 b(triangle)h(strip)g(is)g(sp)q(eci\014ed)h(b)o (y)f(giving)g(a)f(series)h(of)f(de\014ning)i(v)o(er-)332 1359 y(tices)c(b)q(et)o(w)o(een)f(a)g Fz(Begin)p FC(/)p Fz(End)h FC(pair)f(when)h Fz(Begin)f FC(is)h(called)h(with)e Fr(TRIANGLE)p 1694 1359 14 2 v 14 w(STRIP)p FC(.)332 1416 y(In)g(this)h(case,)f(the)g(\014rst)f(three)h(v)o(ertices)g (de\014ne)h(the)f(\014rst)f(triangle)h(\(and)g(their)g(order)g(is)332 1472 y(signi\014can)o(t,)k(just)e(as)h(for)f(p)q(olygons\).)20 b(Eac)o(h)15 b(subsequen)o(t)h(v)o(ertex)e(de\014nes)i(a)f(new)g(tri-) 332 1528 y(angle)f(using)g(that)f(p)q(oin)o(t)h(along)f(with)h(t)o(w)o (o)e(v)o(ertices)h(from)g(the)g(previous)i(triangle.)k(A)332 1585 y Fz(Begin)p FC(/)p Fz(End)e FC(pair)g(enclosing)h(few)o(er)e (than)g(three)g(v)o(ertices,)h(when)f Fr(TRIANGLE)p 1706 1585 V 15 w(STRIP)332 1641 y FC(has)f(b)q(een)h(supplied)i(to)d Fz(Begin)p FC(,)g(pro)q(duces)h(no)f(primitiv)o(e.)22 b(See)15 b(Figure)h(2.4.)403 1698 y(The)e(state)f(required)i(to)e(supp) q(ort)h(triangle)h(strips)f(consists)g(of)f(a)h(\015ag)g(indicating)332 1754 y(if)e(the)g(\014rst)f(triangle)h(has)f(b)q(een)i(completed,)g(t)o (w)o(o)d(stored)h(pro)q(cessed)h(v)o(ertices,)g(\(called)332 1811 y(v)o(ertex)g(A)h(and)f(v)o(ertex)g(B\),)g(and)h(a)f(one)h(bit)g (p)q(oin)o(ter)g(indicating)h(whic)o(h)g(stored)e(v)o(ertex)332 1867 y(will)24 b(b)q(e)g(replaced)f(with)g(the)g(next)f(v)o(ertex.)42 b(After)22 b(a)g Fz(Begin)p Fw(\()p Fr(TRIANGLE)p 1669 1867 V 15 w(STRIP)p Fw(\))p FC(,)332 1924 y(the)c(p)q(oin)o(ter)g(is)g (initialized)j(to)c(p)q(oin)o(t)h(to)f(v)o(ertex)g(A.)g(Eac)o(h)g(v)o (ertex)h(sen)o(t)f(b)q(et)o(w)o(een)h(a)332 1980 y Fz(Begin)p FC(/)p Fz(End)d FC(pair)f(toggles)f(the)g(p)q(oin)o(ter.)20 b(Therefore,)14 b(the)f(\014rst)g(v)o(ertex)h(is)g(stored)f(as)332 2037 y(v)o(ertex)j(A,)h(the)g(second)g(stored)f(as)h(v)o(ertex)f(B,)h (the)f(third)i(stored)e(as)g(v)o(ertex)h(A,)f(and)332 2093 y(so)e(on.)20 b(An)o(y)14 b(v)o(ertex)g(after)g(the)g(second)h (one)g(sen)o(t)f(forms)g(a)g(triangle)h(from)f(v)o(ertex)g(A,)332 2149 y(v)o(ertex)h(B,)g(and)g(the)g(curren)o(t)h(v)o(ertex)e(\(in)i (that)f(order\).)403 2206 y Fz(T)l(riangle)20 b(fans.)25 b FC(A)16 b(triangle)i(fan)e(is)i(the)e(same)h(as)f(a)h(triangle)g (strip)g(with)g(one)332 2262 y(exception:)29 b(eac)o(h)19 b(v)o(ertex)g(after)f(the)h(\014rst)g(alw)o(a)o(ys)f(replaces)i(v)o (ertex)f(B)g(of)g(the)g(t)o(w)o(o)332 2319 y(stored)e(v)o(ertices.)25 b(The)17 b(v)o(ertices)g(of)g(a)f(triangle)i(fan)f(are)f(enclosed)i(b)q (et)o(w)o(een)g Fz(Begin)332 2375 y FC(and)d Fz(End)h FC(when)g(the)f(v)m(alue)h(of)f(the)g(argumen)o(t)g(to)f Fz(Begin)i FC(is)g Fr(TRIANGLE)p 1602 2375 V 14 w(FAN)p FC(.)403 2432 y Fz(Separate)22 b(T)l(riangles.)32 b FC(Separate)19 b(triangles)g(are)g(sp)q(eci\014ed)i(b)o(y)e(placing)i(v)o(er-)332 2488 y(tices)e(b)q(et)o(w)o(een)g Fz(Begin)g FC(and)g Fz(End)g FC(when)f(the)h(v)m(alue)h(of)e(the)g(argumen)o(t)g(to)g Fz(Begin)p eop %%Page: 17 26 17 25 bop 120 137 a Fx(2.6.)34 b(BEGIN/END)15 b(P)l(ARADIGM)799 b FC(17)p 139 242 1459 2 v 139 1109 2 867 v 193 317 a 21313290 7033383 4670504 26641612 38745456 38219202 startTexFig 193 317 a %%BeginDocument: pics/triangles.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 80 561 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 80 464 M 80 550 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 144.555 463.168 translate -56.3099 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 80 560 M 138.453 472.32 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 79 464 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 144 464 M 90 464 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 87.4453 560.832 translate 123.69 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 152 464 M 93.547 551.68 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 153 560 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 88 560 M 142 560 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 152 463 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 152 560 M 152 474 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 160 565 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 160 464 M 160 554 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 224.539 463.158 translate -57.3808 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 160 564 M 218.609 472.423 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 159 464 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 224 464 M 170 464 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 288 561 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 288 464 M 288 550 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 336.949 543.684 translate -18.4349 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 288 560 M 326.513 547.162 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 287.486 463.143 translate -120.964 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 336 544 M 293.145 472.575 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 344.514 544.857 translate 59.0362 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 296 464 M 338.855 535.425 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 372.659 507.247 translate -48.8141 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 344 540 M 365.415 515.526 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 295.135 463.499 translate -149.931 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 372 508 M 304.654 469.01 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 380.862 504.507 translate 30.4655 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 312 464 M 371.381 498.93 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 307.021 463.794 translate -168.111 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 384 480 M 317.785 466.06 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 384.316 479.051 translate -71.565 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 376 504 M 380.838 489.487 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 448 561 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 448 464 M 448 550 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 512.555 463.168 translate -56.3099 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 448 560 M 506.453 472.32 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 447 464 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 512 464 M 458 464 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 560.707 479.293 translate -45 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 512 528 M 552.929 487.071 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 576.243 544.97 translate 75.9638 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 560 480 M 573.575 534.299 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 511.03 527.757 translate -165.964 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 576 544 M 521.701 530.425 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 131 405] concat newpath 0 0 M 0 24 L 23.996 24 L 23.996 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 129 403 M 129 431 L 156.996 431 L 156.996 403 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 131 405] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (\(a\)) 21.996 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 315 405] concat newpath 0 0 M 0 24 L 24.986 24 L 24.986 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 313 403 M 313 431 L 341.986 431 L 341.986 403 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 315 405] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (\(b\)) 22.986 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 511 405] concat newpath 0 0 M 0 24 L 23.996 24 L 23.996 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 509 403 M 509 431 L 536.996 431 L 536.996 403 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 511 405] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (\(c\)) 21.996 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 71 442] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 69 440 M 69 463 L 82.784 463 L 82.784 440 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 71 442] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (1) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 71 558] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 69 556 M 69 579 L 82.784 579 L 82.784 556 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 71 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (2) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 147 442] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 145 440 M 145 463 L 158.784 463 L 158.784 440 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 147 442] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (3) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 155 562] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 153 560 M 153 583 L 166.784 583 L 166.784 560 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 155 562] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (4) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 223 442] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 221 440 M 221 463 L 234.784 463 L 234.784 440 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 223 442] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (5) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 279 446] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 277 444 M 277 467 L 290.784 467 L 290.784 444 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 279 446] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (1) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 279 558] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 277 556 M 277 579 L 290.784 579 L 290.784 556 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 279 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (2) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 339 542] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 337 540 M 337 563 L 350.784 563 L 350.784 540 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 339 542] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (3) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 375 502] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 373 500 M 373 523 L 386.784 523 L 386.784 500 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 375 502] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (4) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 387 462] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 385 460 M 385 483 L 398.784 483 L 398.784 460 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 387 462] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (5) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 439 442] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 437 440 M 437 463 L 450.784 463 L 450.784 440 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 439 442] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (1) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 439 558] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 437 556 M 437 579 L 450.784 579 L 450.784 556 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 439 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (2) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 511 442] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 509 440 M 509 463 L 522.784 463 L 522.784 440 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 511 442] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (3) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 499 522] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 497 520 M 497 543 L 510.784 543 L 510.784 520 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 499 522] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (4) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 559 458] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 557 456 M 557 479 L 570.784 479 L 570.784 456 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 559 458] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (5) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 579 542] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 577 540 M 577 563 L 590.784 563 L 590.784 540 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 579 542] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (6) 7.784 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 881 a Fm(Figure)10 b(2.4.)16 b(\(a\))11 b(A)f(triangle)g(strip.)17 b(\(b\))11 b(A)g(triangle)e(fan.)17 b(\(c\))11 b(Indep)q(enden)o(t)h (triangles.)178 931 y(The)k(n)o(um)o(b)q(ers)f(giv)o(e)h(the)g (sequencing)h(of)f(the)g(v)o(ertices)h(b)q(et)o(w)o(een)h Fk(Begin)c Fm(and)i Fk(End)p Fm(.)178 980 y(Note)i(that)g(in)g(\(a\))g (and)g(\(b\))g(triangle)f(edge)i(ordering)f(is)g(determined)g(b)o(y)g (the)h(\014rst)178 1030 y(triangle,)13 b(while)g(in)g(\(c\))i(the)g (order)f(of)g(eac)o(h)g(triangle's)f(edges)i(is)f(indep)q(enden)o(t)i (of)d(the)178 1080 y(other)h(triangles.)p 1595 1109 2 867 v 139 1111 1459 2 v 120 1294 a FC(is)j Fr(TRIANGLES)p FC(.)d(In)j(this)g(case,)g(The)f(3)p Fy(i)10 b FC(+)i(1st,)j(3)p Fy(i)c FC(+)g(2nd,)16 b(and)h(3)p Fy(i)10 b FC(+)h(3rd)17 b(v)o(ertices)f(\(in)120 1350 y(that)e(order\))f(determine)j(a)d (triangle)i(for)f(eac)o(h)g Fy(i)e FC(=)h(0)p Fy(;)8 b FC(1)p Fy(;)g(:)g(:)g(:)t(;)g(n)f FB(\000)i FC(1,)k(where)i(there)f (are)120 1407 y(3)p Fy(n)6 b FC(+)g Fy(k)14 b FC(v)o(ertices)f(b)q(et)o (w)o(een)g(the)g Fz(Begin)h FC(and)f Fz(End)p FC(.)20 b Fy(k)14 b FC(is)f(either)h(0,)e(1,)h(or)f(2;)h(if)h Fy(k)g FC(is)f(not)120 1463 y(zero,)k(the)g(\014nal)h Fy(k)g FC(v)o(ertices)g(are)e(ignored.)26 b(F)l(or)16 b(eac)o(h)h(triangle,)h(v)o(ertex)f(A)g(is)g(v)o(ertex)120 1520 y(3)p Fy(i)d FC(and)h(v)o(ertex)f(B)h(is)g(v)o(ertex)f(3)p Fy(i)8 b FC(+)h(1.)19 b(Otherwise,)c(separate)f(triangles)h(are)f(the)h (same)120 1576 y(as)g(a)g(triangle)h(strip.)191 1635 y(The)g(rules)g(giv)o(en)g(for)f(p)q(olygons)h(also)f(apply)h(to)f(eac) o(h)h(triangle)g(generated)f(from)120 1691 y(a)g(triangle)h(strip,)f (triangle)h(fan)f(or)g(from)f(separate)h(triangles.)191 1750 y Fz(Quadrilateral)23 b(\(quad\))d(strips.)27 b FC(Quad)18 b(strips)f(generate)h(a)f(series)h(of)f(edge-)120 1806 y(sharing)22 b(quadrilaterals)g(from)f(v)o(ertices)h(app)q(earing) g(b)q(et)o(w)o(een)g Fz(Begin)g FC(and)g Fz(End)p FC(,)120 1863 y(when)15 b Fz(Begin)f FC(is)h(called)g(with)f Fr(QUAD)p 747 1863 14 2 v 15 w(STRIP)p FC(.)f(If)h(the)g Fy(m)g FC(v)o(ertices)g(b)q(et)o(w)o(een)g(the)g Fz(Begin)120 1919 y FC(and)f Fz(End)f FC(are)g Fy(v)405 1926 y Fq(1)425 1919 y Fy(;)c(:)g(:)g(:)d(;)j(v)549 1926 y Fu(m)581 1919 y FC(,)13 b(where)f Fy(v)757 1926 y Fu(j)788 1919 y FC(is)h(the)f Fy(j)s FC(th)g(sp)q(eci\014ed)i(v)o(ertex,)e(then)h(quad)f Fy(i)g FC(has)120 1976 y(v)o(ertices)19 b(\(in)f(order\))g Fy(v)523 1983 y Fq(2)p Fu(i)554 1976 y FC(,)h Fy(v)608 1983 y Fq(2)p Fu(i)p Fq(+1)684 1976 y FC(,)g Fy(v)738 1983 y Fq(2)p Fu(i)p Fq(+3)815 1976 y FC(,)f(and)g Fy(v)959 1983 y Fq(2)p Fu(i)p Fq(+2)1054 1976 y FC(with)g Fy(i)f FC(=)h(0)p Fy(;)8 b(:)g(:)g(:)t(;)g FB(b)p Fy(m=)p FC(2)p FB(c)p FC(.)27 b(The)120 2032 y(state)14 b(required)i(is)f(th)o(us)g (three)g(pro)q(cessed)g(v)o(ertices,)g(to)f(store)g(the)h(last)g(t)o(w) o(o)e(v)o(ertices)120 2089 y(of)18 b(the)h(previous)g(quad)f(along)h (with)g(the)f(third)h(v)o(ertex)f(\(the)g(\014rst)g(new)h(v)o(ertex\))e (of)120 2145 y(the)d(curren)o(t)f(quad,)g(a)g(\015ag)g(to)g(indicate)i (when)f(the)f(\014rst)g(quad)h(has)f(b)q(een)h(completed,)120 2202 y(and)i(a)f(one-bit)h(coun)o(ter)f(to)f(coun)o(t)h(mem)o(b)q(ers)h (of)e(a)h(v)o(ertex)g(pair.)20 b(See)c(Figure)f(2.5.)191 2260 y(A)20 b(quad)g(strip)g(with)h(few)o(er)e(than)h(four)g(v)o (ertices)g(generates)g(no)g(primitiv)o(e.)35 b(If)120 2317 y(the)13 b(n)o(um)o(b)q(er)g(of)g(v)o(ertices)g(sp)q(eci\014ed)i (for)d(a)g(quadrilateral)i(strip)f(b)q(et)o(w)o(een)g Fz(Begin)h FC(and)120 2373 y Fz(End)i FC(is)g(o)q(dd,)f(the)g(\014nal)h (v)o(ertex)f(is)h(ignored.)191 2432 y Fz(Separate)j(Quadrilaterals)e FC(Separate)f(quads)g(are)f(just)h(lik)o(e)h(quad)f(strips)f(ex-)120 2488 y(cept)e(that)g(eac)o(h)f(group)h(of)f(four)h(v)o(ertices,)g(the)g (4)p Fy(j)7 b FC(+)e(1st,)13 b(the)g(4)p Fy(j)7 b FC(+)e(2nd,)14 b(the)e(4)p Fy(j)c FC(+)d(3rd,)p eop %%Page: 18 27 18 26 bop 332 137 a FC(18)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 350 242 1459 2 v 350 924 2 682 v 554 317 a 16577003 6465030 3617996 24799723 31641026 35851059 startTexFig 554 317 a %%BeginDocument: pics/quads.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 64 529 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 64 448 M 64 518 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 129 528 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 64 528 M 118 528 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 128 447 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 128 528 M 128 458 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 63 448 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 128 448 M 74 448 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 136 529 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 136 448 M 136 518 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 201 528 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 136 528 M 190 528 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 200 447 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 200 528 M 200 458 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 135 448 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 200 448 M 146 448 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 304 529 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 304 448 M 304 518 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 369 528 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 304 528 M 358 528 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 368 447 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 368 528 M 368 458 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 303 448 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 368 448 M 314 448 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 404 529 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 404 448 M 404 518 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 469 528 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 404 528 M 458 528 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 468 447 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 468 528 M 468 458 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 403 448 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -12 -3 L -12 3 L closepath fill grestore 2.000000 setlinewidth newpath 468 448 M 414 448 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 59 426] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 424 M 57 447 L 70.784 447 L 70.784 424 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 426] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (1) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 55 526] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 53 524 M 53 547 L 66.784 547 L 66.784 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 55 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (2) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 127 426] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 125 424 M 125 447 L 138.784 447 L 138.784 424 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 127 426] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (3) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 127 526] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 125 524 M 125 547 L 138.784 547 L 138.784 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 127 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (4) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 203 430] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 201 428 M 201 451 L 214.784 451 L 214.784 428 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 203 430] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (5) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 199 526] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 197 524 M 197 547 L 210.784 547 L 210.784 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 199 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (6) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 299 430] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 297 428 M 297 451 L 310.784 451 L 310.784 428 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 299 430] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (1) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 299 526] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 297 524 M 297 547 L 310.784 547 L 310.784 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 299 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (2) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 367 526] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 365 524 M 365 547 L 378.784 547 L 378.784 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 367 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (3) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 367 430] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 365 428 M 365 451 L 378.784 451 L 378.784 428 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 367 430] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (4) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 395 430] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 393 428 M 393 451 L 406.784 451 L 406.784 428 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 395 430] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (5) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 395 526] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 393 524 M 393 547 L 406.784 547 L 406.784 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 395 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (6) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 467 526] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 465 524 M 465 547 L 478.784 547 L 478.784 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 467 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (7) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 471 430] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 469 428 M 469 451 L 482.784 451 L 482.784 428 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 471 430] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (8) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 119 377] concat newpath 0 0 M 0 24 L 23.996 24 L 23.996 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 117 375 M 117 403 L 144.996 403 L 144.996 375 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 119 377] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (\(a\)) 21.996 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 375 377] concat newpath 0 0 M 0 24 L 24.986 24 L 24.986 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 373 375 M 373 403 L 401.986 403 L 401.986 375 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 375 377] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (\(b\)) 22.986 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 845 a Fm(Figure)e(2.5.)j(\(a\))d(A)g(quad)f(strip.)19 b(\(b\))14 b(Indep)q(enden)o(t)i(quads.)i(The)c(n)o(um)o(b)q(ers)f(giv) o(e)h(the)389 895 y(sequencing)h(of)f(the)g(v)o(ertices)h(b)q(et)o(w)o (een)h Fk(Begin)c Fm(and)i Fk(End)p Fm(.)p 1807 924 2 682 v 350 926 1459 2 v 332 1097 a FC(and)j(the)f(4)p Fy(j)d FC(+)e(4th,)16 b(generate)g(a)g(single)h(quad,)g(for)e Fy(j)i FC(=)e(0)p Fy(;)8 b FC(1)p Fy(;)g(:)g(:)f(:)t(;)h(n)j FB(\000)g FC(1.)23 b(The)16 b(total)332 1153 y(n)o(um)o(b)q(er)g(of)g (v)o(ertices)g(b)q(et)o(w)o(een)g Fz(Begin)h FC(and)f Fz(End)g FC(is)h(4)p Fy(n)10 b FC(+)h Fy(k)q FC(,)16 b(where)g(0)d FB(\024)h Fy(k)h FB(\024)f FC(3;)i(if)332 1210 y Fy(k)g FC(is)f(not)f(zero,)h(the)g(\014nal)g Fy(k)h FC(v)o(ertices)f(are)f(ignored.)21 b(Separate)14 b(quads)h(are)f (generated)332 1266 y(b)o(y)h(calling)i Fz(Begin)f FC(with)g(the)f (argumen)o(t)f(v)m(alue)j Fr(QUADS)p FC(.)403 1323 y(The)12 b(rules)h(giv)o(en)g(for)f(p)q(olygons)g(also)h(apply)g(to)e(eac)o(h)i (quad)f(generated)g(in)h(a)f(quad)332 1379 y(strip)k(or)e(from)h (separate)f(quads.)332 1499 y Fl(2.6.2)55 b(P)n(olygon)19 b(Edges)332 1585 y FC(Eac)o(h)c(edge)g(of)f(eac)o(h)h(primitiv)o(e)h (generated)f(from)f(a)g(p)q(olygon,)h(triangle)h(strip,)e(trian-)332 1641 y(gle)k(fan,)h(separate)e(triangle)h(set,)g(quadrilateral)h (strip,)g(or)e(separate)g(quadrilateral)332 1698 y(set,)23 b(is)f(\015agged)g(as)f(either)h Fv(b)n(oundary)g FC(or)g Fv(non-b)n(oundary)p FC(.)39 b(These)22 b(classi\014cations)332 1754 y(are)f(used)h(during)g(p)q(olygon)g(rasterization;)h(some)e(mo)q (des)h(a\013ect)e(the)h(in)o(terpreta-)332 1811 y(tion)14 b(of)f(p)q(olygon)h(b)q(oundary)g(edges)g(\(see)g(section)g(3.5.4\).)j (By)d(default,)g(all)h(edges)f(are)332 1867 y(b)q(oundary)f(edges,)g (but)f(the)h(\015agging)f(of)g(p)q(olygons,)h(separate)f(triangles,)h (or)f(separate)332 1924 y(quadrilaterals)k(ma)o(y)f(b)q(e)h(altered)f (b)o(y)g(calling)446 2008 y Fw(void)29 b Fz(EdgeFlag)p FC(\()j Fw(boolean)14 b Fv(\015ag)h FC(\))g Fw(;)446 2065 y(void)29 b Fz(EdgeFlagv)p FC(\()i Fw(boolean)15 b Fv(*\015ag)g FC(\))g Fw(;)332 2149 y FC(to)i(c)o(hange)h(the)f(v)m (alue)i(of)e(a)g(\015ag)h(bit.)27 b(If)18 b Fv(\015ag)f FC(is)h(zero,)g(then)g(the)f(\015ag)h(bit)g(is)g(set)f(to)332 2206 y Fr(FALSE)p FC(;)d(if)h Fv(\015ag)h FC(is)f(non-zero,)g(then)h (the)f(\015ag)g(bit)h(is)f(set)g(to)g Fr(TRUE)p FC(.)403 2262 y(When)25 b Fz(Begin)h FC(is)g(supplied)h(with)f(one)f(of)g(the)g (argumen)o(t)f(v)m(alues)i Fr(POLYGON)p FC(,)332 2319 y Fr(TRIANGLES)p FC(,)18 b(or)i Fr(QUADS)p FC(,)e(eac)o(h)j(v)o(ertex)e (sp)q(eci\014ed)k(within)e(a)f Fz(Begin)h FC(and)f Fz(End)h FC(pair)332 2375 y(b)q(egins)14 b(an)g(edge.)19 b(If)14 b(the)f(edge)g(\015ag)g(bit)h(is)g Fr(TRUE)p FC(,)d(then)j(eac)o(h)f (sp)q(eci\014ed)j(v)o(ertex)c(b)q(egins)332 2432 y(an)j(edge)h(that)e (is)i(\015agged)f(as)f(b)q(oundary)l(.)21 b(If)15 b(the)h(bit)f(is)h Fr(FALSE)p FC(,)e(then)h(induced)i(edges)332 2488 y(are)e(\015agged)g (as)g(non-b)q(oundary)l(.)p eop %%Page: 19 28 19 27 bop 120 137 a Fx(2.7.)34 b(VER)l(TEX)16 b(SPECIFICA)l(TION)772 b FC(19)191 286 y(The)15 b(state)f(required)h(for)g(edge)g(\015agging)f (consists)h(of)f(one)h(curren)o(t)g(\015ag)f(bit.)20 b(Ini-)120 343 y(tially)l(,)i(the)d(bit)h(is)g Fr(TRUE)p FC(.)e(In)i(addition,)h(eac)o(h)f(pro)q(cessed)g(v)o(ertex)f(of)g(an)g (assem)o(bled)120 399 y(p)q(olygonal)i(primitiv)o(e)h(m)o(ust)d(b)q(e)i (augmen)o(ted)f(with)g(a)g(bit)g(indicating)i(whether)e(or)120 456 y(not)15 b(the)g(edge)h(b)q(eginning)h(on)e(that)g(v)o(ertex)g(is)g (b)q(oundary)h(or)f(non-b)q(oundary)l(.)120 586 y Fl(2.6.3)56 b(GL)18 b(Commands)f(within)i(Begin/End)120 675 y FC(The)d(only)g(GL)f (commands)g(that)f(are)h(allo)o(w)o(ed)h(within)g(an)o(y)f Fz(Begin)p FC(/)p Fz(End)i FC(pairs)e(are)120 732 y(the)h(commands)f (for)g(sp)q(ecifying)j(v)o(ertex)d(co)q(ordinates,)g(v)o(ertex)g (color,)g(normal)h(co)q(or-)120 788 y(dinates,)k(and)e(texture)g(co)q (ordinates)g(\()p Fz(V)l(ertex)p FC(,)f Fz(Color)p FC(,)h Fz(Index)p FC(,)g Fz(Normal)p FC(,)h Fz(T)l(ex-)120 845 y(Co)q(ord)p FC(\),)f(the)f Fz(Arra)o(yElemen)o(t)f FC(command)h(\(see) g(section)h(2.8\),)e(the)i Fz(Ev)m(alCo)q(ord)120 901 y FC(and)c Fz(Ev)m(alP)o(oin)o(t)h FC(commands)e(\(see)h(section)g (5.1\),)f(commands)g(for)g(sp)q(ecifying)j(ligh)o(t-)120 957 y(ing)i(material)e(parameters)g(\()p Fz(Material)i FC(commands;)e(see)h(section)g(2.13.2\),)e(displa)o(y)120 1014 y(list)21 b(in)o(v)o(o)q(cation)f(commands)g(\()p Fz(CallList)h FC(and)f Fz(CallLists)p FC(;)j(see)d(section)g(5.4\),)g (and)120 1070 y(the)d Fz(EdgeFlag)i FC(command.)25 b(Executing)18 b(an)o(y)f(other)f(GL)h(command)g(b)q(et)o(w)o(een)h(the)120 1127 y(execution)g(of)d Fz(Begin)i FC(and)g(the)f(corresp)q(onding)h (execution)h(of)d Fz(End)i FC(results)g(in)g(the)120 1183 y(error)j Fr(INVALID)p 394 1183 14 2 v 15 w(OPERATION)p FC(.)e(Executing)j Fz(Begin)h FC(after)e Fz(Begin)h FC(has)g(already)g (b)q(een)120 1240 y(executed)g(but)f(b)q(efore)f(an)h Fz(End)g FC(is)g(executed)g(generates)g(the)f Fr(INVALID)p 1407 1240 V 15 w(OPERATION)120 1296 y FC(error,)14 b(as)h(do)q(es)h (executing)g Fz(End)g FC(without)f(a)g(previous)h(corresp)q(onding)g Fz(Begin)p FC(.)191 1354 y(Execution)209 b(of)g(the)f(commands)h Fz(En-)120 1411 y(ableClien)o(tState)p FC(,)21 b Fz(DisableClien)o (tState)p FC(,)h Fz(PushClien)o(tA)o(ttrib)p FC(,)c Fz(P)o(opClien-)120 1467 y(tA)o(ttrib)p FC(,)29 b Fz(EdgeFlagP)o(oin)o(ter)p FC(,)g Fz(T)l(exCo)q(ordP)o(oin)o(ter)p FC(,)f Fz(ColorP)o(oin)o(ter)p FC(,)f Fz(Ind-)120 1524 y(exP)o(oin)o(ter)p FC(,)19 b Fz(NormalP)o(oin)o(ter)p FC(,)g Fz(V)l(ertexP)o(oin)o(ter)p FC(,)e Fz(In)o(terlea)o(v)o(edArra)o(ys)p FC(,)g(and)120 1580 y Fz(PixelStore)p FC(,)f(is)g(not)f(allo)o(w)o(ed)i(within)f(an)o (y)g Fz(Begin)p FC(/)p Fz(End)g FC(pair,)g(but)g(an)f(error)g(ma)o(y) 120 1636 y(or)h(ma)o(y)g(not)f(b)q(e)i(generated)g(if)f(suc)o(h)h (execution)g(o)q(ccurs.)24 b(If)16 b(an)g(error)g(is)h(not)e(gener-)120 1693 y(ated,)d(GL)g(op)q(eration)g(is)g(unde\014ned.)21 b(\(These)12 b(commands)f(are)h(describ)q(ed)i(in)e(sections)120 1749 y(2.8,)i(3.6.1,)f(and)j(Chapter)f(6.\))120 1901 y Fs(2.7)67 b(V)-6 b(ertex)23 b(Sp)r(eci\014cation)120 2006 y FC(V)l(ertices)12 b(are)e(sp)q(eci\014ed)j(b)o(y)e(giving)g (their)g(co)q(ordinates)g(in)h(t)o(w)o(o,)e(three,)h(or)f(four)g (dimen-)120 2062 y(sions.)21 b(This)15 b(is)h(done)g(using)g(one)f(of)g (sev)o(eral)g(v)o(ersions)h(of)e(the)i Fz(V)l(ertex)d FC(command:)234 2162 y Fw(void)30 b Fz(V)l(ertex)p FB(f)p Fz(234)p FB(gf)p Fz(sifd)p FB(g)p FC(\()e Fw(T)15 b Fv(c)n(o)n(or)n(ds) f FC(\))h Fw(;)234 2219 y(void)30 b Fz(V)l(ertex)p FB(f)p Fz(234)p FB(gf)p Fz(sifd)p FB(g)p Fz(v)p FC(\()d Fw(T)15 b Fv(c)n(o)n(or)n(ds)g FC(\))g Fw(;)120 2319 y FC(A)i(call)h(to)e(an)o (y)h Fz(V)l(ertex)e FC(command)i(sp)q(eci\014es)i(four)d(co)q (ordinates:)24 b Fy(x)p FC(,)17 b Fy(y)r FC(,)f Fy(z)r FC(,)h(and)g Fy(w)q FC(.)120 2375 y(The)j Fy(x)f FC(co)q(ordinate)g(is) g(the)h(\014rst)e(co)q(ordinate,)i Fy(y)h FC(is)f(second,)g Fy(z)h FC(is)e(third,)h(and)g Fy(w)f FC(is)120 2432 y(fourth.)h(A)15 b(call)h(to)e Fz(V)l(ertex2)g FC(sets)g(the)h Fy(x)g FC(and)g Fy(y)i FC(co)q(ordinates;)e(the)g Fy(z)i FC(co)q(ordinate)e (is)120 2488 y(implicitl)q(y)j(set)e(to)f(zero)h(and)g(the)g Fy(w)h FC(co)q(ordinate)f(to)f(one.)22 b Fz(V)l(ertex3)15 b FC(sets)g Fy(x)p FC(,)h Fy(y)r FC(,)g(and)p eop %%Page: 20 29 20 28 bop 332 137 a FC(20)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)332 286 y Fy(z)j FC(to)d(the)h(pro)o(vided)h (v)m(alues)g(and)g Fy(w)f FC(to)f(one.)26 b Fz(V)l(ertex4)15 b FC(sets)i(all)h(four)e(co)q(ordinates,)332 343 y(allo)o(wing)22 b(the)f(sp)q(eci\014cation)i(of)e(an)g(arbitrary)f(p)q(oin)o(t)i(in)f (pro)s(jectiv)o(e)g(three-space.)332 399 y(In)o(v)o(oking)14 b(a)g Fz(V)l(ertex)f FC(command)g(outside)i(of)e(a)h Fz(Begin)p FC(/)p Fz(End)h FC(pair)f(results)h(in)f(unde-)332 456 y(\014ned)i(b)q(eha)o(vior.)403 512 y(Curren)o(t)i(v)m(alues)i(are) f(used)g(in)h(asso)q(ciating)f(auxiliary)h(data)f(with)g(a)f(v)o(ertex) h(as)332 569 y(describ)q(ed)h(in)f(section)g(2.6.)28 b(A)18 b(curren)o(t)g(v)m(alue)h(ma)o(y)f(b)q(e)g(c)o(hanged)h(at)e(an) o(y)h(time)h(b)o(y)332 625 y(issuing)e(an)e(appropriate)g(command.)20 b(The)15 b(commands)446 719 y Fw(void)29 b Fz(T)l(exCo)q(ord)p FB(f)p Fz(1234)p FB(gf)p Fz(sifd)p FB(g)p FC(\()h Fw(T)15 b Fv(c)n(o)n(or)n(ds)f FC(\))h Fw(;)446 776 y(void)29 b Fz(T)l(exCo)q(ord)p FB(f)p Fz(1234)p FB(gf)p Fz(sifd)p FB(g)p Fz(v)p FC(\()g Fw(T)15 b Fv(c)n(o)n(or)n(ds)g FC(\))g Fw(;)332 870 y FC(sp)q(ecify)i(the)f(curren)o(t)f(homogeneous)h (texture)f(co)q(ordinates,)h(named)g Fy(s)p FC(,)f Fy(t)p FC(,)h Fy(r)q FC(,)f(and)h Fy(q)r FC(.)332 926 y(The)g Fz(T)l(exCo)q(ord1)f FC(family)h(of)f(commands)h(set)f(the)g Fy(s)h FC(co)q(ordinate)g(to)f(the)h(pro)o(vided)332 983 y(single)d(argumen)o(t)e(while)j(setting)d Fy(t)i FC(and)f Fy(r)g FC(to)f(0)h(and)g Fy(q)i FC(to)d(1.)18 b(Similarly)l(,)d Fz(T)l(exCo)q(ord2)332 1039 y FC(sets)f Fy(s)h FC(and)g Fy(t)g FC(to)f(the)g(sp)q(eci\014ed)j(v)m(alues,)e Fy(r)g FC(to)f(0)g(and)h Fy(q)i FC(to)c(1;)i Fz(T)l(exCo)q(ord3)f FC(sets)g Fy(s)p FC(,)g Fy(t)p FC(,)332 1096 y(and)h Fy(r)q FC(,)g(with)h Fy(q)h FC(set)e(to)f(1,)h(and)g Fz(T)l(exCo)q(ord4)g FC(sets)g(all)h(four)f(texture)g(co)q(ordinates.) 403 1152 y(The)g(curren)o(t)g(normal)g(is)h(set)f(using)446 1246 y Fw(void)29 b Fz(Normal3)p FB(f)p Fz(bsifd)p FB(g)p FC(\()h Fw(T)15 b Fv(c)n(o)n(or)n(ds)g FC(\))g Fw(;)446 1303 y(void)29 b Fz(Normal3)p FB(f)p Fz(bsifd)p FB(g)p Fz(v)p FC(\()h Fw(T)15 b Fv(c)n(o)n(or)n(ds)f FC(\))h Fw(;)332 1397 y FC(The)k(curren)o(t)g(normal)f(is)h(set)g(to)f(the)h (giv)o(en)g(co)q(ordinates)g(whenev)o(er)g(one)g(of)f(these)332 1453 y(commands)f(is)h(issued.)28 b(Byte,)18 b(short,)f(or)g(in)o (teger)h(v)m(alues)h(passed)e(to)g Fz(Normal)h FC(are)332 1510 y(con)o(v)o(erted)11 b(to)f(\015oating-p)q(oin)o(t)i(v)m(alues)g (as)f(indicated)i(for)d(the)h(corresp)q(onding)h(\(signed\))332 1566 y(t)o(yp)q(e)j(in)h(T)l(able)g(2.6.)403 1623 y(Finally)l(,)j (there)e(are)g(sev)o(eral)h(w)o(a)o(ys)e(to)h(set)g(the)g(curren)o(t)g (color.)26 b(The)18 b(GL)f(stores)332 1679 y(b)q(oth)h(a)e(curren)o(t)i (single-v)m(alued)i Fv(c)n(olor)e(index)p FC(,)f(and)h(a)f(curren)o(t)g (four-v)m(alued)h(R)o(GBA)332 1735 y(color.)h(One)13 b(or)f(the)h(other)f(of)g(these)g(is)h(signi\014can)o(t)h(dep)q(ending) g(as)e(the)h(GL)f(is)h(in)h Fv(c)n(olor)332 1792 y(index)19 b(mo)n(de)f FC(or)f Fv(R)o(GBA)i(mo)n(de)p FC(.)29 b(The)18 b(mo)q(de)g(selection)i(is)e(made)g(when)h(the)f(GL)g(is)332 1848 y(initialized)q(.)403 1905 y(The)d(command)g(to)g(set)g(R)o(GBA)g (colors)g(is)446 1999 y Fw(void)29 b Fz(Color)p FB(f)p Fz(34)p FB(gf)p Fz(bsifd)18 b(ubusui)p FB(g)p FC(\()30 b Fw(T)15 b Fv(c)n(omp)n(onents)f FC(\))g Fw(;)446 2055 y(void)29 b Fz(Color)p FB(f)p Fz(34)p FB(gf)p Fz(bsifd)18 b(ubusui)p FB(g)p Fz(v)p FC(\()29 b Fw(T)15 b Fv(c)n(omp)n(onents)f FC(\))h Fw(;)332 2149 y FC(The)k Fz(Color)g FC(command)f(has)g(t)o(w)o (o)g(ma)s(jor)f(v)m(arian)o(ts:)26 b Fz(Color3)19 b FC(and)g Fz(Color4)p FC(.)30 b(The)332 2206 y(four)18 b(v)m(alue)i(v)o(ersions)e (set)g(all)i(four)e(v)m(alues.)30 b(The)19 b(three)f(v)m(alue)i(v)o (ersions)f(set)f(R,)g(G,)332 2262 y(and)h(B)g(to)f(the)h(pro)o(vided)g (v)m(alues;)i(A)e(is)g(set)g(to)f(1.0.)29 b(\(The)19 b(con)o(v)o(ersion)g(of)f(in)o(teger)332 2319 y(color)f(comp)q(onen)o (ts)g(\(R,)g(G,)f(B,)g(and)h(A\))g(to)f(\015oating-p)q(oin)o(t)i(v)m (alues)g(is)f(discussed)i(in)332 2375 y(section)d(2.13.\))403 2432 y(V)l(ersions)i(of)g(the)g Fz(Color)g FC(command)f(that)h(tak)o(e) f(\015oating-p)q(oin)o(t)h(v)m(alues)h(accept)332 2488 y(v)m(alues)k(nominally)g(b)q(et)o(w)o(een)f(0.0)e(and)i(1.0.)38 b(0.0)20 b(corresp)q(onds)i(to)f(the)g(minim)o(um)p eop %%Page: 21 30 21 29 bop 120 137 a Fx(2.8.)34 b(VER)l(TEX)16 b(ARRA)l(YS)946 b FC(21)120 286 y(while)21 b(1.0)c(corresp)q(onds)i(to)f(the)h(maxim)o (um)g(\(mac)o(hine)g(dep)q(enden)o(t\))h(v)m(alue)g(that)e(a)120 343 y(comp)q(onen)o(t)g(ma)o(y)e(tak)o(e)h(on)g(in)h(the)f (framebu\013er)g(\(see)g(section)g(2.13)f(on)h(colors)h(and)120 399 y(coloring\).)j(V)l(alues)16 b(outside)g([0)p Fy(;)8 b FC(1])13 b(are)i(not)f(clamp)q(ed.)191 457 y(The)h(command)234 556 y Fw(void)30 b Fz(Index)p FB(f)p Fz(sifd)17 b(ub)p FB(g)p FC(\()29 b Fw(T)15 b Fv(index)g FC(\))g Fw(;)234 613 y(void)30 b Fz(Index)p FB(f)p Fz(sifd)17 b(ub)p FB(g)p Fz(v)p FC(\()29 b Fw(T)15 b Fv(index)g FC(\))g Fw(;)120 712 y Fz(Index)22 b FC(up)q(dates)g(the)h(curren)o(t)e(\(single-v)m (alued\))k(color)d(index.)42 b(It)22 b(tak)o(es)f(one)h(ar-)120 768 y(gumen)o(t,)d(the)f(v)m(alue)i(to)d(whic)o(h)i(the)g(curren)o(t)f (color)g(index)i(should)f(b)q(e)g(set.)29 b(V)l(alues)120 825 y(outside)13 b(the)f(\(mac)o(hine-dep)q(enden)o(t\))i(represen)o (table)f(range)f(of)f(color)h(indices)i(are)e(not)120 881 y(clamp)q(ed.)191 939 y(The)29 b(state)f(required)h(to)f(supp)q (ort)h(v)o(ertex)f(sp)q(eci\014cation)j(consists)e(of)f(four)120 995 y(\015oating-p)q(oin)o(t)17 b(n)o(um)o(b)q(ers)f(to)g(store)f(the)h (curren)o(t)g(texture)f(co)q(ordinates)i Fy(s)p FC(,)f Fy(t)p FC(,)g Fy(r)q FC(,)g(and)120 1052 y Fy(q)r FC(,)e(three)g (\015oating-p)q(oin)o(t)h(n)o(um)o(b)q(ers)f(to)f(store)g(the)h(three)g (co)q(ordinates)g(of)g(the)g(curren)o(t)120 1108 y(normal,)g(four)f (\015oating-p)q(oin)o(t)h(v)m(alues)h(to)d(store)h(the)h(curren)o(t)f (R)o(GBA)g(color,)h(and)g(one)120 1165 y(\015oating-p)q(oin)o(t)k(v)m (alue)g(to)e(store)g(the)g(curren)o(t)h(color)g(index.)25 b(There)17 b(is)h(no)e(notion)h(of)120 1221 y(a)h(curren)o(t)g(v)o (ertex,)g(so)g(no)g(state)f(is)h(dev)o(oted)h(to)e(v)o(ertex)h(co)q (ordinates.)28 b(The)19 b(initial)120 1278 y(v)m(alues)f(of)e Fy(s)p FC(,)h Fy(t)p FC(,)g(and)g Fy(r)h FC(of)e(the)h(curren)o(t)f (texture)h(co)q(ordinates)g(are)f(zero;)h(the)g(initial)120 1334 y(v)m(alue)h(of)f Fy(q)i FC(is)e(one.)25 b(The)17 b(initial)i(curren)o(t)e(normal)g(has)f(co)q(ordinates)i(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(1\).)21 b(The)120 1390 y(initial)d(R)o(GBA)d (color)g(is)h(\(R)p Fy(;)8 b FC(G)p Fy(;)g FC(B)p Fy(;)g FC(A)n(\))k(=)h(\(1)p Fy(;)8 b FC(1)p Fy(;)g FC(1)p Fy(;)f FC(1\).)17 b(The)e(initial)i(color)f(index)g(is)g(1.)120 1541 y Fs(2.8)67 b(V)-6 b(ertex)23 b(Arra)n(ys)120 1645 y FC(The)18 b(v)o(ertex)e(sp)q(eci\014cation)j(commands)e(describ)q(ed) h(in)g(section)g(2.7)e(accept)h(data)f(in)120 1702 y(almost)11 b(an)o(y)f(format,)g(but)h(their)g(use)g(requires)h(man)o(y)e(command)h (executions)h(to)e(sp)q(ec-)120 1758 y(ify)17 b(ev)o(en)g(simple)h (geometry)l(.)23 b(V)l(ertex)16 b(data)g(ma)o(y)g(also)g(b)q(e)h (placed)h(in)o(to)e(arra)o(ys)f(that)120 1815 y(are)h(stored)f(in)h (the)g(clien)o(t's)g(address)g(space.)21 b(Blo)q(c)o(ks)c(of)e(data)g (in)h(these)g(arra)o(ys)e(ma)o(y)120 1871 y(then)g(b)q(e)g(used)h(to)d (sp)q(ecify)j(m)o(ultiple)h(geometric)d(primitiv)o(es)i(through)e(the)h (execution)120 1928 y(of)h(a)f(single)i(GL)f(command.)k(The)c(clien)o (t)h(ma)o(y)e(sp)q(ecify)i(up)f(to)f(six)i(arra)o(ys:)i(one)d(eac)o(h) 120 1984 y(to)i(store)f(edge)i(\015ags,)f(texture)g(co)q(ordinates,)g (colors,)h(color)f(indices,)i(normals,)f(and)120 2040 y(v)o(ertices.)j(The)15 b(commands)234 2140 y Fw(void)30 b Fz(EdgeFlagP)o(oin)o(ter)p FC(\()h Fw(sizei)14 b Fv(stride)p Fw(,)h(void)g Fv(*p)n(ointer)g FC(\))g Fw(;)234 2252 y(void)31 b Fz(T)l(exCo)q(ordP)o(oin)o(ter)p FC(\()e Fw(int)15 b Fv(size)p Fw(,)g(enum)g Fv(typ)n(e)p Fw(,)g(sizei)g Fv(stride)p Fw(,)302 2309 y(void)g Fv(*p)n(ointer)g FC(\))g Fw(;)234 2420 y(void)52 b Fz(ColorP)o(oin)o(ter)p FC(\()f Fw(int)25 b Fv(size)p Fw(,)j(enum)d Fv(typ)n(e)p Fw(,)k(sizei)c Fv(stride)p Fw(,)302 2477 y(void)15 b Fv(*p)n(ointer)g FC(\))g Fw(;)p eop %%Page: 22 31 22 30 bop 332 137 a FC(22)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 398 242 1363 2 v 397 299 2 57 v 423 282 a FC(Command)p 841 299 V 255 w(Sizes)p 1020 299 V 67 w(T)o(yp)q(es)p 1760 299 V 398 301 1363 2 v 398 309 V 397 365 2 57 v 423 348 a Fz(V)l(ertexP)o(oin)o(ter)p 841 365 V 139 w FC(2,3,4)p 1020 365 V 65 w Fw(short)p FC(,)f Fw(int)p FC(,)f Fw(float)p FC(,)g Fw(double)p 1760 365 V 398 367 1363 2 v 397 423 2 57 v 423 406 a Fz(NormalP)o(oin)o(ter)p 841 423 V 156 w FC(3)p 1020 423 V 102 w Fw(byte)p FC(,)h Fw(short)p FC(,)f Fw(int)p FC(,)g Fw(float)p FC(,)g Fw(double)p 1760 423 V 398 425 1363 2 v 397 538 2 113 v 423 465 a Fz(ColorP)o(oin)o(ter)p 841 538 V 184 w FC(3,4)p 1020 538 V 84 w Fw(byte)p FC(,)19 b Fw(ubyte)p FC(,)f Fw(short)p FC(,)h Fw(ushort)p FC(,)f Fw(int)p FC(,)1045 521 y Fw(uint)p FC(,)d Fw(float)p FC(,)f Fw(double)p 1760 538 V 398 540 1363 2 v 397 596 2 57 v 423 579 a Fz(IndexP)o(oin)o(ter)p 841 596 V 198 w FC(1)p 1020 596 V 102 w Fw(ubyte)p FC(,)h Fw(short)p FC(,)f Fw(int)p FC(,)g Fw(float)p FC(,)g Fw(double)p 1760 596 V 398 598 1363 2 v 397 654 2 57 v 423 637 a Fz(T)l(exCo)q(ordP)o(oin)o(ter)p 841 654 V 49 w FC(1,2,3,4)p 1020 654 V 47 w Fw(short)p FC(,)h Fw(int)p FC(,)f Fw(float)p FC(,)g Fw(double)p 1760 654 V 398 656 1363 2 v 397 712 2 57 v 423 695 a Fz(EdgeFlagP)o(oin)o(ter)p 841 712 V 117 w FC(1)p 1020 712 V 102 w Fw(boolean)p 1760 712 V 398 714 1363 2 v 438 794 a FC(T)l(able)i(2.4:)j(V)l(ertex)d(arra)o(y)d (sizes)k(\(v)m(alues)f(p)q(er)f(v)o(ertex\))g(and)g(data)g(t)o(yp)q (es.)446 984 y Fw(void)112 b Fz(IndexP)o(oin)o(ter)p FC(\()f Fw(enum)55 b Fv(typ)n(e)p Fw(,)67 b(sizei)55 b Fv(stride)p Fw(,)514 1040 y(void)15 b Fv(*p)n(ointer)g FC(\))g Fw(;)446 1146 y(void)100 b Fz(NormalP)o(oin)o(ter)p FC(\()g Fw(enum)49 b Fv(typ)n(e)p Fw(,)59 b(sizei)50 b Fv(stride)p Fw(,)514 1203 y(void)15 b Fv(*p)n(ointer)g FC(\))g Fw(;)446 1309 y(void)46 b Fz(V)l(ertexP)o(oin)o(ter)p FC(\()e Fw(int)23 b Fv(size)p Fw(,)h(enum)e Fv(typ)n(e)p Fw(,)j(sizei)e Fv(stride)p Fw(,)514 1366 y(void)15 b Fv(*p)n(ointer)g FC(\))g Fw(;)332 1472 y FC(describ)q(e)24 b(the)e(lo)q(cations)g(and)g(organizations)g(of)g(these)g(arra)o(ys.)38 b(F)l(or)22 b(eac)o(h)g(com-)332 1528 y(mand,)13 b Fv(typ)n(e)h FC(sp)q(eci\014es)h(the)e(data)g(t)o(yp)q(e)g(of)g(the)g(v)m(alues)h (stored)f(in)h(the)g(arra)o(y)l(.)k(Because)332 1585 y(edge)h(\015ags)e(are)h(alw)o(a)o(ys)g(t)o(yp)q(e)g Fw(boolean)p FC(,)g Fz(EdgeFlagP)o(oin)o(ter)g FC(has)h(no)f Fv(typ)n(e)g FC(argu-)332 1641 y(men)o(t.)31 b Fv(size)p FC(,)19 b(when)g(presen)o(t,)h(indicates)g(the)f(n)o(um)o(b)q(er)g(of)g (v)m(alues)h(p)q(er)g(v)o(ertex)e(that)332 1698 y(are)i(stored)f(in)i (the)f(arra)o(y)l(.)33 b(Because)21 b(normals)f(are)g(alw)o(a)o(ys)f (sp)q(eci\014ed)j(with)e(three)332 1754 y(v)m(alues,)d Fz(NormalP)o(oin)o(ter)f FC(has)g(no)g Fv(size)f FC(argumen)o(t.)22 b(Lik)o(ewise,)17 b(b)q(ecause)g(color)f(in-)332 1811 y(dices)f(and)f(edge)h(\015ags)e(are)h(alw)o(a)o(ys)f(sp)q(eci\014ed)j (with)f(a)e(single)j(v)m(alue,)f Fz(IndexP)o(oin)o(ter)332 1867 y FC(and)20 b Fz(EdgeFlagP)o(oin)o(ter)h FC(also)e(ha)o(v)o(e)h (no)f Fv(size)g FC(argumen)o(t.)33 b(T)l(able)40 b(2.4)19 b(indicates)332 1924 y(the)f(allo)o(w)o(able)h(v)m(alues)g(for)f Fv(size)f FC(and)h Fv(typ)n(e)g FC(\(when)g(presen)o(t\).)29 b(F)l(or)17 b Fv(typ)n(e)h FC(the)g(v)m(alues)332 1980 y Fr(BYTE)p FC(,)13 b Fr(SHORT)p FC(,)f Fr(INT)p FC(,)h Fr(FLOAT)p FC(,)f(and)i Fr(DOUBLE)e FC(indicate)k(t)o(yp)q(es)d Fw(byte)p FC(,)g Fw(short)p FC(,)g Fw(int)p FC(,)h Fw(float)p FC(,)332 2037 y(and)d Fw(double)p FC(,)g(resp)q(ectiv)o(ely;)i(and)e (the)g(v)m(alues)h Fr(UNSIGNED)p 1309 2037 14 2 v 14 w(BYTE)p FC(,)e Fr(UNSIGNED)p 1610 2037 V 14 w(SHORT)p FC(,)f(and)332 2093 y Fr(UNSIGNED)p 511 2093 V 14 w(INT)14 b FC(indicate)i(t)o(yp)q(es)e Fw(ubyte)p FC(,)g Fw(ushort)p FC(,)f(and)i Fw(uint)p FC(,)e(resp)q(ectiv)o(ely)l(.)22 b(The)14 b(er-)332 2149 y(ror)19 b Fr(INVALID)p 567 2149 V 14 w(VALUE)f FC(is)i(generated)f(if)h Fv(size)e FC(is)i(sp)q (eci\014ed)i(with)d(a)g(v)m(alue)i(other)e(than)332 2206 y(that)c(indicated)i(in)f(the)f(table.)403 2262 y(The)c(one,)h(t)o(w)o (o,)f(three,)h(or)f(four)g(v)m(alues)i(in)f(an)g(arra)o(y)e(that)h (corresp)q(ond)h(to)f(a)g(single)332 2319 y(v)o(ertex)i(comprise)h(an)f (arra)o(y)f Fv(element)p FC(.)18 b(The)c(v)m(alues)g(within)g(eac)o(h)g (arra)o(y)e(elemen)o(t)i(are)332 2375 y(stored)22 b(sequen)o(tially)i (in)f(memory)l(.)41 b(If)22 b Fv(stride)g FC(is)h(sp)q(eci\014ed)i(as)d (zero,)h(then)g(arra)o(y)332 2432 y(elemen)o(ts)17 b(are)e(stored)h (sequen)o(tially)i(as)e(w)o(ell.)23 b(Otherwise)17 b(p)q(oin)o(ters)f (to)g(the)g Fy(i)p FC(th)f(and)332 2488 y(\()p Fy(i)9 b FC(+)g(1\)st)14 b(elemen)o(ts)i(of)e(an)h(arra)o(y)e(di\013er)i(b)o (y)g Fv(stride)g FC(basic)g(mac)o(hine)h(units)f(\(t)o(ypically)p eop %%Page: 23 32 23 31 bop 120 137 a Fx(2.8.)34 b(VER)l(TEX)16 b(ARRA)l(YS)946 b FC(23)120 286 y(unsigned)15 b(b)o(ytes\),)e(the)h(p)q(oin)o(ter)g(to) f(the)g(\()p Fy(i)7 b FC(+)g(1\)st)k(elemen)o(t)k(b)q(eing)f(greater.) 19 b(F)l(or)13 b(eac)o(h)120 343 y(command,)j Fv(p)n(ointer)g FC(sp)q(eci\014es)h(the)f(lo)q(cation)h(in)g(memory)e(of)h(the)g (\014rst)f(v)m(alue)i(of)f(the)120 399 y(\014rst)f(elemen)o(t)h(of)f (the)g(arra)o(y)f(b)q(eing)j(sp)q(eci\014ed.)191 456 y(An)e(individual)k(arra)o(y)14 b(is)h(enabled)i(or)e(disabled)i(b)o(y) e(calling)i(one)e(of)234 548 y Fw(void)30 b Fz(EnableClien)o(tState)p FC(\()j Fw(enum)14 b Fv(arr)n(ay)i FC(\))f Fw(;)234 604 y(void)30 b Fz(DisableClien)o(tState)p FC(\()j Fw(enum)14 b Fv(arr)n(ay)i FC(\))f Fw(;)120 696 y FC(with)37 b Fv(arr)n(ay)g FC(set)f(to)f Fr(EDGE)p 645 696 14 2 v 15 w(FLAG)p 748 696 V 15 w(ARRAY)p FC(,)g Fr(TEXTURE)p 1075 696 V 14 w(COORD)p 1199 696 V 15 w(ARRAY)p FC(,)g Fr(COLOR)p 1482 696 V 14 w(ARRAY)p FC(,)120 752 y Fr(INDEX)p 233 752 V 15 w(ARRAY)p FC(,)19 b Fr(NORMAL)p 522 752 V 14 w(ARRAY)p FC(,)g(or)g Fr(VERTEX)p 870 752 V 15 w(ARRAY)p FC(,)f(for)i(the)g(edge) g(\015ag,)h(texture)f(co-)120 809 y(ordinate,)15 b(color,)g(color)h (index,)g(normal,)e(or)h(v)o(ertex)g(arra)o(y)l(,)f(resp)q(ectiv)o(ely) l(.)191 865 y(The)d Fy(i)p FC(th)g(elemen)o(t)h(of)f(ev)o(ery)g (enabled)i(arra)o(y)d(is)i(transferred)f(to)f(the)h(GL)h(b)o(y)f (calling)234 957 y Fw(void)30 b Fz(Arra)o(yElemen)o(t)p FC(\()e Fw(int)15 b Fv(i)g FC(\))g Fw(;)120 1049 y FC(F)l(or)c(eac)o(h) h(enabled)h(arra)o(y)l(,)e(it)g(is)i(as)e(though)g(the)h(corresp)q (onding)g(command)g(from)e(sec-)120 1105 y(tion)k(2.7)e(or)h(section)h (2.6.2)d(w)o(ere)i(called)i(with)f(a)f(p)q(oin)o(ter)g(to)g(elemen)o(t) h Fy(i)p FC(.)19 b(F)l(or)13 b(the)g(v)o(er-)120 1161 y(tex)f(arra)o(y)l(,)g(the)g(corresp)q(onding)i(command)e(is)h Fz(V)l(ertex[)p Fj(size)p Fz(][)p Fj(ty)o(p)m(e)p Fz(]v)p FC(,)c(where)k Fv(size)e FC(is)120 1218 y(one)i(of)g([2,3,4],)d(and)j Fv(typ)n(e)g FC(is)g(one)g(of)g([s,i,f,d],)e(corresp)q(onding)j(to)e (arra)o(y)g(t)o(yp)q(es)h Fw(short)p FC(,)120 1274 y Fw(int)p FC(,)24 b Fw(float)p FC(,)f(and)f Fw(double)f FC(resp)q(ectiv)o(ely)l(.)43 b(The)23 b(corresp)q(onding)g(commands)f (for)120 1331 y(the)16 b(edge)h(\015ag,)e(texture)h(co)q(ordinate,)g (color,)g(color)g(index,)h(and)f(normal)g(arra)o(ys)f(are)120 1387 y Fz(EdgeFlagv)p FC(,)j Fz(T)l(exCo)q(ord[)p Fj(size)p Fz(][)p Fj(typ)m(e)p Fz(]v)p FC(,)c Fz(Color[)p Fj(size)p Fz(][)p Fj(typ)m(e)p Fz(]v)p FC(,)h Fz(Index[)p Fj(typ)m(e)p Fz(]v)p FC(,)120 1444 y(and)20 b Fz(Normal[)p Fj(typ)m(e)p Fz(]v)p FC(,)f(resp)q(ectiv)o(ely)l(.)34 b(If)20 b(the)g(v)o(ertex)f (arra)o(y)f(is)i(enabled,)i(it)e(is)g(as)120 1500 y(though)i Fz(V)l(ertex[)p Fj(size)p Fz(][)p Fj(ty)o(p)m(e)p Fz(]v)c FC(is)k(executed)g(last,)h(after)d(the)h(executions)i(of)e(the)120 1557 y(other)15 b(corresp)q(onding)h(commands.)191 1613 y(Changes)i(made)h(to)f(arra)o(y)f(data)h(b)q(et)o(w)o(een)g(the)h (execution)h(of)e Fz(Begin)h FC(and)g(the)120 1670 y(corresp)q(onding) 13 b(execution)g(of)e Fz(End)h FC(ma)o(y)f(a\013ect)g(calls)i(to)e Fz(Arra)o(yElemen)o(t)f FC(that)h(are)120 1726 y(made)k(within)i(the)e (same)g Fz(Begin)p FC(/)p Fz(End)h FC(p)q(erio)q(d)g(in)g(non-sequen)o (tial)g(w)o(a)o(ys.)j(That)c(is,)120 1782 y(a)i(call)g(to)f Fz(Arra)o(yElemen)o(t)f FC(that)h(precedes)h(a)f(c)o(hange)h(to)f(arra) o(y)f(data)h(ma)o(y)g(access)120 1839 y(the)e(c)o(hanged)h(data,)e(and) h(a)g(call)h(that)e(follo)o(ws)h(a)g(c)o(hange)g(to)f(arra)o(y)g(data)g (ma)o(y)h(access)120 1895 y(original)j(data.)191 1952 y(The)e(command)234 2044 y Fw(void)30 b Fz(Dra)o(wArra)o(ys)p FC(\()d Fw(enum)14 b Fv(mo)n(de)p Fw(,)i(int)e Fv(\014rst)p Fw(,)h(sizei)f Fv(c)n(ount)h FC(\))g Fw(;)120 2135 y FC(constructs)g(a)g(sequence)h(of)f(geometric)g(primitiv)o(es)i(using)f (elemen)o(ts)g Fy(f)5 b(ir)q(st)15 b FC(through)120 2192 y Fy(f)5 b(ir)q(st)r FC(+)q Fy(count)q FB(\000)q FC(1)10 b(of)h(eac)o(h)f(enabled)i(arra)o(y)l(.)18 b Fv(mo)n(de)10 b FC(sp)q(eci\014es)j(what)d(kind)h(of)f(primitiv)o(es)120 2248 y(are)15 b(constructed;)f(it)h(accepts)g(the)g(same)f(tok)o(en)h (v)m(alues)h(as)e(the)h Fy(mode)f FC(parameter)g(of)120 2305 y(the)i Fz(Begin)g FC(command.)j(The)d(e\013ect)f(of)317 2396 y Fz(Dra)o(wArra)o(ys)e Fw(\()p Fy(mode;)8 b(f)d(ir)q(st;)j(count) p Fw(\);)120 2488 y FC(is)16 b(the)f(same)g(as)g(the)g(e\013ect)g(of)g (the)g(command)g(sequence)p eop %%Page: 24 33 24 32 bop 332 137 a FC(24)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)529 286 y Fw(if)24 b(\()p Fy(mode)14 b FC(or)h Fy(count)h FC(is)f(in)o(v)m(alid)j Fw(\))590 343 y FC(generate)d(appropriate)g(error)529 399 y Fw(else)23 b FB(f)590 456 y Fw(int)g(i;)590 512 y Fz(Begin)p Fw(\()p Fy(mode)p Fw(\);)590 569 y(for)g(\(i=0;)g(i)h(<)39 b Fy(count)15 b Fw(;)24 b(i++\))650 625 y Fz(Arra)o(yElemen)o(t)p Fw(\()p Fy(f)5 b(ir)q(st)p FC(+)14 b Fw(i\);)590 682 y Fz(End)p Fw(\(\);)529 738 y FB(g)332 827 y FC(with)j(one)g (exception:)23 b(the)17 b(curren)o(t)g(edge)f(\015ag,)h(texture)f(co)q (ordinates,)h(color,)f(color)332 883 y(index,)f(and)e(normal)g(co)q (ordinates)h(are)f(eac)o(h)g(indeterminate)i(after)d(the)i(execution)g (of)332 940 y Fz(Dra)o(wArra)o(ys)p FC(,)f(if)j(the)g(corresp)q(onding) h(arra)o(y)d(is)j(enabled.)23 b(Curren)o(t)16 b(v)m(alues)h(corre-)332 996 y(sp)q(onding)f(to)d(disabled)k(arra)o(ys)c(are)h(not)g(mo)q (di\014ed)i(b)o(y)e(the)g(execution)i(of)e Fz(Dra)o(wAr-)332 1053 y(ra)o(ys)p FC(.)403 1109 y(The)h(command)446 1198 y Fw(void)33 b Fz(Dra)o(wElemen)o(ts)p FC(\()f Fw(enum)16 b Fv(mo)n(de)p Fw(,)i(sizei)e Fv(c)n(ount)p Fw(,)h(enum)f Fv(typ)n(e)p Fw(,)514 1254 y(void)f Fv(*indic)n(es)f FC(\))g Fw(;)332 1343 y FC(constructs)25 b(a)g(sequence)h(of)e (geometric)i(primitiv)o(es)g(using)g(the)f Fv(c)n(ount)g FC(elemen)o(ts)332 1399 y(whose)d(indices)h(are)f(stored)f(in)h Fv(indic)n(es)p FC(.)39 b Fv(typ)n(e)21 b FC(m)o(ust)g(b)q(e)i(one)e (of)h Fr(UNSIGNED)p 1716 1399 14 2 v 14 w(BYTE)p FC(,)332 1456 y Fr(UNSIGNED)p 511 1456 V 14 w(SHORT)p FC(,)c(or)i Fr(UNSIGNED)p 903 1456 V 14 w(INT)p FC(,)e(indicating)k(that)d(the)h(v) m(alues)h(in)f Fv(indic)n(es)f FC(are)332 1512 y(indices)24 b(of)e(GL)g(t)o(yp)q(e)h Fw(ubyte)p FC(,)f Fw(ushort)p FC(,)h(or)f Fw(uint)f FC(resp)q(ectiv)o(ely)l(.)43 b Fv(mo)n(de)23 b FC(sp)q(eci\014es)332 1569 y(what)13 b(kind)i(of)f(primitiv)o(es)h(are)e(constructed;)h(it)g(accepts)g(the)g (same)g(tok)o(en)f(v)m(alues)i(as)332 1625 y(the)g Fy(mode)g FC(parameter)g(of)f(the)i Fz(Begin)g FC(command.)k(The)15 b(e\013ect)g(of)529 1714 y Fz(Dra)o(wElemen)o(ts)f Fw(\()p Fy(mode;)8 b(count;)g(ty)r(pe;)g(indices)p Fw(\);)332 1803 y FC(is)16 b(the)f(same)g(as)g(the)g(e\013ect)g(of)g(the)g (command)g(sequence)529 1891 y Fw(if)24 b(\()p Fy(mode;)14 b(count;)h FC(or)g Fy(ty)r(pe)g FC(is)h(in)o(v)m(alid)i Fw(\))590 1948 y FC(generate)d(appropriate)g(error)529 2004 y Fw(else)23 b FB(f)590 2061 y Fw(int)g(i;)590 2117 y Fz(Begin)p Fw(\()p Fy(mode)p Fw(\);)590 2174 y(for)g(\(i=0;)g(i)h(<) 39 b Fy(count)15 b Fw(;)24 b(i++\))650 2230 y Fz(Arra)o(yElemen)o(t)p Fw(\()p Fy(indices)p FC([)p Fw(i)p FC(])p Fw(\);)590 2287 y Fz(End)p Fw(\(\);)529 2343 y FB(g)332 2432 y FC(with)17 b(one)g(exception:)23 b(the)17 b(curren)o(t)g(edge)f(\015ag,)h(texture) f(co)q(ordinates,)h(color,)f(color)332 2488 y(index,)21 b(and)e(normal)f(co)q(ordinates)h(are)g(eac)o(h)f(indeterminate)j (after)d(the)g(execution)p eop %%Page: 25 34 25 33 bop 120 137 a Fx(2.8.)34 b(VER)l(TEX)16 b(ARRA)l(YS)946 b FC(25)p 120 247 1952 2 v 119 303 2 57 v 145 286 a Fy(f)5 b(or)q(mat)p 478 303 V 240 w(e)557 293 y Fu(t)p 628 303 V 685 286 a Fy(e)706 293 y Fu(c)p 779 303 V 832 286 a Fy(e)853 293 y Fu(n)p 929 303 V 955 286 a Fy(s)976 293 y Fu(t)p 1015 303 V 1041 286 a Fy(s)1062 293 y Fu(c)p 1103 303 V 1129 286 a Fy(s)1150 293 y Fu(v)p 1195 303 V 1342 286 a Fy(t)1358 293 y Fu(c)p 1522 303 V 1553 286 a Fy(p)1576 293 y Fu(c)p 1622 303 V 1649 286 a Fy(p)1672 293 y Fu(n)p 1721 303 V 1788 286 a Fy(p)1811 293 y Fu(v)p 1896 303 V 1974 286 a Fy(s)p 2071 303 V 120 305 1952 2 v 120 313 V 119 369 2 57 v 145 353 a Fr(V2F)p 478 369 V 293 w Fv(F)m(alse)p 628 369 V 48 w(F)m(alse)p 779 369 V 48 w(F)m(alse)p 929 369 V 1015 369 V 1103 369 V 233 w FC(2)p 1195 369 V 1522 369 V 1622 369 V 1721 369 V 636 w(0)p 1896 369 V 139 w(2)p Fy(f)p 2071 369 V 119 426 V 145 409 a Fr(V3F)p 478 426 V 293 w Fv(F)m(alse)p 628 426 V 48 w(F)m(alse)p 779 426 V 48 w(F)m(alse)p 929 426 V 1015 426 V 1103 426 V 233 w FC(3)p 1195 426 V 1522 426 V 1622 426 V 1721 426 V 636 w(0)p 1896 426 V 139 w(3)p Fy(f)p 2071 426 V 119 482 V 145 465 a Fr(C4UB)p 236 465 14 2 v 15 w(V2F)p 478 482 2 57 v 190 w Fv(F)m(alse)p 628 482 V 52 w(T)m(rue)p 779 482 V 52 w(F)m(alse)p 929 482 V 1015 482 V 143 w FC(4)p 1103 482 V 67 w(2)p 1195 482 V 59 w Fr(UNSIGNED)p 1400 465 14 2 v 14 w(BYTE)p 1522 482 2 57 v 62 w FC(0)p 1622 482 V 1721 482 V 216 w Fy(c)p 1896 482 V 102 w(c)10 b FC(+)g(2)p Fy(f)p 2071 482 V 119 539 V 145 522 a Fr(C4UB)p 236 522 14 2 v 15 w(V3F)p 478 539 2 57 v 190 w Fv(F)m(alse)p 628 539 V 52 w(T)m(rue)p 779 539 V 52 w(F)m(alse)p 929 539 V 1015 539 V 143 w FC(4)p 1103 539 V 67 w(3)p 1195 539 V 59 w Fr(UNSIGNED)p 1400 522 14 2 v 14 w(BYTE)p 1522 539 2 57 v 62 w FC(0)p 1622 539 V 1721 539 V 216 w Fy(c)p 1896 539 V 102 w(c)g FC(+)g(3)p Fy(f)p 2071 539 V 120 540 1952 2 v 119 597 2 57 v 145 580 a Fr(C3F)p 214 580 14 2 v 15 w(V3F)p 478 597 2 57 v 212 w Fv(F)m(alse)p 628 597 V 52 w(T)m(rue)p 779 597 V 52 w(F)m(alse)p 929 597 V 1015 597 V 143 w FC(3)p 1103 597 V 67 w(3)p 1195 597 V 143 w Fr(FLOAT)p 1522 597 V 146 w FC(0)p 1622 597 V 1721 597 V 201 w(3)p Fy(f)p 1896 597 V 130 w FC(6)p Fy(f)p 2071 597 V 119 653 V 145 636 a Fr(N3F)p 214 636 14 2 v 15 w(V3F)p 478 653 2 57 v 212 w Fv(F)m(alse)p 628 653 V 48 w(F)m(alse)p 779 653 V 52 w(T)m(rue)p 929 653 V 1015 653 V 1103 653 V 237 w FC(3)p 1195 653 V 1522 653 V 1622 653 V 499 w(0)p 1721 653 V 101 w(3)p Fy(f)p 1896 653 V 130 w FC(6)p Fy(f)p 2071 653 V 119 710 V 145 693 a Fr(C4F)p 214 693 14 2 v 15 w(N3F)p 295 693 V 15 w(V3F)p 478 710 2 57 v 131 w Fv(F)m(alse)p 628 710 V 52 w(T)m(rue)p 779 710 V 56 w(T)m(rue)p 929 710 V 1015 710 V 147 w FC(4)p 1103 710 V 67 w(3)p 1195 710 V 143 w Fr(FLOAT)p 1522 710 V 146 w FC(0)p 1622 710 V 63 w(4)p Fy(f)p 1721 710 V 93 w FC(7)p Fy(f)p 1896 710 V 118 w FC(10)p Fy(f)p 2071 710 V 119 766 V 145 749 a Fr(T2F)p 214 749 14 2 v 15 w(V3F)p 478 766 2 57 v 215 w Fv(T)m(rue)p 628 766 V 53 w(F)m(alse)p 779 766 V 48 w(F)m(alse)p 929 766 V 55 w FC(2)p 1015 766 V 1103 766 V 155 w(3)p 1195 766 V 1522 766 V 1622 766 V 1721 766 V 623 w(2)p Fy(f)p 1896 766 V 130 w FC(5)p Fy(f)p 2071 766 V 120 768 1952 2 v 119 824 2 57 v 145 807 a Fr(T4F)p 214 807 14 2 v 15 w(V4F)p 478 824 2 57 v 215 w Fv(T)m(rue)p 628 824 V 53 w(F)m(alse)p 779 824 V 48 w(F)m(alse)p 929 824 V 55 w FC(4)p 1015 824 V 1103 824 V 155 w(4)p 1195 824 V 1522 824 V 1622 824 V 1721 824 V 623 w(4)p Fy(f)p 1896 824 V 130 w FC(8)p Fy(f)p 2071 824 V 119 881 V 145 864 a Fr(T2F)p 214 864 14 2 v 15 w(C4UB)p 317 864 V 15 w(V3F)p 478 881 2 57 v 112 w Fv(T)m(rue)p 628 881 V 57 w(T)m(rue)p 779 881 V 52 w(F)m(alse)p 929 881 V 55 w FC(2)p 1015 881 V 65 w(4)p 1103 881 V 67 w(3)p 1195 881 V 59 w Fr(UNSIGNED)p 1400 864 14 2 v 14 w(BYTE)p 1522 881 2 57 v 49 w FC(2)p Fy(f)p 1622 881 V 1721 881 V 154 w(c)g FC(+)g(2)p Fy(f)p 1896 881 V 55 w(c)g FC(+)g(5)p Fy(f)p 2071 881 V 119 937 V 145 920 a Fr(T2F)p 214 920 14 2 v 15 w(C3F)p 295 920 V 15 w(V3F)p 478 937 2 57 v 134 w Fv(T)m(rue)p 628 937 V 57 w(T)m(rue)p 779 937 V 52 w(F)m(alse)p 929 937 V 55 w FC(2)p 1015 937 V 65 w(3)p 1103 937 V 67 w(3)p 1195 937 V 143 w Fr(FLOAT)p 1522 937 V 133 w FC(2)p Fy(f)p 1622 937 V 1721 937 V 192 w FC(5)p Fy(f)p 1896 937 V 130 w FC(8)p Fy(f)p 2071 937 V 119 994 V 145 977 a Fr(T2F)p 214 977 14 2 v 15 w(N3F)p 295 977 V 15 w(V3F)p 478 994 2 57 v 134 w Fv(T)m(rue)p 628 994 V 53 w(F)m(alse)p 779 994 V 52 w(T)m(rue)p 929 994 V 59 w FC(2)p 1015 994 V 1103 994 V 155 w(3)p 1195 994 V 1522 994 V 1622 994 V 485 w(2)p Fy(f)p 1721 994 V 93 w FC(5)p Fy(f)p 1896 994 V 130 w FC(8)p Fy(f)p 2071 994 V 120 995 1952 2 v 119 1052 2 57 v 145 1035 a Fr(T2F)p 214 1035 14 2 v 15 w(C4F)p 295 1035 V 15 w(N3F)p 376 1035 V 15 w(V3F)p 478 1052 2 57 v 53 w Fv(T)m(rue)p 628 1052 V 57 w(T)m(rue)p 779 1052 V 56 w(T)m(rue)p 929 1052 V 59 w FC(2)p 1015 1052 V 65 w(4)p 1103 1052 V 67 w(3)p 1195 1052 V 143 w Fr(FLOAT)p 1522 1052 V 133 w FC(2)p Fy(f)p 1622 1052 V 54 w FC(6)p Fy(f)p 1721 1052 V 93 w FC(9)p Fy(f)p 1896 1052 V 118 w FC(12)p Fy(f)p 2071 1052 V 119 1108 V 145 1091 a Fr(T4F)p 214 1091 14 2 v 15 w(C4F)p 295 1091 V 15 w(N3F)p 376 1091 V 15 w(V4F)p 478 1108 2 57 v 53 w Fv(T)m(rue)p 628 1108 V 57 w(T)m(rue)p 779 1108 V 56 w(T)m(rue)p 929 1108 V 59 w FC(4)p 1015 1108 V 65 w(4)p 1103 1108 V 67 w(4)p 1195 1108 V 143 w Fr(FLOAT)p 1522 1108 V 133 w FC(4)p Fy(f)p 1622 1108 V 54 w FC(8)p Fy(f)p 1721 1108 V 81 w FC(11)p Fy(f)p 1896 1108 V 107 w FC(15)p Fy(f)p 2071 1108 V 120 1110 1952 2 v 120 1187 a FC(T)l(able)21 b(2.5:)27 b(V)l(ariables)21 b(that)d(direct)i(the)g(execution)h(of)e Fz(In)o(terlea)o(v)o(edArra)o(y)o(s)p FC(.)30 b Fy(f)120 1244 y FC(is)23 b Fw(sizeof\(FLOAT\))p FC(.)e Fy(c)h FC(is)h(4)f(times)h Fw(sizeof\(UNSIGNED)p 1151 1244 15 2 v 15 w(BYTE\))p FC(,)e(rounded)i(up)g(to)120 1300 y(the)c(nearest)g (m)o(ultiple)i(of)d Fy(f)5 b FC(.)31 b(All)20 b(p)q(oin)o(ter)g (arithmetic)f(is)h(p)q(erformed)f(in)h(units)f(of)120 1357 y Fw(sizeof\(UNSIGNED)p 483 1357 V 16 w(BYTE\))p FC(.)120 1540 y(of)j Fz(Dra)o(wElemen)o(ts)p FC(,)h(if)g(the)f(corresp) q(onding)h(arra)o(y)e(is)i(enabled.)42 b(Curren)o(t)22 b(v)m(al-)120 1597 y(ues)d(corresp)q(onding)g(to)e(disabled)j(arra)o (ys)c(are)i(not)g(mo)q(di\014ed)h(b)o(y)f(the)g(execution)h(of)120 1653 y Fz(Dra)o(wElemen)o(ts)p FC(.)191 1710 y(The)c(command)234 1806 y Fw(void)66 b Fz(In)o(terlea)o(v)o(edArra)o(ys)p FC(\()e Fw(enum)33 b Fv(format)p Fw(,)39 b(sizei)32 b Fv(stride)p Fw(,)302 1863 y(void)15 b Fv(*p)n(ointer)g FC(\))g Fw(;)120 1959 y FC(e\016cien)o(tly)i(initializes)h(the)d(six)g (arra)o(ys)f(and)h(their)h(enables)g(to)e(one)i(of)e(14)h(con\014gura-) 120 2015 y(tions.)36 b Fv(format)21 b FC(m)o(ust)f(b)q(e)h(one)g(of)f (14)g(sym)o(b)q(olic)i(constan)o(ts:)29 b Fr(V2F)p FC(,)19 b Fr(V3F)p FC(,)h Fr(C4UB)p 1525 2015 14 2 v 15 w(V2F)p FC(,)120 2072 y Fr(C4UB)p 211 2072 V 15 w(V3F)p FC(,)28 b Fr(C3F)p 399 2072 V 16 w(V3F)p FC(,)g Fr(N3F)p 588 2072 V 15 w(V3F)p FC(,)g Fr(C4F)p 776 2072 V 15 w(N3F)p 857 2072 V 15 w(V3F)p FC(,)g Fr(T2F)p 1045 2072 V 15 w(V3F)p FC(,)h Fr(T4F)p 1234 2072 V 15 w(V4F)p FC(,)f Fr(T2F)p 1422 2072 V 15 w(C4UB)p 1525 2072 V 15 w(V3F)p FC(,)120 2128 y Fr(T2F)p 189 2128 V 15 w(C3F)p 270 2128 V 16 w(V3F)p FC(,)14 b Fr(T2F)p 445 2128 V 15 w(N3F)p 526 2128 V 15 w(V3F)p FC(,)g Fr(T2F)p 700 2128 V 15 w(C4F)p 781 2128 V 15 w(N3F)p 862 2128 V 15 w(V3F)p FC(,)g(or)h Fr(T4F)p 1092 2128 V 15 w(C4F)p 1173 2128 V 15 w(N3F)p 1254 2128 V 15 w(V4F)p FC(.)191 2185 y(The)g(e\013ect)g(of)317 2282 y Fz(In)o(terlea)o(v)o(edArra)o(ys)p Fw(\()p Fy(f)5 b(ormat;)j(str)q(ide;)f(pointer)q Fw(\);)191 2378 y FC(is)16 b(the)f(same)g(as)g(the)g(e\013ect)g(of)g(the)g(command)g(sequence)317 2488 y Fw(if)24 b(\()p Fy(f)5 b(or)q(mat)15 b FC(or)g Fy(str)q(ide)g FC(is)h(in)o(v)m(alid)p Fw(\))p eop %%Page: 26 35 26 34 bop 332 137 a FC(26)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)590 286 y FC(generate)f(appropriate)g(error) 529 343 y Fw(else)23 b FB(f)590 399 y Fw(int)g(str;)590 456 y FC(set)15 b Fy(e)682 463 y Fu(t)697 456 y Fy(;)8 b(e)739 463 y Fu(c)755 456 y Fy(;)g(e)797 463 y Fu(n)820 456 y Fy(;)g(s)862 463 y Fu(t)877 456 y Fy(;)g(s)919 463 y Fu(c)935 456 y Fy(;)g(s)977 463 y Fu(v)997 456 y Fy(;)g(t)1034 463 y Fu(c)1051 456 y Fy(;)g(p)1095 463 y Fu(c)1112 456 y Fy(;)g(p)1156 463 y Fu(n)1178 456 y Fy(;)g(p)1222 463 y Fu(v)1242 456 y Fy(;)15 b FC(and)g Fy(s)g FC(as)g(a)g(function)650 512 y(of)g(T)l(able)h(2.5)e(and)i(the)f (v)m(alue)h(of)f Fy(f)5 b(or)q(mat)p FC(.)590 569 y Fw(str)14 b FC(=)i Fy(str)q(ide)p FC(;)590 625 y Fw(if)23 b(\(str)15 b FC(is)h(zero)p Fw(\))650 682 y(str)f FC(=)e Fy(s)p FC(;)590 738 y Fz(DisableClien)o(tState)p Fw(\()p Fr(EDGE)p 1128 738 14 2 v 17 w(FLAG)p 1233 738 V 15 w(ARRAY)p Fw(\))p FC(;)590 795 y Fz(DisableClien)o(tState)p Fw(\()p Fr(INDEX)p 1150 795 V 17 w(ARRAY)p Fw(\))p FC(;)590 851 y Fw(if)23 b(\()p Fy(e)706 858 y Fu(t)721 851 y Fw(\))h FB(f)650 907 y Fz(EnableClien)o(tState)p Fw(\()p Fr(TEXTURE)p 1242 907 V 17 w(COORD)p 1369 907 V 15 w(ARRAY)p Fw(\))p FC(;)650 964 y Fz(T)l(exCo)q(ordP)o(oin)o(ter)p Fw(\()p Fy(s)1090 971 y Fu(t)1104 964 y FC(,)15 b Fr(FLOAT)p FC(,)f Fw(str)p FC(,)g Fy(pointer)q Fw(\))p FC(;)590 1020 y FB(g)23 b Fw(else)h FB(f)650 1077 y Fz(DisableClien)o(tState)p Fw(\()p Fr(TEXTURE)p 1254 1077 V 17 w(COORD)p 1381 1077 V 15 w(ARRAY)p Fw(\))p FC(;)590 1133 y FB(g)590 1190 y Fw(if)f(\()p Fy(e)706 1197 y Fu(c)724 1190 y Fw(\))g FB(f)650 1246 y Fz(EnableClien)o(tState)p Fw(\()p Fr(COLOR)p 1198 1246 V 18 w(ARRAY)p Fw(\))p FC(;)650 1303 y Fz(ColorP)o(oin)o(ter) p Fw(\()p Fy(s)990 1310 y Fu(c)1007 1303 y FC(,)15 b Fy(t)1051 1310 y Fu(c)1069 1303 y FC(,)g Fw(str)p FC(,)f Fy(pointer)d FC(+)g Fy(p)1422 1310 y Fu(c)1439 1303 y Fw(\))p FC(;)590 1359 y FB(g)23 b Fw(else)h FB(f)650 1416 y Fz(DisableClien)o(tState)p Fw(\()p Fr(COLOR)p 1210 1416 V 18 w(ARRAY)p Fw(\))p FC(;)590 1472 y FB(g)590 1528 y Fw(if)f(\()p Fy(e)706 1535 y Fu(n)730 1528 y Fw(\))g FB(f)650 1585 y Fz(EnableClien)o(tState)p Fw(\()p Fr(NORMAL)p 1220 1585 V 18 w(ARRAY)p Fw(\))p FC(;)650 1641 y Fz(NormalP)o(oin)o (ter)p Fw(\()p Fr(FLOAT)p FC(,)13 b Fw(str)p FC(,)i Fy(pointer)c FC(+)f Fy(p)1476 1648 y Fu(n)1500 1641 y Fw(\))p FC(;)590 1698 y FB(g)23 b Fw(else)h FB(f)650 1754 y Fz(DisableClien)o(tState)p Fw(\()p Fr(NORMAL)p 1232 1754 V 17 w(ARRAY)p Fw(\))p FC(;)590 1811 y FB(g)590 1867 y Fz(EnableClien)o(tState)p Fw(\()p Fr(VERTEX)p 1160 1867 V 17 w(ARRAY)p Fw(\))p FC(;)590 1924 y Fz(V)l(ertexP)o(oin)o(ter)p Fw(\()p Fy(s)958 1931 y Fu(v)976 1924 y FC(,)15 b Fr(FLOAT)p FC(,)f Fw(str)p FC(,)g Fy(pointer)d FC(+)g Fy(p)1466 1931 y Fu(v)1486 1924 y Fw(\))p FC(;)529 1980 y FB(g)403 2206 y FC(The)24 b(clien)o(t)i(state)d(required)j(to)d(implemen)o(t)j(v)o(ertex)e(arra)o (ys)f(consists)h(of)g(six)332 2262 y(b)q(o)q(olean)16 b(v)m(alues,)f(six)g(memory)f(p)q(oin)o(ters,)h(six)g(in)o(teger)f (stride)h(v)m(alues,)h(\014v)o(e)e(sym)o(b)q(olic)332 2319 y(constan)o(ts)19 b(represen)o(ting)h(arra)o(y)e(t)o(yp)q(es,)i (and)f(three)h(in)o(tegers)f(represen)o(ting)h(v)m(alues)332 2375 y(p)q(er)e(elemen)o(t.)29 b(In)18 b(the)g(initial)i(state)d(the)h (b)q(o)q(olean)h(v)m(alues)g(are)f(eac)o(h)f(disabled,)j(the)332 2432 y(memory)13 b(p)q(oin)o(ters)h(are)e(eac)o(h)i(n)o(ull,)h(the)e (strides)h(are)f(eac)o(h)g(zero,)g(the)g(arra)o(y)f(t)o(yp)q(es)i(are) 332 2488 y(eac)o(h)h Fr(FLOAT)p FC(,)f(and)h(the)h(in)o(tegers)f (represen)o(ting)h(v)m(alues)g(p)q(er)g(elemen)o(t)g(are)f(eac)o(h)g (four.)p eop %%Page: 27 36 27 35 bop 120 137 a Fx(2.9.)34 b(RECT)l(ANGLES)1029 b FC(27)120 286 y Fs(2.9)67 b(Rectangles)120 388 y FC(There)12 b(is)g(a)f(set)g(of)f(GL)i(commands)f(to)f(supp)q(ort)i(e\016cien)o(t)g (sp)q(eci\014cation)h(of)d(rectangles)120 444 y(as)15 b(t)o(w)o(o)f(corner)h(v)o(ertices.)234 528 y Fw(void)30 b Fz(Rect)p FB(f)p Fz(sifd)p FB(g)p FC(\()g Fw(T)15 b Fv(x1)p Fw(,)g(T)g Fv(y1)p Fw(,)h(T)f Fv(x2)p Fw(,)g(T)g Fv(y2)h FC(\))e Fw(;)234 585 y(void)30 b Fz(Rect)p FB(f)p Fz(sifd)p FB(g)p Fz(v)p FC(\()g Fw(T)15 b Fv(v1[2])p Fw(,)g(T)g Fv(v2[2])g FC(\))g Fw(;)120 668 y FC(Eac)o(h)20 b(command)g(tak)o(es)f(either)h(four)g(argumen)o(ts)f(organized)h(as)f (t)o(w)o(o)g(consecutiv)o(e)120 725 y(pairs)d(of)f(\()p Fy(x;)8 b(y)r FC(\))13 b(co)q(ordinates,)j(or)e(t)o(w)o(o)g(p)q(oin)o (ters)i(to)f(arra)o(ys)e(eac)o(h)j(of)f(whic)o(h)h(con)o(tains)120 781 y(an)g Fy(x)f FC(v)m(alue)h(follo)o(w)o(ed)g(b)o(y)f(a)g Fy(y)i FC(v)m(alue.)k(The)15 b(e\013ect)g(of)g(the)g Fz(Rect)h FC(command)317 865 y Fz(Rect)g Fw(\()p Fy(x)489 872 y Fq(1)509 865 y Fy(;)8 b(y)552 872 y Fq(1)571 865 y Fy(;)g(x)618 872 y Fq(2)637 865 y Fy(;)g(y)680 872 y Fq(2)699 865 y Fw(\);)120 949 y FC(is)16 b(exactly)g(the)f(same)g(as) g(the)g(follo)o(wing)h(sequence)g(of)f(commands:)317 1033 y Fz(Begin)p Fw(\(POLYGON\);)378 1089 y Fz(V)l(ertex2)p Fw(\()p Fy(x)608 1096 y Fq(1)626 1089 y Fy(;)8 b(y)669 1096 y Fq(1)688 1089 y Fw(\);)378 1145 y Fz(V)l(ertex2)p Fw(\()p Fy(x)608 1152 y Fq(2)626 1145 y Fy(;)g(y)669 1152 y Fq(1)688 1145 y Fw(\);)378 1202 y Fz(V)l(ertex2)p Fw(\()p Fy(x)608 1209 y Fq(2)626 1202 y Fy(;)g(y)669 1209 y Fq(2)688 1202 y Fw(\);)378 1258 y Fz(V)l(ertex2)p Fw(\()p Fy(x)608 1265 y Fq(1)626 1258 y Fy(;)g(y)669 1265 y Fq(2)688 1258 y Fw(\);)317 1315 y Fz(End)p Fw(\(\);)120 1399 y FC(The)16 b(appropriate)f Fz(V)l(ertex2)e FC(command)i(w)o(ould) h(b)q(e)f(in)o(v)o(ok)o(ed)h(dep)q(ending)h(on)e(whic)o(h)120 1455 y(of)g(the)g Fz(Rect)h FC(commands)f(is)h(issued.)120 1596 y Fs(2.10)66 b(Co)r(ordinate)23 b(T)-6 b(ransformations)120 1698 y FC(V)l(ertices,)17 b(normals,)e(and)h(texture)f(co)q(ordinates)h (are)f(transformed)g(b)q(efore)h(their)g(co-)120 1754 y(ordinates)h(are)f(used)g(to)g(pro)q(duce)h(an)f(image)g(in)h(the)f (framebu\013er.)23 b(W)l(e)16 b(b)q(egin)h(with)120 1811 y(a)c(description)i(of)e(ho)o(w)g(v)o(ertex)g(co)q(ordinates)h(are)f (transformed)f(and)i(ho)o(w)e(this)i(trans-)120 1867 y(formation)h(is)h(con)o(trolled.)191 1924 y(Figure)f(2.6)e(diagrams)h (the)h(sequence)g(of)f(transformations)f(that)h(are)g(applied)i(to)120 1980 y(v)o(ertices.)28 b(The)18 b(v)o(ertex)g(co)q(ordinates)g(that)f (are)g(presen)o(ted)i(to)e(the)h(GL)f(are)h(termed)120 2037 y Fv(obje)n(ct)c(c)n(o)n(or)n(dinates)p FC(.)19 b(The)13 b Fv(mo)n(del-view)g FC(matrix)g(is)h(applied)h(to)d(these)i (co)q(ordinates)f(to)120 2093 y(yield)j Fv(eye)f FC(co)q(ordinates.)20 b(Then)14 b(another)g(matrix,)g(called)i(the)f Fv(pr)n(oje)n(ction)e FC(matrix,)h(is)120 2149 y(applied)k(to)e(ey)o(e)g(co)q(ordinates)g(to) g(yield)h Fv(clip)f FC(co)q(ordinates.)23 b(A)16 b(p)q(ersp)q(ectiv)o (e)i(division)120 2206 y(is)e(carried)g(out)f(on)h(clip)h(co)q (ordinates)e(to)g(yield)i Fv(normalize)n(d)f(devic)n(e)f FC(co)q(ordinates.)21 b(A)120 2262 y(\014nal)h Fv(viewp)n(ort)f FC(transformation)e(is)i(applied)h(to)e(con)o(v)o(ert)g(these)h(co)q (ordinates)g(in)o(to)120 2319 y Fv(window)c(c)n(o)n(or)n(dinates)p FC(.)191 2375 y(Ob)s(ject)27 b(co)q(ordinates,)j(ey)o(e)d(co)q (ordinates,)j(and)d(clip)i(co)q(ordinates)e(are)g(four-)120 2432 y(dimensional,)20 b(consisting)e(of)f Fy(x)p FC(,)h Fy(y)r FC(,)f Fy(z)r FC(,)h(and)f Fy(w)h FC(co)q(ordinates)g(\(in)g (that)f(order\).)25 b(The)120 2488 y(mo)q(del-view)17 b(and)f(p)q(ersp)q(ectiv)o(e)g(matrices)g(are)e(th)o(us)h(4)10 b FB(\002)h FC(4.)p eop %%Page: 28 37 28 36 bop 332 137 a FC(28)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 350 242 1459 2 v 350 1032 2 790 v 404 317 a 21313290 8951580 1973452 16971694 50783518 37495603 startTexFig 404 317 a %%BeginDocument: pics/matrix.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 126 473 M 238 473 L 238 569 L 126 569 L closepath stroke grestore gsave matrix currentmatrix [112 0 0 96 543 258] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 127 521 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 30 521 M 108 521 L stroke grestore gsave matrix currentmatrix [0 0 0 0 126 473] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 335 521 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 238 521 M 316 521 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 752 306 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 655 306 M 733 306 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 554 481 M 548.75 481.75 L 545 484 L 542.75 487.75 L 542 493 L 542 493 L 542 493.783 L 542 495.652 L 542 498.454 L 542 502.031 L 542 506.23 L 542 510.895 L 542 515.87 L 542 521 L 542 526.13 L 542 531.105 L 542 535.77 L 542 539.969 L 542 543.546 L 542 546.348 L 542 548.217 L 542 549 L 542 549 L 542.75 554.25 L 545 558 L 548.75 560.25 L 554 561 L 554 561 L 555.164 561 L 558.109 561 L 562.578 561 L 568.312 561 L 575.055 561 L 582.547 561 L 590.531 561 L 598.75 561 L 606.945 561 L 614.859 561 L 622.234 561 L 628.812 561 L 634.336 561 L 638.547 561 L 641.188 561 L 642 561 L 642 561 L 647.25 560.25 L 651 558 L 653.25 554.25 L 654 549 L 654 549 L 654 548.217 L 654 546.348 L 654 543.546 L 654 539.969 L 654 535.77 L 654 531.105 L 654 526.13 L 654 521 L 654 515.87 L 654 510.895 L 654 506.23 L 654 502.031 L 654 498.454 L 654 495.652 L 654 493.783 L 654 493 L 654 493 L 653.25 487.75 L 651 484 L 647.25 481.75 L 642 481 L 642 481 L 640.858 481 L 637.973 481 L 633.593 481 L 627.969 481 L 621.348 481 L 613.98 481 L 606.115 481 L 598 481 L 589.885 481 L 582.02 481 L 574.652 481 L 568.031 481 L 562.407 481 L 558.027 481 L 555.142 481 L 554 481 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 46 526] concat newpath 0 0 M 0 14 L 45.568 14 L 45.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 44 524 M 44 542.471 L 93.568 542.471 L 93.568 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 46 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Object) 43.568 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 30 498] concat newpath 0 0 M 0 14 L 83.676 14 L 83.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 28 496 M 28 514.471 L 115.676 514.471 L 115.676 496 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 30 498] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Coordinates) 81.676 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 242 498] concat newpath 0 0 M 0 14 L 83.676 14 L 83.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 240 496 M 240 514.471 L 327.676 514.471 L 327.676 496 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 242 498] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Coordinates) 81.676 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 270 526] concat newpath 0 0 M 0 14 L 26.906 14 L 26.906 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 268 524 M 268 542.471 L 298.906 542.471 L 298.906 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 270 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Eye) 24.906 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 659 283] concat newpath 0 0 M 0 14 L 83.676 14 L 83.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 657 281 M 657 299.471 L 744.676 299.471 L 744.676 281 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 659 283] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Coordinates) 81.676 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 673 311] concat newpath 0 0 M 0 14 L 55.662 14 L 55.662 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 671 309 M 671 327.471 L 730.662 327.471 L 730.662 309 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 673 311] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Window) 53.662 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 658 498] concat newpath 0 0 M 0 14 L 83.676 14 L 83.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 656 496 M 656 514.471 L 743.676 514.471 L 743.676 496 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 658 498] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Coordinates) 81.676 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 662 523] concat newpath 0 0 M 0 33 L 77.46 33 L 77.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 660 521 M 660 558.471 L 741.46 558.471 L 741.46 521 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 662 523] concat 1 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 21.4706 M (Normalized) 75.46 S 16.162 2.47059 M 16.162 2.47059 M (Device) 45.136 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 142 530] concat newpath 0 0 M 0 14 L 82.528 14 L 82.528 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 140 528 M 140 546.471 L 226.528 546.471 L 226.528 528 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 142 530] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Model-View) 80.528 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 158 494] concat newpath 0 0 M 0 14 L 43.23 14 L 43.23 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 156 492 M 156 510.471 L 203.23 510.471 L 203.23 492 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 158 494] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Matrix) 41.23 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 558 503] concat newpath 0 0 M 0 33 L 80.596 33 L 80.596 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 556 501 M 556 538.471 L 640.596 538.471 L 640.596 501 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 558 503] concat 1 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 21.4706 M (Perspective) 78.596 S 13.068 2.47059 M 13.068 2.47059 M (Division) 54.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 546 290] concat newpath 0 0 M 0 33 L 104.676 33 L 104.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 544 288 M 544 325.471 L 652.676 325.471 L 652.676 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 546 290] concat 22.777 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 22.777 21.4706 M (Viewport) 59.122 S 0 2.47059 M (Transformation) 102.676 S setmatrix grestore gsave matrix currentmatrix [112 0 0 96 334 473.1] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 543 521.1 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 446 521.1 M 524 521.1 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 450 498] concat newpath 0 0 M 0 14 L 83.676 14 L 83.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 448 496 M 448 514.471 L 535.676 514.471 L 535.676 496 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 450 498] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Coordinates) 81.676 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 475 528] concat newpath 0 0 M 0 14 L 28.446 14 L 28.446 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 473 526 M 473 544.471 L 505.446 544.471 L 505.446 526 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 475 528] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Clip) 26.446 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 350 493] concat newpath 0 0 M 0 52 L 70.46 52 L 70.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 348 491 M 348 547.471 L 422.46 547.471 L 422.46 491 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 350 493] concat 1 40.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 40.4706 M (Projection) 68.46 S 35.23 21.4706 M 14.615 2.47059 M 14.615 2.47059 M (Matrix) 41.23 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 543 304.1 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 654 521.1 M 772 521.1 L 772 424.1 L 479 424.1 L 479 304.1 L 524 304.1 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1002 a Fm(Figure)e(2.6.)j(V)m(ertex)e(transformation)d(sequence.)p 1807 1032 2 790 v 350 1034 1459 2 v 403 1273 a FC(If)j(a)f(v)o(ertex)h (in)h(ob)s(ject)e(co)q(ordinates)h(is)h(giv)o(en)f(b)o(y)1281 1164 y Fi(0)1281 1237 y(B)1281 1262 y(B)1281 1289 y(@)1328 1189 y Fy(x)1354 1196 y Fu(o)1330 1245 y Fy(y)1352 1252 y Fu(o)1331 1302 y Fy(z)1352 1309 y Fu(o)1325 1358 y Fy(w)1358 1365 y Fu(o)1384 1164 y Fi(1)1384 1237 y(C)1384 1262 y(C)1384 1289 y(A)1436 1273 y FC(and)g(the)g(mo)q(del-view)332 1405 y(matrix)g(is)h Fy(M)5 b FC(,)14 b(then)i(the)f(v)o(ertex's)g(ey)o (e)g(co)q(ordinates)g(are)g(found)h(as)871 1456 y Fi(0)871 1529 y(B)871 1554 y(B)871 1581 y(@)919 1481 y Fy(x)945 1488 y Fu(e)920 1537 y Fy(y)942 1544 y Fu(e)921 1594 y Fy(z)942 1601 y Fu(e)915 1650 y Fy(w)948 1657 y Fu(e)974 1456 y Fi(1)974 1529 y(C)974 1554 y(C)974 1581 y(A)1023 1565 y FC(=)d Fy(M)1127 1456 y Fi(0)1127 1529 y(B)1127 1554 y(B)1127 1581 y(@)1175 1481 y Fy(x)1201 1488 y Fu(o)1176 1537 y Fy(y)1198 1544 y Fu(o)1177 1594 y Fy(z)1198 1601 y Fu(o)1171 1650 y Fy(w)1204 1657 y Fu(o)1231 1456 y Fi(1)1231 1529 y(C)1231 1554 y(C)1231 1581 y(A)1275 1565 y Fy(:)332 1726 y FC(Similarly)l(,)21 b(if)e Fy(P)25 b FC(is)19 b(the)f(pro)s(jection)h(matrix,)f(then)h(the)f(v)o(ertex's)g (clip)i(co)q(ordinates)332 1782 y(are)879 1796 y Fi(0)879 1869 y(B)879 1894 y(B)879 1920 y(@)926 1820 y Fy(x)952 1827 y Fu(c)928 1877 y Fy(y)950 1884 y Fu(c)929 1933 y Fy(z)950 1940 y Fu(c)923 1990 y Fy(w)956 1997 y Fu(c)980 1796 y Fi(1)980 1869 y(C)980 1894 y(C)980 1920 y(A)1029 1905 y FC(=)13 b Fy(P)1120 1796 y Fi(0)1120 1869 y(B)1120 1894 y(B)1120 1920 y(@)1168 1820 y Fy(x)1194 1827 y Fu(e)1170 1877 y Fy(y)1192 1884 y Fu(e)1170 1933 y Fy(z)1191 1940 y Fu(e)1164 1990 y Fy(w)1197 1997 y Fu(e)1223 1796 y Fi(1)1223 1869 y(C)1223 1894 y(C)1223 1920 y(A)1267 1905 y Fy(:)332 2055 y FC(The)j(v)o(ertex's)e(normalized)i(device)h(co)q (ordinates)e(are)g(then)870 2094 y Fi(0)870 2169 y(@)914 2122 y Fy(x)940 2129 y Fu(d)916 2178 y Fy(y)938 2185 y Fu(d)916 2235 y Fy(z)937 2242 y Fu(d)968 2094 y Fi(1)968 2169 y(A)1017 2178 y FC(=)1065 2094 y Fi(0)1065 2169 y(@)1109 2122 y Fy(x)1135 2129 y Fu(c)1152 2122 y Fy(=w)1208 2129 y Fu(c)1110 2178 y Fy(y)1132 2185 y Fu(c)1150 2178 y Fy(=w)1206 2185 y Fu(c)1111 2235 y Fy(z)1132 2242 y Fu(c)1149 2235 y Fy(=w)1205 2242 y Fu(c)1232 2094 y Fi(1)1232 2169 y(A)1276 2178 y Fy(:)332 2346 y Fl(2.10.1)55 b(Con)n(trolling)19 b(the)f(Viewp)r(ort)332 2432 y FC(The)k(viewp)q(ort)f(transformation)f (is)i(determined)h(b)o(y)e(the)g(viewp)q(ort's)g(width)h(and)332 2488 y(heigh)o(t)h(in)h(pixels,)i Fy(p)711 2495 y Fu(x)755 2488 y FC(and)d Fy(p)874 2495 y Fu(y)895 2488 y FC(,)h(resp)q(ectiv)o (ely)l(,)i(and)d(its)g(cen)o(ter)f(\()p Fy(o)1547 2495 y Fu(x)1569 2488 y Fy(;)8 b(o)1612 2495 y Fu(y)1632 2488 y FC(\))22 b(\(also)h(in)p eop %%Page: 29 38 29 37 bop 120 137 a Fx(2.10.)34 b(COORDINA)l(TE)17 b(TRANSF)o(ORMA)l (TIONS)517 b FC(29)120 331 y(pixels\).)22 b(The)15 b(v)o(ertex's)f (windo)o(w)i(co)q(ordinates,)965 247 y Fi(0)965 322 y(@)1009 275 y Fy(x)1035 282 y Fu(w)1011 331 y Fy(y)1033 338 y Fu(w)1011 388 y Fy(z)1032 395 y Fu(w)1071 247 y Fi(1)1071 322 y(A)1107 331 y FC(,)f(are)g(giv)o(en)g(b)o(y)460 458 y Fi(0)460 533 y(@)504 486 y Fy(x)530 493 y Fu(w)506 542 y Fy(y)528 549 y Fu(w)507 599 y Fy(z)528 606 y Fu(w)566 458 y Fi(1)566 533 y(A)615 542 y FC(=)663 458 y Fi(0)663 533 y(@)823 486 y FC(\()p Fy(p)864 493 y Fu(x)886 486 y Fy(=)p FC(2\))p Fy(x)976 493 y Fu(d)1005 486 y FC(+)c Fy(o)1073 493 y Fu(x)826 542 y FC(\()p Fy(p)867 549 y Fu(y)887 542 y Fy(=)p FC(2\))p Fy(y)973 549 y Fu(d)1003 542 y FC(+)g Fy(o)1071 549 y Fu(y)707 599 y FC([\()p Fy(f)j FB(\000)d Fy(n)p FC(\))p Fy(=)p FC(2])p Fy(z)945 606 y Fu(d)974 599 y FC(+)g(\()p Fy(n)f FC(+)g Fy(f)5 b FC(\))p Fy(=)p FC(2)1218 458 y Fi(1)1218 533 y(A)1262 542 y Fy(:)120 694 y FC(The)16 b(factor)e(and)h(o\013set)g(applied)i (to)d Fy(z)788 701 y Fu(d)824 694 y FC(enco)q(ded)i(b)o(y)f Fy(n)h FC(and)f Fy(f)21 b FC(are)14 b(set)h(using)234 792 y Fw(void)30 b Fz(DepthRange)p FC(\()h Fw(clampd)14 b Fv(n)p Fw(,)h(clampd)f Fv(f)h FC(\))g Fw(;)120 890 y FC(Eac)o(h)f(of)g Fv(n)g FC(and)g Fv(f)g FC(are)g(clamp)q(ed)i(to)d (lie)j(within)f([0)p Fy(;)8 b FC(1],)k(as)i(are)g(all)h(argumen)o(ts)e (of)h(t)o(yp)q(e)120 946 y Fw(clampd)f FC(or)g Fw(clampf)p FC(.)19 b Fy(z)528 953 y Fu(w)569 946 y FC(is)14 b(tak)o(en)g(to)e(b)q (e)j(represen)o(ted)f(in)g(\014xed-p)q(oin)o(t)h(with)f(at)f(least)120 1003 y(as)g(man)o(y)h(bits)f(as)h(there)f(are)g(in)i(the)e(depth)h (bu\013er)g(of)f(the)g(framebu\013er.)19 b(W)l(e)14 b(assume)120 1059 y(that)j(the)h(\014xed-p)q(oin)o(t)h(represen)o(tation)f(used)h (represen)o(ts)e(eac)o(h)h(v)m(alue)h Fy(k)q(=)p FC(\(2)1470 1043 y Fu(m)1515 1059 y FB(\000)12 b FC(1\),)120 1115 y(where)20 b Fy(k)g FB(2)g(f)p FC(0)p Fy(;)8 b FC(1)p Fy(;)g(:)f(:)h(:)t(;)g FC(2)563 1099 y Fu(m)608 1115 y FB(\000)13 b FC(1)p FB(g)p FC(,)19 b(as)g Fy(k)h FC(\(e.g.)31 b(1.0)18 b(is)i(represen)o(ted)g(in)g(binary)f(as)g(a)120 1172 y(string)d(of)e(all)i(ones\).)191 1229 y(Viewp)q(ort)g (transformation)d(parameters)i(are)g(sp)q(eci\014ed)i(using)234 1327 y Fw(void)30 b Fz(Viewp)q(ort)p FC(\()g Fw(int)15 b Fv(x)p Fw(,)g(int)g Fv(y)p Fw(,)g(sizei)f Fv(w)p Fw(,)h(sizei)g Fv(h)g FC(\))g Fw(;)120 1425 y FC(where)g Fv(x)f FC(and)g Fv(y)g FC(giv)o(e)h(the)f Fy(x)g FC(and)g Fy(y)i FC(windo)o(w)f(co)q (ordinates)f(of)g(the)g(viewp)q(ort's)g(lo)o(w)o(er-)120 1481 y(left)j(corner)f(and)h Fv(w)g FC(and)f Fv(h)h FC(giv)o(e)f(the)h (viewp)q(ort's)f(width)h(and)g(heigh)o(t,)f(resp)q(ectiv)o(ely)l(.)120 1538 y(The)c(viewp)q(ort)h(parameters)d(sho)o(wn)i(in)h(the)e(ab)q(o)o (v)o(e)h(equations)g(are)f(found)h(from)g(these)120 1594 y(v)m(alues)17 b(as)e Fy(o)334 1601 y Fu(x)368 1594 y FC(=)e Fy(x)d FC(+)h Fy(w)q(=)p FC(2)j(and)h Fy(o)702 1601 y Fu(y)736 1594 y FC(=)e Fy(y)f FC(+)e Fy(h=)p FC(2;)15 b Fy(p)986 1601 y Fu(x)1020 1594 y FC(=)e Fy(w)q FC(,)i Fy(p)1153 1601 y Fu(y)1186 1594 y FC(=)e Fy(h)p FC(.)191 1651 y(Viewp)q(ort)20 b(width)f(and)h(heigh)o(t)g(are)f(clamp)q(ed)h (to)f(implemen)o(tation-dep)q(enden)o(t)120 1708 y(maxim)o(ums)d(when)h (sp)q(eci\014ed.)25 b(The)16 b(maxim)o(um)g(width)h(and)g(heigh)o(t)f (ma)o(y)g(b)q(e)g(found)120 1764 y(b)o(y)i(issuing)i(an)e(appropriate)g Fz(Get)g FC(command)g(\(see)g(Chapter)g(6\).)28 b(The)18 b(maxim)o(um)120 1821 y(viewp)q(ort)13 b(dimensions)h(m)o(ust)e(b)q(e)h (greater)f(than)g(or)g(equal)h(to)f(the)g(visible)j(dimensions)120 1877 y(of)f(the)g(displa)o(y)i(b)q(eing)f(rendered)g(to.)k Fr(INVALID)p 939 1877 14 2 v 14 w(VALUE)13 b FC(is)i(generated)f(if)h (either)g Fv(w)f FC(or)g Fv(h)120 1934 y FC(is)i(negativ)o(e.)191 1991 y(The)g(state)g(required)h(to)f(implemen)o(t)h(the)g(viewp)q(ort)f (transformation)f(is)i(6)f(in)o(te-)120 2048 y(gers.)i(In)11 b(the)f(initial)j(state,)d Fv(w)g FC(and)h Fv(h)f FC(are)g(set)g(to)f (the)i(width)g(and)f(heigh)o(t,)h(resp)q(ectiv)o(ely)l(,)120 2104 y(of)j(the)g(windo)o(w)g(in)o(to)g(whic)o(h)h(the)f(GL)f(is)i(to)e (do)h(its)g(rendering.)21 b Fy(o)1251 2111 y Fu(x)1286 2104 y FC(and)15 b Fy(o)1396 2111 y Fu(y)1430 2104 y FC(are)f(set)f(to)120 2160 y Fy(w)q(=)p FC(2)i(and)g Fy(h=)p FC(2,)g(resp)q(ectiv)o(ely)l(.)21 b Fy(n)16 b FC(and)f Fy(f)20 b FC(are)15 b(set)g(to)g(0)p Fy(:)p FC(0)f(and)h(1)p Fy(:)p FC(0,)f(resp)q(ectiv)o(ely)l(.)120 2288 y Fl(2.10.2)56 b(Matrices)120 2375 y FC(The)21 b(pro)s(jection)f (matrix)g(and)h(mo)q(del-view)h(matrix)e(are)g(set)g(and)h(mo)q (di\014ed)g(with)120 2432 y(a)d(v)m(ariet)o(y)g(of)f(commands.)28 b(The)18 b(a\013ected)g(matrix)f(is)i(determined)g(b)o(y)f(the)g (curren)o(t)120 2488 y(matrix)d(mo)q(de.)20 b(The)c(curren)o(t)f (matrix)g(mo)q(de)g(is)h(set)f(with)p eop %%Page: 30 39 30 38 bop 332 137 a FC(30)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)446 286 y Fw(void)29 b Fz(MatrixMo)q(de)p FC(\()i Fw(enum)14 b Fv(mo)n(de)i FC(\))e Fw(;)332 373 y FC(whic)o(h)20 b(tak)o(es)e(one)h(of)g(the)g(three)g(pre-de\014ned)h (constan)o(ts)e Fr(TEXTURE)p FC(,)f Fr(MODELVIEW)p FC(,)g(or)332 430 y Fr(PROJECTION)11 b FC(as)j(the)f(argumen)o(t)g(v)m(alue.)20 b Fr(TEXTURE)12 b FC(is)i(describ)q(ed)i(later.)j(If)14 b(the)g(curren)o(t)332 486 y(matrix)h(mo)q(de)g(is)h Fr(MODELVIEW)p FC(,)c(then)k(matrix)e(op)q(erations)h(apply)h(to)f(the) g(mo)q(del-view)332 542 y(matrix;)g(if)g Fr(PROJECTION)p FC(,)e(then)i(they)h(apply)g(to)e(the)i(pro)s(jection)f(matrix.)403 599 y(The)g(t)o(w)o(o)f(basic)i(commands)f(for)f(a\013ecting)h(the)h (curren)o(t)f(matrix)g(are)446 686 y Fw(void)29 b Fz(LoadMatrix)p FB(f)p Fz(fd)p FB(g)p FC(\()i Fw(T)15 b Fv(m[16])h FC(\))e Fw(;)446 742 y(void)29 b Fz(MultMatrix)p FB(f)p Fz(fd)p FB(g)p FC(\()h Fw(T)15 b Fv(m[16])h FC(\))f Fw(;)332 829 y Fz(LoadMatrix)e FC(tak)o(es)f(a)f(p)q(oin)o(ter)i(to)f(a)f(4)t FB(\002)t FC(4)h(matrix)g(stored)g(in)h(column-ma)s(jor)f(order)332 885 y(as)j(16)g(consecutiv)o(e)h(\015oating-p)q(oin)o(t)f(v)m(alues,)h (i.e.)21 b(as)852 945 y Fi(0)852 1018 y(B)852 1043 y(B)852 1069 y(@)896 969 y Fy(a)920 976 y Fq(1)985 969 y Fy(a)1009 976 y Fq(5)1083 969 y Fy(a)1107 976 y Fq(9)1181 969 y Fy(a)1205 976 y Fq(13)896 1026 y Fy(a)920 1033 y Fq(2)985 1026 y Fy(a)1009 1033 y Fq(6)1074 1026 y Fy(a)1098 1033 y Fq(10)1181 1026 y Fy(a)1205 1033 y Fq(14)896 1082 y Fy(a)920 1089 y Fq(3)985 1082 y Fy(a)1009 1089 y Fq(7)1074 1082 y Fy(a)1098 1089 y Fq(11)1181 1082 y Fy(a)1205 1089 y Fq(15)896 1139 y Fy(a)920 1146 y Fq(4)985 1139 y Fy(a)1009 1146 y Fq(8)1074 1139 y Fy(a)1098 1146 y Fq(12)1181 1139 y Fy(a)1205 1146 y Fq(16)1250 945 y Fi(1)1250 1018 y(C)1250 1043 y(C)1250 1069 y(A)1294 1054 y Fy(:)332 1225 y FC(\(This)13 b(di\013ers)g(from)e(the)i(standard)f(ro)o(w-ma)s(jor)e Fw(C)j FC(ordering)g(for)e(matrix)i(elemen)o(ts.)19 b(If)332 1282 y(the)11 b(standard)g(ordering)h(is)f(used,)h(all)h(of)d(the)h (subsequen)o(t)h(transformation)e(equations)332 1338 y(are)15 b(transp)q(osed,)g(and)g(the)g(columns)h(represen)o(ting)g(v)o (ectors)f(b)q(ecome)h(ro)o(ws.\))403 1395 y(The)c(sp)q(eci\014ed)h (matrix)f(replaces)g(the)g(curren)o(t)f(matrix)g(with)h(the)g(one)g(p)q (oin)o(ted)g(to.)332 1451 y Fz(MultMatrix)f FC(tak)o(es)f(the)h(same)g (t)o(yp)q(e)f(argumen)o(t)g(as)h Fz(LoadMatrix)p FC(,)h(but)f(m)o (ultiplies)332 1508 y(the)18 b(curren)o(t)g(matrix)g(b)o(y)g(the)h(one) f(p)q(oin)o(ted)h(to)f(and)g(replaces)h(the)g(curren)o(t)f(matrix)332 1564 y(with)f(the)g(pro)q(duct.)25 b(If)17 b Fy(C)i FC(is)f(the)e (curren)o(t)h(matrix)f(and)h Fy(M)22 b FC(is)17 b(the)g(matrix)f(p)q (oin)o(ted)332 1621 y(to)f(b)o(y)g Fz(MultMatrix)p FC('s)g(argumen)o (t,)f(then)i(the)f(resulting)h(curren)o(t)f(matrix,)g Fy(C)1709 1604 y FG(0)1720 1621 y FC(,)g(is)961 1714 y Fy(C)997 1695 y FG(0)1021 1714 y FC(=)e Fy(C)g FB(\001)d Fy(M)r(:)403 1808 y FC(The)15 b(command)446 1894 y Fw(void)29 b Fz(LoadIden)o(tit)o(y)p FC(\()i Fw(void)39 b FC(\))15 b Fw(;)332 1981 y FC(e\013ectiv)o(ely)h(calls)g Fz(LoadMatrix)h FC(with)e(the)g(iden)o(tit)o(y)h(matrix:)912 2041 y Fi(0)912 2114 y(B)912 2139 y(B)912 2165 y(@)956 2065 y FC(1)45 b(0)g(0)g(0)956 2122 y(0)g(1)g(0)g(0)956 2178 y(0)g(0)g(1)g(0)956 2235 y(0)g(0)g(0)g(1)1190 2041 y Fi(1)1190 2114 y(C)1190 2139 y(C)1190 2165 y(A)1234 2150 y Fy(:)403 2319 y FC(There)16 b(are)g(a)g(v)m(ariet)o(y)h(of)f(other)g(commands)g(that)g(manipulate)h (matrices.)24 b Fz(Ro-)332 2375 y(tate)p FC(,)14 b Fz(T)l(ranslate)p FC(,)g Fz(Scale)p FC(,)g Fz(F)l(rustum)p FC(,)e(and)h Fz(Ortho)g FC(manipulate)i(the)e(curren)o(t)g(ma-)332 2432 y(trix.)38 b(Eac)o(h)22 b(computes)f(a)g(matrix)g(and)h(then)f(in) o(v)o(ok)o(es)h Fz(MultMatrix)f FC(with)h(this)332 2488 y(matrix.)e(In)15 b(the)h(case)f(of)p eop %%Page: 31 40 31 39 bop 120 137 a Fx(2.10.)34 b(COORDINA)l(TE)17 b(TRANSF)o(ORMA)l (TIONS)517 b FC(31)234 286 y Fw(void)30 b Fz(Rotate)p FB(f)p Fz(fd)p FB(g)p FC(\()h Fw(T)15 b Fy(\022)q Fw(,)g(T)g Fv(x)p Fw(,)g(T)g Fv(y)p Fw(,)g(T)g Fv(z)g FC(\))g Fw(;)120 377 y Fy(\022)e FC(giv)o(es)f(an)f(angle)h(of)f(rotation)f(in)i (degrees;)h(the)e(co)q(ordinates)h(of)f(a)g(v)o(ector)g Fz(v)g FC(are)g(giv)o(en)120 434 y(b)o(y)g Fz(v)i FC(=)g(\()p Fy(x)e(y)i(z)r FC(\))399 417 y Fu(T)426 434 y FC(.)19 b(The)11 b(computed)h(matrix)f(is)g(a)g(coun)o(ter-clo)q(c)o(kwise)i (rotation)d(ab)q(out)120 490 y(the)k(line)h(through)d(the)i(origin)g (with)f(the)g(sp)q(eci\014ed)j(axis)d(when)h(that)e(axis)i(is)g(p)q (oin)o(ting)120 547 y(up)g(\(i.e.)19 b(the)13 b(righ)o(t-hand)h(rule)g (determines)g(the)f(sense)h(of)f(the)g(rotation)f(angle\).)19 b(The)120 603 y(matrix)c(is)h(th)o(us)694 617 y Fi(0)694 690 y(B)694 715 y(B)694 741 y(@)954 641 y FC(0)806 698 y Fy(R)113 b FC(0)954 754 y(0)738 811 y(0)51 b(0)g(0)45 b(1)985 617 y Fi(1)985 690 y(C)985 715 y(C)985 741 y(A)1029 726 y Fy(:)120 895 y FC(Let)16 b Fz(u)c FC(=)h Fz(v)q Fy(=)p FB(jj)p Fz(v)q FB(jj)d FC(=)j(\()7 b Fy(x)533 878 y FG(0)590 895 y Fy(y)614 878 y FG(0)671 895 y Fy(z)694 878 y FG(0)714 895 y FC(\))731 874 y Fu(T)759 895 y FC(.)20 b(If)626 1043 y Fy(S)15 b FC(=)717 959 y Fi(0)717 1033 y(@)785 986 y FC(0)69 b FB(\000)p Fy(z)935 970 y FG(0)1011 986 y Fy(y)1035 970 y FG(0)779 1043 y Fy(z)802 1026 y FG(0)901 1043 y FC(0)g FB(\000)p Fy(x)1054 1026 y FG(0)761 1099 y FB(\000)p Fy(y)820 1083 y FG(0)893 1099 y Fy(x)919 1083 y FG(0)1018 1099 y FC(0)1073 959 y Fi(1)1073 1033 y(A)120 1188 y FC(then)513 1245 y Fy(R)12 b FC(=)h Fz(uu)666 1226 y Fu(T)704 1245 y FC(+)d(cos)e Fy(\022)q FC(\()p Fy(I)14 b FB(\000)c Fz(uu)995 1226 y Fu(T)1023 1245 y FC(\))f(+)i(sin)d Fy(\022)q(S:)191 1326 y FC(The)15 b(argumen)o(ts)g (to)234 1417 y Fw(void)30 b Fz(T)l(ranslate)p FB(f)p Fz(fd)p FB(g)p FC(\()g Fw(T)15 b Fv(x)p Fw(,)g(T)g Fv(y)p Fw(,)g(T)g Fv(z)g FC(\))g Fw(;)120 1508 y FC(giv)o(e)d(the)g(co)q (ordinates)g(of)f(a)h(translation)f(v)o(ector)g(as)h(\()p Fy(x)f(y)i(z)r FC(\))1149 1491 y Fu(T)1177 1508 y FC(.)18 b(The)12 b(resulting)h(matrix)120 1564 y(is)j(a)f(translation)g(b)o(y)g (the)h(sp)q(eci\014ed)h(v)o(ector:)698 1629 y Fi(0)698 1702 y(B)698 1727 y(B)698 1753 y(@)742 1653 y FC(1)45 b(0)h(0)f Fy(x)742 1710 y FC(0)g(1)h(0)g Fy(y)742 1766 y FC(0)f(0)h(1)g Fy(z)742 1823 y FC(0)f(0)h(0)g(1)980 1629 y Fi(1)980 1702 y(C)980 1727 y(C)980 1753 y(A)1024 1738 y Fy(:)234 1914 y Fw(void)30 b Fz(Scale)p FB(f)p Fz(fd)p FB(g)p FC(\()g Fw(T)15 b Fv(x)p Fw(,)g(T)h Fv(y)p Fw(,)f(T)g Fv(z)f FC(\))h Fw(;)120 2005 y FC(pro)q(duces)h(a)e(general) h(scaling)h(along)f(the)g Fy(x)p FC(-,)f Fy(y)r FC(-,)h(and)f Fy(z)r FC(-)h(axes.)20 b(The)15 b(corresp)q(onding)120 2062 y(matrix)g(is)698 2075 y Fi(0)698 2148 y(B)698 2173 y(B)698 2200 y(@)741 2100 y Fy(x)46 b FC(0)g(0)g(0)743 2156 y(0)h Fy(y)g FC(0)f(0)743 2213 y(0)h(0)f Fy(z)i FC(0)743 2269 y(0)f(0)f(0)g(1)981 2075 y Fi(1)981 2148 y(C)981 2173 y(C)981 2200 y(A)1025 2185 y Fy(:)191 2341 y FC(F)l(or)234 2432 y Fw(void)40 b Fz(F)l(rustum)p FC(\()f Fw(double)19 b Fv(l)p Fw(,)i(double)f Fv(r)p Fw(,)h(double)e Fv(b)p Fw(,)j(double)d Fv(t)p Fw(,)302 2488 y(double)c Fv(n)p Fw(,)f(double)g Fv(f)i FC(\))e Fw(;)p eop %%Page: 32 41 32 40 bop 332 137 a FC(32)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)332 286 y FC(the)i(co)q(ordinates)g(\()p Fy(l)f(b)29 b FB(\000)12 b Fy(n)p FC(\))847 270 y Fu(T)892 286 y FC(and)18 b(\()p Fy(r)f(t)30 b FB(\000)12 b Fy(n)p FC(\))1177 270 y Fu(T)1222 286 y FC(sp)q(ecify)19 b(the)e(p)q(oin)o(ts) h(on)g(the)f(near)332 343 y(clipping)h(plane)e(that)e(are)h(mapp)q(ed)h (to)f(the)g(lo)o(w)o(er-left)g(and)h(upp)q(er-righ)o(t)g(corners)f(of) 332 399 y(the)i(windo)o(w,)g(resp)q(ectiv)o(ely)h(\(assuming)f(that)e (the)i(ey)o(e)g(is)g(lo)q(cated)g(at)f(\(0)g(0)h(0\))1718 383 y Fu(T)1745 399 y FC(\).)23 b Fy(f)332 456 y FC(giv)o(es)16 b(the)f(distance)h(from)f(the)h(ey)o(e)f(to)g(the)h(far)e(clipping)k (plane.)k(If)16 b(either)g Fy(n)f FC(or)g Fy(f)21 b FC(is)332 512 y(less)16 b(than)f(or)g(equal)i(to)d(zero,)h Fy(l)h FC(is)g(equal)g(to)f Fy(r)q FC(,)g Fy(b)g FC(is)h(equal)g(to)f Fy(t)p FC(,)g(or)g Fy(n)h FC(is)g(equal)g(to)f Fy(f)5 b FC(,)332 569 y(the)15 b(error)g Fr(INVALID)p 679 569 14 2 v 14 w(VALUE)f FC(results.)20 b(The)c(corresp)q(onding)g(matrix)f (is)777 629 y Fi(0)777 702 y(B)777 727 y(B)777 752 y(B)777 779 y(@)834 640 y Fq(2)p Fu(n)p 826 647 56 2 v 826 673 a(r)q FG(\000)p Fu(l)953 657 y FC(0)1072 640 y Fu(r)q Fq(+)p Fu(l)p 1072 647 V 1072 673 a(r)q FG(\000)p Fu(l)1249 657 y FC(0)842 722 y(0)945 704 y Fq(2)p Fu(n)p 937 711 V 937 737 a(t)p FG(\000)p Fu(b)1072 704 y(t)p Fq(+)p Fu(b)p 1072 711 V 1072 737 a(t)p FG(\000)p Fu(b)1249 722 y FC(0)842 788 y(0)88 b(0)66 b FB(\000)1082 768 y Fu(f)t Fq(+)p Fu(n)p 1082 778 70 2 v 1082 804 a(f)t FG(\000)p Fu(n)1203 788 y FB(\000)1248 768 y Fq(2)p Fu(f)t(n)p 1243 778 V 1243 804 a(f)t FG(\000)p Fu(n)842 845 y FC(0)88 b(0)95 b FB(\000)p FC(1)120 b(0)1325 629 y Fi(1)1325 702 y(C)1325 727 y(C)1325 752 y(C)1325 779 y(A)1369 751 y Fy(:)446 940 y Fw(void)49 b Fz(Ortho)p FC(\()h Fw(double)24 b Fv(l)p Fw(,)j(double)e Fv(r)p Fw(,)i(double)d Fv(b)p Fw(,)k(double)c Fv(t)p Fw(,)514 997 y(double)14 b Fv(n)p Fw(,)h(double)f Fv(f)h FC(\))g Fw(;)332 1099 y FC(describ)q(es)d(a)e (matrix)g(that)g(pro)q(duces)h(parallel)h(pro)s(jection.)18 b(\()p Fy(l)11 b(b)f FB(\000)p Fy(n)p FC(\))1519 1082 y Fu(T)1558 1099 y FC(and)g(\()p Fy(r)h(t)g FB(\000)p Fy(n)p FC(\))1798 1082 y Fu(T)332 1155 y FC(sp)q(ecify)16 b(the)f(p)q(oin)o(ts)g(on)g(the)f(near)h(clipping)i(plane)f(that)e(are) g(mapp)q(ed)i(to)e(the)h(lo)o(w)o(er-)332 1212 y(left)f(and)f(upp)q (er-righ)o(t)h(corners)f(of)g(the)g(windo)o(w,)g(resp)q(ectiv)o(ely)l (.)21 b Fv(f)13 b FC(giv)o(es)g(the)h(distance)332 1268 y(from)g(the)h(ey)o(e)f(to)g(the)h(far)f(clipping)j(plane.)j(If)15 b Fy(l)g FC(is)g(equal)g(to)f Fy(r)q FC(,)g Fy(b)g FC(is)h(equal)h(to)e Fy(t)p FC(,)g(or)g Fy(n)332 1325 y FC(is)i(equal)g(to)e Fy(f)5 b FC(,)15 b(the)h(error)e Fr(INVALID)p 955 1325 14 2 v 14 w(VALUE)g FC(results.)21 b(The)15 b(corresp)q(onding)h (matrix)f(is)777 1385 y Fi(0)777 1459 y(B)777 1483 y(B)777 1508 y(B)777 1535 y(@)845 1396 y Fq(2)p 826 1403 56 2 v 826 1429 a Fu(r)q FG(\000)p Fu(l)953 1414 y FC(0)112 b(0)99 b FB(\000)1250 1396 y Fu(r)q Fq(+)p Fu(l)p 1250 1403 V 1250 1429 a(r)q FG(\000)p Fu(l)842 1478 y FC(0)955 1460 y Fq(2)p 937 1467 V 937 1493 a Fu(t)p FG(\000)p Fu(b)1088 1478 y FC(0)g FB(\000)1250 1460 y Fu(t)p Fq(+)p Fu(b)p 1250 1467 V 1250 1493 a(t)p FG(\000)p Fu(b)842 1544 y FC(0)88 b(0)66 b FB(\000)1109 1527 y Fq(2)p 1082 1534 70 2 v 1082 1560 a Fu(f)t FG(\000)p Fu(n)1203 1544 y FB(\000)1243 1524 y Fu(f)t Fq(+)p Fu(n)p 1243 1534 V 1243 1560 a(f)t FG(\000)p Fu(n)842 1601 y FC(0)88 b(0)112 b(0)138 b(1)1325 1385 y Fi(1)1325 1459 y(C)1325 1483 y(C)1325 1508 y(C)1325 1535 y(A)1369 1507 y Fy(:)403 1690 y FC(There)12 b(is)g(another)f(4)s FB(\002)s FC(4)i(matrix)e(that) g(is)h(applied)i(to)d(texture)h(co)q(ordinates.)19 b(This)332 1746 y(matrix)c(is)h(applied)h(as)762 1810 y Fi(0)762 1883 y(B)762 1908 y(B)762 1935 y(@)805 1835 y Fy(m)845 1842 y Fq(1)911 1835 y Fy(m)951 1842 y Fq(5)1024 1835 y Fy(m)1064 1842 y Fq(9)1138 1835 y Fy(m)1178 1842 y Fq(13)805 1891 y Fy(m)845 1898 y Fq(2)911 1891 y Fy(m)951 1898 y Fq(6)1016 1891 y Fy(m)1056 1898 y Fq(10)1138 1891 y Fy(m)1178 1898 y Fq(14)805 1948 y Fy(m)845 1955 y Fq(3)911 1948 y Fy(m)951 1955 y Fq(7)1016 1948 y Fy(m)1056 1955 y Fq(11)1138 1948 y Fy(m)1178 1955 y Fq(15)805 2004 y Fy(m)845 2011 y Fq(4)911 2004 y Fy(m)951 2011 y Fq(8)1016 2004 y Fy(m)1056 2011 y Fq(12)1138 2004 y Fy(m)1178 2011 y Fq(16)1223 1810 y Fi(1)1223 1883 y(C)1223 1908 y(C)1223 1935 y(A)1267 1810 y(0)1267 1883 y(B)1267 1908 y(B)1267 1935 y(@)1311 1835 y Fy(s)1314 1891 y(t)1311 1948 y(r)1311 2004 y(q)1340 1810 y Fi(1)1340 1883 y(C)1340 1908 y(C)1340 1935 y(A)1384 1920 y Fy(;)332 2093 y FC(where)g(the)g(left)g(matrix)f (is)h(the)g(curren)o(t)g(texture)f(matrix.)24 b(The)17 b(matrix)f(is)i(applied)332 2149 y(to)13 b(the)i(co)q(ordinates)f (resulting)h(from)e(texture)h(co)q(ordinate)g(generation)h(\(whic)o(h)f (ma)o(y)332 2206 y(simply)e(b)q(e)f(the)g(curren)o(t)f(texture)h(co)q (ordinates\),)g(and)f(the)h(resulting)h(transformed)d(co-)332 2262 y(ordinates)16 b(b)q(ecome)g(the)f(texture)g(co)q(ordinates)h (asso)q(ciated)f(with)h(a)f(v)o(ertex.)20 b(Setting)332 2319 y(the)14 b(matrix)g(mo)q(de)g(to)g Fr(TEXTURE)f FC(causes)h(the)g(already)g(describ)q(ed)j(matrix)c(op)q(erations)332 2375 y(to)i(apply)h(to)e(the)h(texture)g(matrix.)403 2432 y(There)e(is)g(a)g(stac)o(k)f(of)h(matrices)g(for)f(eac)o(h)h(of)g (the)g(matrix)g(mo)q(des.)19 b(F)l(or)12 b Fr(MODELVIEW)332 2488 y FC(mo)q(de,)k(the)h(stac)o(k)e(depth)i(is)g(at)e(least)i(32)e (\(that)g(is,)i(there)f(is)h(a)f(stac)o(k)f(of)h(at)g(least)g(32)p eop %%Page: 33 42 33 41 bop 120 137 a Fx(2.10.)34 b(COORDINA)l(TE)17 b(TRANSF)o(ORMA)l (TIONS)517 b FC(33)120 286 y(mo)q(del-view)21 b(matrices\).)30 b(F)l(or)18 b(the)h(other)f(mo)q(des,)h(the)g(depth)g(is)h(at)e(least)g (2.)30 b(The)120 343 y(curren)o(t)18 b(matrix)f(in)h(an)o(y)f(mo)q(de)h (is)g(the)f(matrix)g(on)h(the)f(top)g(of)g(the)h(stac)o(k)f(for)f(that) 120 399 y(mo)q(de.)234 482 y Fw(void)30 b Fz(PushMatrix)p FC(\()f Fw(void)39 b FC(\))14 b Fw(;)120 565 y FC(pushes)19 b(the)e(stac)o(k)g(do)o(wn)g(b)o(y)h(one,)g(duplicating)h(the)f(curren) o(t)f(matrix)h(in)g(b)q(oth)g(the)120 621 y(top)d(of)g(the)g(stac)o(k)g (and)g(the)g(en)o(try)g(b)q(elo)o(w)h(it.)234 704 y Fw(void)30 b Fz(P)o(opMatrix)p FC(\()f Fw(void)39 b FC(\))15 b Fw(;)120 787 y FC(p)q(ops)k(the)f(top)g(en)o(try)g(o\013)f(of)h(the)g(stac)o(k,) g(replacing)i(the)e(curren)o(t)g(matrix)g(with)h(the)120 843 y(matrix)12 b(that)f(w)o(as)f(the)i(second)g(en)o(try)g(in)g(the)g (stac)o(k.)18 b(The)12 b(pushing)g(or)g(p)q(opping)h(tak)o(es)120 900 y(place)20 b(on)f(the)g(stac)o(k)f(corresp)q(onding)i(to)e(the)h (curren)o(t)f(matrix)h(mo)q(de.)31 b(P)o(opping)19 b(a)120 956 y(matrix)c(o\013)g(a)f(stac)o(k)h(with)g(only)h(one)f(en)o(try)g (generates)g(the)g(error)f Fr(STACK)p 1394 956 14 2 v 15 w(UNDERFLOW)p FC(;)120 1013 y(pushing)j(a)e(matrix)g(on)o(to)f(a)h (full)h(stac)o(k)f(generates)g Fr(STACK)p 1125 1013 V 14 w(OVERFLOW)p FC(.)191 1069 y(The)22 b(state)f(required)i(to)f (implemen)o(t)h(transformations)d(consists)i(of)g(a)f(three-)120 1126 y(v)m(alued)f(in)o(teger)e(indicating)h(the)f(curren)o(t)g(matrix) f(mo)q(de,)h(a)g(stac)o(k)f(of)g(at)g(least)h(t)o(w)o(o)120 1182 y(4)c FB(\002)g FC(4)20 b(matrices)h(for)f(eac)o(h)h(of)f Fr(PROJECTION)f FC(and)h Fr(TEXTURE)g FC(with)h(asso)q(ciated)g(stac)o (k)120 1239 y(p)q(oin)o(ters,)16 b(and)g(a)g(stac)o(k)e(of)i(at)f (least)h(32)f(4)10 b FB(\002)h FC(4)k(matrices)h(with)g(an)g(asso)q (ciated)g(stac)o(k)120 1295 y(p)q(oin)o(ter)g(for)f Fr(MODELVIEW)p FC(.)e(Initially)l(,)18 b(there)e(is)g(only)g(one)f(matrix)g(on)h(eac)o (h)f(stac)o(k,)g(and)120 1351 y(all)i(matrices)e(are)g(set)g(to)f(the)h (iden)o(tit)o(y)l(.)21 b(The)16 b(initial)h(matrix)e(mo)q(de)g(is)h Fr(MODELVIEW)p FC(.)120 1471 y Fl(2.10.3)56 b(Normal)17 b(T)-5 b(ransformation)120 1557 y FC(Finally)l(,)20 b(w)o(e)e(consider) h(ho)o(w)e(the)h(mo)q(del-view)i(matrix)d(a\013ects)g(normals.)28 b(Normals)120 1613 y(are)14 b(of)g(in)o(terest)h(only)g(in)g(ey)o(e)f (co)q(ordinates,)h(so)e(the)i(rules)g(go)o(v)o(erning)f(their)h (transfor-)120 1670 y(mation)g(to)g(other)g(co)q(ordinate)g(systems)g (are)g(not)g(examined.)191 1726 y(Normals)j(sen)o(t)g(to)f(the)i(GL)f (ma)o(y)f(or)h(ma)o(y)f(not)h(ha)o(v)o(e)g(unit)h(length.)29 b(If)19 b(normal-)120 1783 y(ization)d(is)g(enabled,)g(then)f(normals)g (sp)q(eci\014ed)i(with)f(the)f Fz(Normal3)g FC(command)g(are)120 1839 y(normalized)i(after)d(transformation.)19 b(Normalization)d(is)f (con)o(trolled)h(with)234 1922 y Fw(void)30 b Fz(Enable)p FC(\()h Fw(enum)15 b Fv(tar)n(get)g FC(\))g Fw(;)120 2005 y FC(and)234 2088 y Fw(void)30 b Fz(Disable)p FC(\()h Fw(enum)15 b Fv(tar)n(get)g FC(\))g Fw(;)120 2170 y FC(with)k Fv(tar)n(get)g FC(equal)g(to)f Fr(NORMALIZE)p FC(.)e(This)j(requires)g (one)f(bit)h(of)f(state.)29 b(The)19 b(initial)120 2227 y(state)c(is)g(for)g(normals)g(not)g(to)f(b)q(e)i(normalized.)191 2283 y(A)22 b(normal)f(at)g(a)g(p)q(oin)o(t)h(de\014nes)h(a)e(plane)h (at)f(that)g(p)q(oin)o(t.)39 b(If)22 b(the)g(normal)f(is)120 2415 y(\()8 b Fy(n)173 2422 y Fu(x)240 2415 y Fy(n)267 2422 y Fu(y)334 2415 y Fy(n)361 2422 y Fu(z)389 2415 y FC(\))21 b(and)h(the)g(p)q(oin)o(t)h(is)786 2306 y Fi(0)786 2379 y(B)786 2404 y(B)786 2430 y(@)834 2330 y Fy(x)835 2387 y(y)835 2443 y(z)830 2500 y(w)871 2306 y Fi(1)871 2379 y(C)871 2404 y(C)871 2430 y(A)908 2415 y FC(,)g(then)f(for)f(the)h(p)q(oin)o(t)h(to)e(satisfy)h(the)p eop %%Page: 34 43 34 42 bop 332 137 a FC(34)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)332 286 y FC(plane)g(equation)g(w)o(e)f(m)o (ust)f(ha)o(v)o(e)796 449 y(\()8 b Fy(n)849 456 y Fu(x)916 449 y Fy(n)943 456 y Fu(y)1010 449 y Fy(n)1037 456 y Fu(z)1102 449 y Fy(q)i FC(\))1157 340 y Fi(0)1157 413 y(B)1157 438 y(B)1157 465 y(@)1205 365 y Fy(x)1206 421 y(y)1206 478 y(z)1201 534 y(w)1242 340 y Fi(1)1242 413 y(C)1242 438 y(C)1242 465 y(A)1291 449 y FC(=)j(0)332 612 y(whence)698 792 y Fy(q)h FC(=)785 707 y FB(\000)p FC(\()8 b Fy(n)873 714 y Fu(x)940 707 y Fy(n)967 714 y Fu(y)1034 707 y Fy(n)1061 714 y Fu(z)1089 707 y FC(\))1114 623 y Fi(0)1114 697 y(@)1158 650 y Fy(x)1159 707 y(y)1159 763 y(z)1191 623 y Fi(1)1191 697 y(A)p 785 781 443 2 v 990 823 a Fy(w)1233 792 y(;)98 b(w)13 b FB(6)p FC(=)g(0)332 879 y(or)20 b Fy(q)j FC(=)f(0)e(if)h Fy(w)h FC(=)g(0.)35 b(Therefore,)22 b(if)e(the)h(mo)q(del-view)h(matrix)e(is)h Fy(M)5 b FC(,)22 b(then)e(the)332 935 y(transformed)14 b(plane)j(equation)e(is)608 1023 y(\()7 b Fy(n)660 1030 y Fu(x)682 1006 y FG(0)740 1023 y Fy(n)767 1030 y Fu(y)788 1006 y FG(0)845 1023 y Fy(n)872 1030 y Fu(z)892 1006 y FG(0)949 1023 y Fy(q)971 1006 y FG(0)990 1023 y FC(\))12 b(=)h(\()8 b Fy(n)1121 1030 y Fu(x)1188 1023 y Fy(n)1215 1030 y Fu(y)1282 1023 y Fy(n)1309 1030 y Fu(z)1374 1023 y Fy(q)i FC(\))g FB(\001)f Fy(M)1503 1004 y FG(\000)p Fq(1)332 1110 y FC(and)15 b(the)h(transformed)e(normal)h(is)980 1205 y(1)p 796 1226 392 2 v 796 1234 a Fi(q)p 837 1234 350 2 v 837 1285 a Fy(n)864 1292 y Fu(x)886 1272 y FG(0)898 1266 y Fq(2)928 1285 y FC(+)10 b Fy(n)1000 1292 y Fu(y)1021 1272 y FG(0)1033 1266 y Fq(2)1063 1285 y FC(+)g Fy(n)1135 1292 y Fu(z)1155 1272 y FG(0)1167 1266 y Fq(2)1199 1152 y Fi(0)1199 1226 y(@)1243 1180 y Fy(n)1270 1187 y Fu(x)1292 1163 y FG(0)1244 1236 y Fy(n)1271 1243 y Fu(y)1292 1220 y FG(0)1244 1293 y Fy(n)1271 1300 y Fu(z)1291 1276 y FG(0)1312 1152 y Fi(1)1312 1226 y(A)1355 1236 y Fy(:)365 b FC(\(2.1\))332 1374 y(If)14 b(normalization)g(is)h(disabled,)g(then)f (the)g(square)f(ro)q(ot)g(in)h(equation)g(2.1)f(is)h(replaced)332 1430 y(with)j(1.)23 b(Otherwise,)17 b(the)g(square)f(ro)q(ot)f(remains) i(as)f(written.)24 b(If)16 b Fy(M)1546 1437 y Fu(u)1585 1430 y FC(is)h(the)f(upp)q(er)332 1487 y(leftmost)10 b(3x3)g(matrix)g(tak)o(en)g(from)f(M,)h(implemen)o(tations)h(ma)o(y)f (c)o(ho)q(ose)g(to)g(transform)332 1543 y(\()d Fy(n)384 1550 y Fu(x)452 1543 y Fy(n)479 1550 y Fu(y)545 1543 y Fy(n)572 1550 y Fu(z)600 1543 y FC(\))15 b(to)g(ey)o(e)g(co)q (ordinates)g(using)681 1631 y(\()7 b Fy(n)733 1638 y Fu(x)756 1614 y FG(0)813 1631 y Fy(n)840 1638 y Fu(y)861 1614 y FG(0)918 1631 y Fy(n)945 1638 y Fu(z)965 1614 y FG(0)984 1631 y FC(\))13 b(=)g(\()7 b Fy(n)1115 1638 y Fu(x)1182 1631 y Fy(n)1209 1638 y Fu(y)1276 1631 y Fy(n)1303 1638 y Fu(z)1331 1631 y FC(\))i FB(\001)h Fy(M)1430 1612 y FG(\000)p Fq(1)1425 1642 y Fu(u)332 1718 y FC(follo)o(w)o(ed)16 b(b)o(y)f(equation)30 b(2.1.)403 1775 y(Because)25 b(w)o(e)g(sp)q (ecify)h(neither)f(the)g(\015oating-p)q(oin)o(t)h(format)d(nor)i(the)f (means)332 1831 y(for)c(matrix)g(in)o(v)o(ersion,)h(w)o(e)f(cannot)g (sp)q(ecify)i(b)q(eha)o(vior)f(in)g(the)f(case)g(of)g(a)g(p)q(o)q (orly-)332 1888 y(conditioned)f(\(nearly)f(singular\))g(mo)q(del-view)h (matrix)e Fy(M)5 b FC(.)26 b(In)18 b(case)f(of)g(an)g(exactly)332 1944 y(singular)11 b(matrix,)g(the)f(transformed)g(normal)g(is)h (unde\014ned.)20 b(If)11 b(the)f(GL)g(implemen)o(ta-)332 2001 y(tion)k(determines)g(that)f(the)h(mo)q(del-view)h(matrix)f(is)g (unin)o(v)o(ertible,)h(then)f(the)g(en)o(tries)332 2057 y(in)k(the)f(in)o(v)o(erted)h(matrix)f(are)f(arbitrary)l(.)26 b(In)17 b(an)o(y)g(case,)g(neither)h(normal)g(transfor-)332 2114 y(mation)f(nor)f(use)h(of)g(the)f(transformed)g(normal)h(ma)o(y)f (lead)h(to)g(GL)f(in)o(terruption)i(or)332 2170 y(termination.)332 2289 y Fl(2.10.4)55 b(Generating)18 b(texture)f(co)r(ordinates)332 2375 y FC(T)l(exture)f(co)q(ordinates)g(asso)q(ciated)g(with)f(a)h(v)o (ertex)f(ma)o(y)g(either)h(b)q(e)g(tak)o(en)g(from)e(the)332 2432 y(curren)o(t)g(texture)h(co)q(ordinates)f(or)g(generated)h (according)g(to)f(a)g(function)h(dep)q(enden)o(t)332 2488 y(on)g(v)o(ertex)g(co)q(ordinates.)20 b(The)c(command)p eop %%Page: 35 44 35 43 bop 120 137 a Fx(2.10.)34 b(COORDINA)l(TE)17 b(TRANSF)o(ORMA)l (TIONS)517 b FC(35)234 286 y Fw(void)30 b Fz(T)l(exGen)p FB(f)p Fz(ifd)p FB(g)p FC(\()f Fw(enum)15 b Fv(c)n(o)n(or)n(d)p Fw(,)g(enum)f Fv(pname)p Fw(,)i(T)f Fv(p)n(ar)n(am)g FC(\))g Fw(;)234 343 y(void)30 b Fz(T)l(exGen)p FB(f)p Fz(ifd)p FB(g)p Fz(v)p FC(\()f Fw(enum)15 b Fv(c)n(o)n(or)n(d)p Fw(,)f(enum)h Fv(pname)p Fw(,)g(T)g Fv(p)n(ar)n(ams)g FC(\))g Fw(;)120 433 y FC(con)o(trols)h(texture)g(co)q(ordinate)g (generation.)23 b Fv(c)n(o)n(or)n(d)16 b FC(m)o(ust)f(b)q(e)i(one)f(of) g(the)g(constan)o(ts)120 490 y Fr(S)p FC(,)k Fr(T)p FC(,)g Fr(R)p FC(,)g(or)f Fr(Q)p FC(,)h(indicating)i(that)e(the)h(p)q(ertinen) o(t)g(co)q(ordinate)g(is)f(the)h Fy(s)p FC(,)g Fy(t)p FC(,)h Fy(r)q FC(,)f(or)f Fy(q)120 546 y FC(co)q(ordinate,)15 b(resp)q(ectiv)o(ely)l(.)22 b(In)15 b(the)g(\014rst)f(form)g(of)h(the)g (command,)f Fv(p)n(ar)n(am)h FC(is)g(a)g(sym-)120 603 y(b)q(olic)d(constan)o(t)e(sp)q(ecifying)i(a)d(single-v)m(alued)14 b(texture)c(generation)g(parameter;)h(in)g(the)120 659 y(second)17 b(form,)f Fv(p)n(ar)n(ams)g FC(is)h(a)f(p)q(oin)o(ter)h(to) f(an)g(arra)o(y)f(of)h(v)m(alues)i(that)d(sp)q(ecify)j(texture)120 716 y(generation)d(parameters.)k Fv(pname)c FC(m)o(ust)f(b)q(e)h(one)g (of)f(the)h(three)g(sym)o(b)q(olic)h(constan)o(ts)120 772 y Fr(TEXTURE)p 277 772 14 2 v 15 w(GEN)p 358 772 V 15 w(MODE)p FC(,)c Fr(OBJECT)p 618 772 V 14 w(PLANE)p FC(,)g(or)h Fr(EYE)p 887 772 V 15 w(PLANE)p FC(.)f(If)i Fv(pname)g FC(is)g Fr(TEXTURE)p 1423 772 V 14 w(GEN)p 1503 772 V 15 w(MODE)p FC(,)120 829 y(then)d(either)h Fv(p)n(ar)n(ams)e FC(p)q(oin)o(ts)i(to)e(or)g Fv(p)n(ar)n(am)h FC(is)g(an)g(in)o(teger)g(that)e(is)j(one)f(of)f(the)h(sym)o(b)q(olic) 120 885 y(constan)o(ts)k Fr(OBJECT)p 457 885 V 14 w(LINEAR)p FC(,)f Fr(EYE)p 696 885 V 15 w(LINEAR)p FC(,)f(or)i Fr(SPHERE)p 1057 885 V 14 w(MAP)p FC(.)191 941 y(If)10 b Fr(TEXTURE)p 388 941 V 15 w(GEN)p 469 941 V 15 w(MODE)f FC(indicates)j Fr(OBJECT)p 898 941 V 14 w(LINEAR)p FC(,)d(then)h(the)h(generation)f (function)120 998 y(for)15 b(the)g(co)q(ordinate)h(indicated)h(b)o(y)e Fv(c)n(o)n(or)n(d)g FC(is)562 1096 y Fy(g)f FC(=)e Fy(p)668 1103 y Fq(1)688 1096 y Fy(x)714 1103 y Fu(o)743 1096 y FC(+)f Fy(p)812 1103 y Fq(2)831 1096 y Fy(y)853 1103 y Fu(o)883 1096 y FC(+)f Fy(p)951 1103 y Fq(3)971 1096 y Fy(z)992 1103 y Fu(o)1021 1096 y FC(+)h Fy(p)1090 1103 y Fq(4)1109 1096 y Fy(w)1142 1103 y Fu(o)1161 1096 y Fy(:)120 1194 y(x)146 1201 y Fu(o)165 1194 y FC(,)19 b Fy(y)219 1201 y Fu(o)239 1194 y FC(,)f Fy(z)291 1201 y Fu(o)310 1194 y FC(,)h(and)f Fy(w)466 1201 y Fu(o)503 1194 y FC(are)g(the)h(ob)s(ject)e(co)q(ordinates)i(of)f(the)g(v)o (ertex.)29 b Fy(p)1373 1201 y Fq(1)1392 1194 y Fy(;)8 b(:)g(:)g(:)d(;)j(p)1517 1201 y Fq(4)1554 1194 y FC(are)120 1251 y(sp)q(eci\014ed)18 b(b)o(y)d(calling)i Fz(T)l(exGen)e FC(with)h Fv(pname)f FC(set)g(to)g Fr(OBJECT)p 1215 1251 V 14 w(PLANE)f FC(in)j(whic)o(h)f(case)120 1307 y Fv(p)n(ar)n(ams)e FC(p)q(oin)o(ts)g(to)e(an)i(arra)o(y)e(con)o(taining)i Fy(p)883 1314 y Fq(1)903 1307 y Fy(;)8 b(:)g(:)g(:)d(;)j(p)1028 1314 y Fq(4)1046 1307 y FC(.)20 b(There)13 b(is)h(a)f(distinct)i(group) e(of)120 1364 y(plane)19 b(equation)f(co)q(e\016cien)o(ts)g(for)f(eac)o (h)g(texture)g(co)q(ordinate;)i Fv(c)n(o)n(or)n(d)e FC(indicates)i(the) 120 1420 y(co)q(ordinate)d(to)f(whic)o(h)h(the)f(sp)q(eci\014ed)i(co)q (e\016cien)o(ts)f(p)q(ertain.)191 1477 y(If)f Fr(TEXTURE)p 393 1477 V 15 w(GEN)p 474 1477 V 15 w(MODE)f FC(indicates)j Fr(EYE)p 847 1477 V 15 w(LINEAR)p FC(,)c(then)j(the)f(function)h(is)569 1575 y Fy(g)e FC(=)f Fy(p)676 1556 y FG(0)676 1586 y Fq(1)696 1575 y Fy(x)722 1582 y Fu(e)750 1575 y FC(+)e Fy(p)819 1556 y FG(0)819 1586 y Fq(2)838 1575 y Fy(y)860 1582 y Fu(e)889 1575 y FC(+)g Fy(p)958 1556 y FG(0)958 1586 y Fq(3)977 1575 y Fy(z)998 1582 y Fu(e)1027 1575 y FC(+)f Fy(p)1095 1556 y FG(0)1095 1586 y Fq(4)1115 1575 y Fy(w)1148 1582 y Fu(e)120 1673 y FC(where)428 1729 y(\()d Fy(p)476 1713 y FG(0)476 1741 y Fq(1)541 1729 y Fy(p)564 1713 y FG(0)564 1741 y Fq(2)630 1729 y Fy(p)653 1713 y FG(0)653 1741 y Fq(3)718 1729 y Fy(p)741 1713 y FG(0)741 1741 y Fq(4)768 1729 y FC(\))12 b(=)h(\()7 b Fy(p)894 1736 y Fq(1)959 1729 y Fy(p)982 1736 y Fq(2)1047 1729 y Fy(p)1070 1736 y Fq(3)1135 1729 y Fy(p)1158 1736 y Fq(4)1186 1729 y FC(\))g Fy(M)1260 1710 y FG(\000)p Fq(1)120 1811 y Fy(x)146 1818 y Fu(e)165 1811 y FC(,)23 b Fy(y)223 1818 y Fu(e)242 1811 y FC(,)h Fy(z)300 1818 y Fu(e)318 1811 y FC(,)g(and)e Fy(w)483 1818 y Fu(e)523 1811 y FC(are)g(the)g(ey)o(e)h(co)q(ordinates)f(of)g(the)g(v)o(ertex.) 41 b Fy(p)1369 1818 y Fq(1)1388 1811 y Fy(;)8 b(:)g(:)g(:)d(;)j(p)1513 1818 y Fq(4)1554 1811 y FC(are)120 1867 y(set)14 b(b)o(y)g(calling)h Fz(T)l(exGen)e FC(with)i Fv(pname)e FC(set)h(to)f Fr(EYE)p 1024 1867 V 15 w(PLANE)g FC(in)h(corresp)q(ondence)h(with)120 1924 y(setting)d(the)f(co)q(e\016cien)o(ts)h(in)h(the)e Fr(OBJECT)p 825 1924 V 14 w(PLANE)g FC(case.)18 b Fy(M)f FC(is)12 b(the)f(mo)q(del-view)i(matrix)120 1980 y(in)18 b(e\013ect)f(when)g Fy(p)440 1987 y Fq(1)460 1980 y Fy(;)8 b(:)g(:)g(:)d(;)j(p)585 1987 y Fq(4)620 1980 y FC(are)17 b(sp)q(eci\014ed.)27 b(Computed)17 b(texture)g(co)q(ordinates)g(ma)o(y) 120 2037 y(b)q(e)f(inaccurate)g(or)f(unde\014ned)i(if)e Fy(M)21 b FC(is)15 b(p)q(o)q(orly)h(conditioned)h(or)e(singular.)191 2093 y(When)h(used)g(with)g(a)f(suitably)i(constructed)f(texture)f (image,)h(calling)h Fz(T)l(exGen)120 2149 y FC(with)g Fr(TEXTURE)p 382 2149 V 14 w(GEN)p 462 2149 V 15 w(MODE)f FC(indicating)i Fr(SPHERE)p 926 2149 V 15 w(MAP)e FC(can)g(sim)o(ulate) h(the)g(re\015ected)g(im-)120 2206 y(age)12 b(of)g(a)f(spherical)j(en)o (vironmen)o(t)f(on)f(a)f(p)q(olygon.)20 b Fr(SPHERE)p 1145 2206 V 14 w(MAP)12 b FC(texture)f(co)q(ordinates)120 2262 y(are)j(generated)g(as)g(follo)o(ws.)20 b(Denote)13 b(the)i(unit)f(v)o(ector)g(p)q(oin)o(ting)h(from)e(the)i(origin)f(to) 120 2319 y(the)e(v)o(ertex)g(\(in)g(ey)o(e)g(co)q(ordinates\))g(b)o(y)f Fz(u)p FC(.)19 b(Denote)12 b(the)f(curren)o(t)h(normal,)g(after)f (trans-)120 2375 y(formation)16 b(to)g(ey)o(e)g(co)q(ordinates,)h(b)o (y)f Fz(n)815 2359 y FG(0)827 2375 y FC(.)23 b(Let)16 b Fz(r)e FC(=)h(\()7 b Fy(r)1077 2382 y Fu(x)1144 2375 y Fy(r)1165 2382 y Fu(y)1231 2375 y Fy(r)1252 2382 y Fu(z)1279 2375 y FC(\))1297 2354 y Fu(T)1324 2375 y FC(,)16 b(the)h(re\015ection)120 2432 y(v)o(ector,)d(b)q(e)i(giv)o(en)g(b)o(y) 698 2488 y Fz(r)c FC(=)h Fz(u)d FB(\000)g FC(2)p Fz(n)916 2469 y FG(0)928 2488 y Fz(n)957 2469 y FG(0)q Fu(T)996 2488 y Fz(u)p Fy(;)p eop %%Page: 36 45 36 44 bop 332 137 a FC(36)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)332 294 y FC(and)h(let)g Fy(m)f FC(=)f(2)618 244 y Fi(q)p 659 244 369 2 v 659 294 a Fy(r)681 281 y Fq(2)680 305 y Fu(x)712 294 y FC(+)10 b Fy(r)779 281 y Fq(2)778 305 y Fu(y)809 294 y FC(+)h(\()p Fy(r)894 301 y Fu(z)923 294 y FC(+)f(1\))1009 273 y Fq(2)1028 294 y FC(.)25 b(Then)17 b(the)g(v)m(alue)h(assigned)g(to)e(an)h Fy(s)g FC(co)q(or-)332 361 y(dinate)h(\(the)e(\014rst)h Fz(T)l(exGen)f FC(argumen)o(t)g(v)m(alue)j(is)e Fr(S)p FC(\))f(is)i Fy(s)e FC(=)f Fy(r)1444 368 y Fu(x)1466 361 y Fy(=m)c FC(+)1591 343 y Fq(1)p 1591 350 18 2 v 1591 376 a(2)1614 361 y FC(;)17 b(the)g(v)m(alue)332 417 y(assigned)j(to)f(a)g Fy(t)h FC(co)q(ordinate)g(is)g Fy(t)g FC(=)g Fy(r)1044 424 y Fu(y)1064 417 y Fy(=m)12 b FC(+)1193 399 y Fq(1)p 1193 406 V 1193 433 a(2)1215 417 y FC(.)33 b(Calling)21 b Fz(T)l(exGen)e FC(with)g(a)g Fv(c)n(o-)332 474 y(or)n(d)h FC(of)f(either)h Fr(R)f FC(or)g Fr(Q)g FC(when)h Fv(pname)f FC(indicates)i Fr(SPHERE)p 1347 474 14 2 v 15 w(MAP)e FC(generates)g(the)g(error)332 530 y Fr(INVALID)p 489 530 V 14 w(ENUM)p FC(.)403 590 y(A)h(texture)g(co)q(ordinate)g(generation)g(function)h(is)g(enabled)g (or)f(disabled)i(using)332 646 y Fz(Enable)g FC(and)g Fz(Disable)g FC(with)f(an)g(argumen)o(t)f(of)h Fr(TEXTURE)p 1395 646 V 14 w(GEN)p 1475 646 V 15 w(S)p FC(,)g Fr(TEXTURE)p 1700 646 V 14 w(GEN)p 1780 646 V 15 w(T)p FC(,)332 703 y Fr(TEXTURE)p 489 703 V 14 w(GEN)p 569 703 V 15 w(R)p FC(,)e(or)g Fr(TEXTURE)p 852 703 V 15 w(GEN)p 933 703 V 15 w(Q)g FC(\(eac)o(h)g(indicates)i(the)f(corresp)q(onding)h(texture) 332 759 y(co)q(ordinate\).)32 b(When)19 b(enabled,)j(the)d(sp)q (eci\014ed)i(texture)e(co)q(ordinate)g(is)h(computed)332 816 y(according)c(to)f(the)g(curren)o(t)h Fr(EYE)p 899 816 V 15 w(LINEAR)p FC(,)e Fr(OBJECT)p 1205 816 V 14 w(LINEAR)g FC(or)h Fr(SPHERE)p 1553 816 V 15 w(MAP)g FC(sp)q(eci\014ca-)332 872 y(tion,)i(dep)q(ending)h(on)f(the)f(curren)o (t)g(setting)h(of)f Fr(TEXTURE)p 1323 872 V 14 w(GEN)p 1403 872 V 15 w(MODE)f FC(for)h(that)g(co)q(ordi-)332 928 y(nate.)34 b(When)20 b(disabled,)j(subsequen)o(t)e(v)o(ertices)f (will)i(tak)o(e)d(the)h(indicated)i(texture)332 985 y(co)q(ordinate)16 b(from)e(the)h(curren)o(t)h(texture)e(co)q(ordinates.)403 1045 y(The)i(state)f(required)i(for)e(texture)g(co)q(ordinate)h (generation)g(comprises)h(a)e(three-)332 1101 y(v)m(alued)20 b(in)o(teger)f(for)f(eac)o(h)h(co)q(ordinate)g(indicating)i(co)q (ordinate)e(generation)g(mo)q(de,)332 1158 y(and)13 b(a)g(bit)g(for)f (eac)o(h)h(co)q(ordinate)h(to)e(indicate)i(whether)f(texture)g(co)q (ordinate)g(genera-)332 1214 y(tion)h(is)f(enabled)i(or)e(disabled.)21 b(In)13 b(addition,)i(four)e(co)q(e\016cien)o(ts)h(are)e(required)j (for)d(the)332 1271 y(four)i(co)q(ordinates)h(for)f(eac)o(h)h(of)f Fr(EYE)p 958 1271 V 15 w(LINEAR)f FC(and)i Fr(OBJECT)p 1338 1271 V 14 w(LINEAR)p FC(.)e(The)i(initial)h(state)332 1327 y(has)c(the)g(texture)g(generation)h(function)g(disabled)g(for)f (all)h(texture)f(co)q(ordinates.)19 b(The)332 1383 y(initial)f(v)m (alues)f(of)f Fy(p)676 1390 y Fu(i)705 1383 y FC(for)g Fy(s)g FC(are)f(all)i(0)f(except)g Fy(p)1158 1390 y Fq(1)1194 1383 y FC(whic)o(h)g(is)h(one;)f(for)f Fy(t)h FC(all)h(the)f Fy(p)1736 1390 y Fu(i)1766 1383 y FC(are)332 1440 y(zero)c(except)g Fy(p)587 1447 y Fq(2)607 1440 y FC(,)g(whic)o(h)g(is)g(1.)19 b(The)12 b(v)m(alues)h(of)e Fy(p)1148 1447 y Fu(i)1174 1440 y FC(for)g Fy(r)h FC(and)g Fy(q)i FC(are)d(all)i(0.)18 b(These)12 b(v)m(alues)332 1496 y(of)i Fy(p)406 1503 y Fu(i)435 1496 y FC(apply)h(for)f(b)q(oth)g(the)h Fr(EYE)p 881 1496 V 15 w(LINEAR)e FC(and)i Fr(OBJECT)p 1261 1496 V 14 w(LINEAR)f FC(v)o(ersions.)19 b(Initially)f(all)332 1553 y(texture)d(generation)g(mo)q(des)h(are)f Fr(EYE)p 998 1553 V 15 w(LINEAR)p FC(.)332 1715 y Fs(2.11)66 b(Clipping)332 1823 y FC(Primitiv)o(es)23 b(are)f(clipp)q(ed)j(to)c(the)h Fv(clip)g(volume)p FC(.)41 b(In)23 b(clip)h(co)q(ordinates,)f(the)g Fv(view)332 1879 y(volume)15 b FC(is)h(de\014ned)h(b)o(y)923 1942 y FB(\000)p Fy(w)991 1949 y Fu(c)1021 1942 y FB(\024)c Fy(x)1095 1949 y Fu(c)1125 1942 y FB(\024)g Fy(w)1206 1949 y Fu(c)925 1998 y FB(\000)p Fy(w)993 2005 y Fu(c)1023 1998 y FB(\024)g Fy(y)1093 2005 y Fu(c)1123 1998 y FB(\024)g Fy(w)1204 2005 y Fu(c)926 2055 y FB(\000)p Fy(w)994 2062 y Fu(c)1023 2055 y FB(\024)g Fy(z)1092 2062 y Fu(c)1123 2055 y FB(\024)g Fy(w)1204 2062 y Fu(c)1244 1998 y Fy(:)332 2146 y FC(This)k(view)f(v)o(olume)g(ma)o(y)g(b)q(e)g(further)g (restricted)g(b)o(y)g(as)f(man)o(y)h(as)f Fy(n)i FC(clien)o (t-de\014ned)332 2203 y(clip)g(planes)e(to)f(generate)h(the)g(clip)h(v) o(olume.)k(\()p Fy(n)15 b FC(is)g(an)g(implemen)o(tation)h(dep)q(enden) o(t)332 2259 y(maxim)o(um)k(that)f(m)o(ust)h(b)q(e)g(at)g(least)g(6.\)) 33 b(Eac)o(h)20 b(clien)o(t-de\014ned)j(plane)e(sp)q(eci\014es)h(a)332 2315 y(half-space.)27 b(The)18 b(clip)g(v)o(olume)g(is)g(the)f(in)o (tersection)h(of)f(all)h(suc)o(h)g(half-spaces)g(with)332 2372 y(the)e(view)g(v)o(olume)h(\(if)f(there)g(no)f(clien)o (t-de\014ned)k(clip)e(planes)g(are)f(enabled,)h(the)f(clip)332 2428 y(v)o(olume)g(is)f(the)h(view)f(v)o(olume\).)403 2488 y(A)g(clien)o(t-de\014ned)j(clip)f(plane)f(is)g(sp)q(eci\014ed)h (with)p eop %%Page: 37 46 37 45 bop 120 137 a Fx(2.11.)34 b(CLIPPING)1095 b FC(37)234 286 y Fw(void)30 b Fz(ClipPlane)p FC(\()h Fw(enum)15 b Fv(p)p Fw(,)g(double)f Fv(e)n(qn[4])h FC(\))g Fw(;)120 386 y FC(The)d(v)m(alue)g(of)f(the)g(\014rst)g(argumen)o(t,)g Fv(p)p FC(,)g(is)h(a)f(sym)o(b)q(olic)h(constan)o(t,)f Fr(CLIP)p 1339 386 14 2 v 15 w(PLANE)p Fh(i)p FC(,)f(where)120 443 y Fy(i)17 b FC(is)h(an)f(in)o(teger)h(b)q(et)o(w)o(een)f(0)g(and)h Fy(n)11 b FB(\000)h FC(1,)17 b(indicating)i(one)f(of)f Fy(n)g FC(clien)o(t-de\014ned)j(clip)120 499 y(planes.)h Fv(e)n(qn)14 b FC(is)h(an)f(arra)o(y)f(of)i(four)f(double-precision)j (\015oating-p)q(oin)o(t)f(v)m(alues.)k(These)120 556 y(are)14 b(the)f(co)q(e\016cien)o(ts)h(of)f(a)h(plane)g(equation)g(in)g (ob)s(ject)f(co)q(ordinates:)20 b Fy(p)1358 563 y Fq(1)1377 556 y FC(,)14 b Fy(p)1427 563 y Fq(2)1446 556 y FC(,)g Fy(p)1496 563 y Fq(3)1515 556 y FC(,)g(and)120 612 y Fy(p)143 619 y Fq(4)178 612 y FC(\(in)i(that)f(order\).)20 b(The)c(in)o(v)o(erse)g(of)f(the)g(curren)o(t)h(mo)q(del-view)h(matrix) e(is)h(applied)120 668 y(to)f(these)g(co)q(e\016cien)o(ts,)h(at)f(the)g (time)g(they)h(are)f(sp)q(eci\014ed,)i(yielding)428 775 y(\()7 b Fy(p)476 759 y FG(0)476 787 y Fq(1)541 775 y Fy(p)564 759 y FG(0)564 787 y Fq(2)630 775 y Fy(p)653 759 y FG(0)653 787 y Fq(3)718 775 y Fy(p)741 759 y FG(0)741 787 y Fq(4)768 775 y FC(\))12 b(=)h(\()7 b Fy(p)894 782 y Fq(1)959 775 y Fy(p)982 782 y Fq(2)1047 775 y Fy(p)1070 782 y Fq(3)1135 775 y Fy(p)1158 782 y Fq(4)1186 775 y FC(\))g Fy(M)1260 756 y FG(\000)p Fq(1)120 882 y FC(\(where)15 b Fy(M)20 b FC(is)15 b(the)g(curren)o(t)g(mo)q(del-view)h(matrix;)e (the)h(resulting)h(plane)g(equation)f(is)120 938 y(unde\014ned)f(if)d Fy(M)17 b FC(is)11 b(singular)i(and)e(ma)o(y)g(b)q(e)h(inaccurate)g(if) f Fy(M)17 b FC(is)11 b(p)q(o)q(orly-conditioned\))120 995 y(to)j(obtain)h(the)f(plane)i(equation)f(co)q(e\016cien)o(ts)g(in)g (ey)o(e)g(co)q(ordinates.)20 b(All)c(p)q(oin)o(ts)e(with)120 1051 y(ey)o(e)i(co)q(ordinates)f(\()7 b Fy(x)491 1058 y Fu(e)555 1051 y Fy(y)577 1058 y Fu(e)642 1051 y Fy(z)663 1058 y Fu(e)727 1051 y Fy(w)760 1058 y Fu(e)785 1051 y FC(\))803 1030 y Fu(T)845 1051 y FC(that)15 b(satisfy)574 1235 y(\()7 b Fy(p)622 1219 y FG(0)622 1247 y Fq(1)687 1235 y Fy(p)710 1219 y FG(0)710 1247 y Fq(2)775 1235 y Fy(p)798 1219 y FG(0)798 1247 y Fq(3)864 1235 y Fy(p)887 1219 y FG(0)887 1247 y Fq(4)914 1235 y FC(\))939 1126 y Fi(0)939 1199 y(B)939 1224 y(B)939 1251 y(@)986 1151 y Fy(x)1012 1158 y Fu(e)988 1207 y Fy(y)1010 1214 y Fu(e)989 1264 y Fy(z)1010 1271 y Fu(e)983 1320 y Fy(w)1016 1327 y Fu(e)1041 1126 y Fi(1)1041 1199 y(C)1041 1224 y(C)1041 1251 y(A)1090 1235 y FB(\025)13 b FC(0)120 1417 y(lie)22 b(in)f(the)f(half-space)h(de\014ned)g(b)o(y)f(the)g(plane;)j(p)q(oin)o (ts)e(that)e(do)h(not)g(satisfy)f(this)120 1474 y(condition)e(do)e(not) g(lie)h(in)g(the)g(half-space.)191 1532 y(Clien)o(t-de\014ned)24 b(clip)g(planes)f(are)f(enabled)h(with)g(the)f(generic)h Fz(Enable)g FC(com-)120 1588 y(mand)14 b(and)g(disabled)h(with)f(the)g Fz(Disable)h FC(command.)k(The)14 b(v)m(alue)h(of)e(the)h(argumen)o(t) 120 1645 y(to)19 b(either)h(command)f(is)h Fr(CLIP)p 665 1645 V 15 w(PLANE)p Fh(i)e FC(where)i Fy(i)f FC(is)g(an)g(in)o (teger)h(b)q(et)o(w)o(een)f(0)g(and)h Fy(n)p FC(;)120 1701 y(sp)q(ecifying)f(a)e(v)m(alue)h(of)e Fy(i)h FC(enables)h(or)e (disables)i(the)f(plane)h(equation)f(with)g(index)h Fy(i)p FC(.)120 1758 y(The)e(constan)o(ts)e(ob)q(ey)i Fr(CLIP)p 615 1758 V 15 w(PLANE)p Fh(i)11 b FC(=)i Fr(CLIP)p 901 1758 V 15 w(PLANE0)c FC(+)i Fy(i)p FC(.)191 1816 y(If)19 b(the)g(primitiv)o(e)h(under)g(consideration)f(is)h(a)e(p)q(oin)o(t,)i (then)f(clipping)j(passes)c(it)120 1872 y(unc)o(hanged)e(if)f(it)g (lies)h(within)g(the)e(clip)j(v)o(olume;)d(otherwise,)h(it)g(is)g (discarded.)21 b(If)15 b(the)120 1928 y(primitiv)o(e)h(is)e(a)g(line)h (segmen)o(t,)e(then)i(clipping)h(do)q(es)e(nothing)h(to)e(it)h(if)g(it) g(lies)i(en)o(tirely)120 1985 y(within)h(the)f(clip)h(v)o(olume)f(and)g (discards)g(it)g(if)g(it)f(lies)i(en)o(tirely)g(outside)f(the)g(v)o (olume.)120 2041 y(If)f(part)f(of)g(the)h(line)h(segmen)o(t)e(lies)i (in)g(the)e(v)o(olume)h(and)g(part)f(lies)i(outside,)f(then)g(the)120 2098 y(line)h(segmen)o(t)e(is)h(clipp)q(ed)i(and)d(new)h(v)o(ertex)f (co)q(ordinates)g(are)g(computed)h(for)f(one)g(or)120 2154 y(b)q(oth)g(v)o(ertices.)20 b(A)14 b(clipp)q(ed)i(line)g(segmen)o (t)d(endp)q(oin)o(t)i(lies)h(on)d(b)q(oth)h(the)g(original)h(line)120 2211 y(segmen)o(t)g(and)h(the)f(b)q(oundary)g(of)g(the)h(clip)g(v)o (olume.)191 2269 y(This)e(clipping)i(pro)q(duces)f(a)e(v)m(alue,)i(0)d FB(\024)h Fy(t)g FB(\024)g FC(1,)h(for)f(eac)o(h)h(clipp)q(ed)i(v)o (ertex.)j(If)14 b(the)120 2325 y(co)q(ordinates)j(of)e(a)g(clipp)q(ed)k (v)o(ertex)c(are)h Fz(P)f FC(and)h(the)g(original)h(v)o(ertices')e(co)q (ordinates)120 2382 y(are)g Fz(P)232 2389 y Fq(1)267 2382 y FC(and)g Fz(P)391 2389 y Fq(2)411 2382 y FC(,)f(then)i Fy(t)g FC(is)f(giv)o(en)h(b)o(y)657 2488 y Fz(P)c FC(=)h Fy(t)p Fz(P)805 2495 y Fq(1)835 2488 y FC(+)d(\(1)g FB(\000)g Fy(t)p FC(\))p Fz(P)1046 2495 y Fq(2)1066 2488 y Fy(:)p eop %%Page: 38 47 38 46 bop 332 137 a FC(38)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)332 286 y FC(The)28 b(v)m(alue)i(of)d Fy(t)h FC(is)h(used)g(in)f(color)g(and)h(texture)e(co)q(ordinate)i (clipping)h(\(sec-)332 343 y(tion)16 b(2.13.8\).)403 402 y(If)h(the)h(primitiv)o(e)g(is)g(a)f(p)q(olygon,)h(then)g(it)f(is)h (passed)f(if)h(ev)o(ery)f(one)h(of)f(its)g(edges)332 459 y(lies)d(en)o(tirely)f(inside)h(the)f(clip)h(v)o(olume)f(and)f (either)h(clipp)q(ed)i(or)d(discarded)i(otherwise.)332 515 y(P)o(olygon)g(clipping)k(ma)o(y)c(cause)h(p)q(olygon)g(edges)g(to) f(b)q(e)h(clipp)q(ed,)i(but)e(b)q(ecause)g(p)q(oly-)332 572 y(gon)g(connectivit)o(y)h(m)o(ust)e(b)q(e)i(main)o(tained,)f(these) g(clipp)q(ed)j(edges)d(are)g(connected)h(b)o(y)332 628 y(new)j(edges)g(that)f(lie)i(along)f(the)g(clip)h(v)o(olume's)f(b)q (oundary)l(.)31 b(Th)o(us,)19 b(clipping)i(ma)o(y)332 685 y(require)15 b(the)e(in)o(tro)q(duction)i(of)e(new)h(v)o(ertices)h (in)o(to)e(a)h(p)q(olygon.)20 b(Edge)13 b(\015ags)h(are)f(asso-)332 741 y(ciated)18 b(with)g(these)f(v)o(ertices)h(so)f(that)f(edges)i(in)o (tro)q(duced)h(b)o(y)e(clipping)j(are)d(\015agged)332 797 y(as)c(b)q(oundary)i(\(edge)e(\015ag)h Fr(TRUE)p FC(\),)e(and)i(so)f(that)g(original)i(edges)f(of)f(the)h(p)q(olygon)g (that)332 854 y(b)q(ecome)i(cut)f(o\013)g(at)f(these)i(v)o(ertices)f (retain)h(their)f(original)i(\015ags.)403 913 y(If)23 b(it)g(happ)q(ens)h(that)e(a)g(p)q(olygon)h(in)o(tersects)g(an)g(edge)g (of)f(the)h(clip)i(v)o(olume's)332 970 y(b)q(oundary)l(,)16 b(then)g(the)f(clipp)q(ed)j(p)q(olygon)e(m)o(ust)f(include)j(a)d(p)q (oin)o(t)h(on)f(this)h(b)q(oundary)332 1026 y(edge.)40 b(This)22 b(p)q(oin)o(t)g(m)o(ust)f(lie)i(in)g(the)f(in)o(tersection)g (of)f(the)h(b)q(oundary)g(edge)g(and)332 1083 y(the)g(con)o(v)o(ex)g(h) o(ull)h(of)f(the)g(v)o(ertices)g(of)g(the)g(original)h(p)q(olygon.)40 b(W)l(e)22 b(imp)q(ose)h(this)332 1139 y(requiremen)o(t)16 b(b)q(ecause)g(the)f(p)q(olygon)h(ma)o(y)f(not)f(b)q(e)i(exactly)g (planar.)403 1199 y(A)11 b(line)i(segmen)o(t)e(or)g(p)q(olygon)h(whose) g(v)o(ertices)f(ha)o(v)o(e)h Fy(w)1348 1206 y Fu(c)1376 1199 y FC(v)m(alues)h(of)e(di\013ering)h(signs)332 1255 y(ma)o(y)h(generate)h(m)o(ultiple)i(connected)e(comp)q(onen)o(ts)g (after)g(clipping.)21 b(GL)14 b(implemen-)332 1312 y(tations)e(are)g (not)f(required)i(to)f(handle)h(this)g(situation.)19 b(That)12 b(is,)h(only)f(the)g(p)q(ortion)h(of)332 1368 y(the)h(primitiv)o(e)h(that)d(lies)j(in)g(the)e(region)h(of)f Fy(w)1121 1375 y Fu(c)1150 1368 y Fy(>)g FC(0)h(need)g(b)q(e)g(pro)q (duced)h(b)o(y)e(clipping.)403 1427 y(Primitiv)o(es)h(rendered)h(with)e (clip)i(planes)g(m)o(ust)e(satisfy)g(a)g(complemen)o(tarit)o(y)h(cri-) 332 1484 y(terion.)20 b(Supp)q(ose)c(a)e(single)i(clip)g(plane)f(with)g (co)q(e\016cien)o(ts)g(\()8 b Fy(p)1408 1467 y FG(0)1408 1495 y Fq(1)1473 1484 y Fy(p)1496 1467 y FG(0)1496 1495 y Fq(2)1561 1484 y Fy(p)1584 1467 y FG(0)1584 1495 y Fq(3)1649 1484 y Fy(p)1672 1467 y FG(0)1672 1495 y Fq(4)1699 1484 y FC(\))14 b(\(or)g(a)332 1540 y(n)o(um)o(b)q(er)e(of)f(similarly) i(sp)q(eci\014ed)h(clip)f(planes\))f(is)g(enabled)h(and)f(a)f(series)h (of)f(primitiv)o(es)332 1597 y(are)j(dra)o(wn.)19 b(Next,)c(supp)q(ose) g(that)e(the)i(original)h(clip)g(plane)f(is)g(resp)q(eci\014ed)i(with)d (co-)332 1653 y(e\016cien)o(ts)k(\()7 b FB(\000)p Fy(p)603 1637 y FG(0)603 1665 y Fq(1)669 1653 y FB(\000)p Fy(p)727 1637 y FG(0)727 1665 y Fq(2)792 1653 y FB(\000)p Fy(p)850 1637 y FG(0)850 1665 y Fq(3)916 1653 y FB(\000)p Fy(p)974 1637 y FG(0)974 1665 y Fq(4)1001 1653 y FC(\))17 b(\(and)g(corresp)q (ondingly)i(for)e(an)o(y)g(other)g(clip)332 1710 y(planes\))f(and)f (the)g(primitiv)o(es)h(are)e(dra)o(wn)h(again)g(\(and)f(the)h(GL)g(is)h (otherwise)f(in)g(the)332 1766 y(same)k(state\).)31 b(In)19 b(this)h(case,)g(primitiv)o(es)g(m)o(ust)f(not)g(b)q(e)g(missing)i(an)o (y)d(pixels,)k(nor)332 1823 y(ma)o(y)14 b(an)o(y)g(pixels)j(b)q(e)e (dra)o(wn)f(t)o(wice)h(in)g(regions)g(where)g(those)g(primitiv)o(es)g (are)g(cut)g(b)o(y)332 1879 y(the)g(clip)i(planes.)403 1938 y(Clipping)j(requires)g(at)e(least)g(6)g(sets)h(of)f(plane)h (equations)g(\(eac)o(h)f(consisting)i(of)332 1995 y(four)11 b(double-precision)j(\015oating-p)q(oin)o(t)e(co)q(e\016cien)o(ts\))g (and)f(at)f(least)i(6)e(corresp)q(onding)332 2051 y(bits)15 b(indicating)h(whic)o(h)f(of)e(these)i(clien)o(t-de\014ned)i(plane)e (equations)f(are)g(enabled.)21 b(In)332 2108 y(the)e(initial)i(state,)d (all)i(clien)o(t-de\014ned)i(plane)d(equation)h(co)q(e\016cien)o(ts)f (are)g(zero)f(and)332 2164 y(all)e(planes)g(are)f(disabled.)332 2324 y Fs(2.12)66 b(Curren)n(t)23 b(Raster)g(P)n(osition)332 2432 y FC(The)11 b Fv(curr)n(ent)i(r)n(aster)f(p)n(osition)f FC(is)h(used)f(b)o(y)g(commands)g(that)g(directly)h(a\013ect)f(pixels)i (in)332 2488 y(the)h(framebu\013er.)19 b(These)14 b(commands,)f(whic)o (h)h(b)o(ypass)g(v)o(ertex)f(transformation)f(and)p eop %%Page: 39 48 39 47 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(39)120 286 y(primitiv)o(e)20 b(assem)o(bly)l(,)g(are)e(describ)q (ed)j(in)e(the)g(next)f(c)o(hapter.)30 b(The)19 b(curren)o(t)g(raster) 120 343 y(p)q(osition,)d(ho)o(w)o(ev)o(er,)e(shares)h(some)g(of)g(the)g (c)o(haracteristics)h(of)e(a)h(v)o(ertex.)191 417 y(The)f(curren)o(t)f (raster)f(p)q(osition)j(consists)e(of)g(three)h(windo)o(w)f(co)q (ordinates)h Fy(x)1497 424 y Fu(w)1525 417 y FC(,)g Fy(y)1574 424 y Fu(w)1602 417 y FC(,)120 473 y(and)j Fy(z)231 480 y Fu(w)259 473 y FC(,)g(a)f(clip)i(co)q(ordinate)e Fy(w)672 480 y Fu(c)706 473 y FC(v)m(alue,)h(an)f(ey)o(e)h(co)q(ordinate)f (distance,)i(a)e(v)m(alid)i(bit,)120 530 y(and)f(asso)q(ciated)g(data)f (consisting)h(of)f(a)h(color)f(and)h(texture)f(co)q(ordinates.)24 b(It)17 b(is)g(set)120 586 y(using)f(one)g(of)e(the)i Fz(RasterP)o(os)e FC(commands:)234 749 y Fw(void)30 b Fz(RasterP)o(os)p FB(f)p Fz(234)p FB(gf)p Fz(sifd)p FB(g)p FC(\()e Fw(T)15 b Fv(c)n(o)n(or)n(ds)g FC(\))g Fw(;)234 805 y(void)30 b Fz(RasterP)o(os)p FB(f)p Fz(234)p FB(gf)p Fz(sifd)p FB(g)p Fz(v)p FC(\()e Fw(T)15 b Fv(c)n(o)n(or)n(ds)f FC(\))h Fw(;)120 968 y Fz(RasterP)o(os4)h FC(tak)o(es)g(four)g(v)m (alues)i(indicating)h Fy(x)p FC(,)d Fy(y)r FC(,)g Fy(z)r FC(,)h(and)g Fy(w)q FC(.)24 b Fz(RasterP)o(os3)16 b FC(\(or)120 1025 y Fz(RasterP)o(os2)p FC(\))g(is)h(analogous,)f(but)h(sets)f(only)h Fy(x)p FC(,)g Fy(y)r FC(,)f(and)h Fy(z)i FC(with)e Fy(w)g FC(implicitly)j(set)120 1081 y(to)15 b(1)g(\(or)f(only)i Fy(x)f FC(and)g Fy(y)j FC(with)d Fy(z)i FC(implicitly)i(set)c(to)f(0)h (and)g Fy(w)h FC(implicitly)j(set)c(to)f(1\).)191 1155 y(The)j(co)q(ordinates)f(are)g(treated)g(as)g(if)h(they)f(w)o(ere)g(sp) q(eci\014ed)j(in)e(a)f Fz(V)l(ertex)f FC(com-)120 1212 y(mand.)42 b(The)23 b Fy(x)p FC(,)h Fy(y)r FC(,)f Fy(z)r FC(,)h(and)f Fy(w)g FC(co)q(ordinates)g(are)f(transformed)g(b)o(y)g (the)h(curren)o(t)120 1268 y(mo)q(del-view)e(and)e(p)q(ersp)q(ectiv)o (e)i(matrices.)31 b(These)20 b(co)q(ordinates,)g(along)f(with)g(cur-) 120 1324 y(ren)o(t)e(v)m(alues,)h(are)e(used)i(to)e(generate)g(a)h (color)g(and)g(texture)f(co)q(ordinates)h(just)g(as)f(is)120 1381 y(done)c(for)f(a)h(v)o(ertex.)18 b(The)12 b(color)f(and)h(texture) f(co)q(ordinates)h(so)f(pro)q(duced)i(replace)g(the)120 1437 y(color)j(and)g(texture)g(co)q(ordinates)g(stored)f(in)i(the)e (curren)o(t)h(raster)f(p)q(osition's)h(asso)q(ci-)120 1494 y(ated)e(data.)19 b(The)14 b(distance)h(from)e(the)i(origin)f(of)g (the)g(ey)o(e)g(co)q(ordinate)h(system)e(to)h(the)120 1550 y(v)o(ertex)k(as)f(transformed)g(b)o(y)g(only)h(the)g(curren)o(t)g (mo)q(del-view)h(matrix)e(replaces)i(the)120 1607 y(curren)o(t)12 b(raster)f(distance.)19 b(This)12 b(distance)h(can)f(b)q(e)g(appro)o (ximated)g(\(see)f(section)h(3.9\).)191 1681 y(The)f(transformed)g(co)q (ordinates)g(are)g(passed)h(to)f(clipping)i(as)e(if)h(they)f(represen)o (ted)120 1737 y(a)18 b(p)q(oin)o(t.)29 b(If)18 b(the)g(\\p)q(oin)o(t")g (is)h(not)e(culled,)k(then)d(the)g(pro)s(jection)g(to)g(windo)o(w)g(co) q(or-)120 1793 y(dinates)e(is)f(computed)g(\(section)g(2.10\))f(and)h (sa)o(v)o(ed)f(as)h(the)f(curren)o(t)h(raster)f(p)q(osition,)120 1850 y(and)i(the)g(v)m(alid)i(bit)e(is)h(set.)22 b(If)16 b(the)g(\\p)q(oin)o(t")g(is)g(culled,)i(the)e(curren)o(t)g(raster)f(p)q (osition)120 1906 y(and)j(its)g(asso)q(ciated)f(data)g(b)q(ecome)h (indeterminate)h(and)f(the)f(v)m(alid)i(bit)f(is)g(cleared.)120 1963 y(Figure)e(2.7)e(summarizes)i(the)f(b)q(eha)o(vior)h(of)e(the)i (curren)o(t)f(raster)f(p)q(osition.)191 2037 y(The)20 b(curren)o(t)f(raster)g(p)q(osition)i(requires)f(\014v)o(e)g (single-precision)j(\015oating-p)q(oin)o(t)120 2093 y(v)m(alues)e(for)e (its)h Fy(x)428 2100 y Fu(w)457 2093 y FC(,)g Fy(y)512 2100 y Fu(w)541 2093 y FC(,)g(and)g Fy(z)688 2100 y Fu(w)736 2093 y FC(windo)o(w)g(co)q(ordinates,)h(its)f Fy(w)1267 2100 y Fu(c)1303 2093 y FC(clip)i(co)q(ordinate,)120 2149 y(and)15 b(its)g(ey)o(e)g(co)q(ordinate)g(distance,)g(a)f(single)i (v)m(alid)h(bit,)d(a)h(color)f(\(R)o(GBA)h(and)g(color)120 2206 y(index\),)h(and)e(texture)h(co)q(ordinates)f(for)g(asso)q(ciated) h(data.)k(In)c(the)g(initial)h(state,)e(the)120 2262 y(co)q(ordinates)i(and)g(texture)f(co)q(ordinates)h(are)f(b)q(oth)g (\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)g FC(1\))o(,)k(the)k(ey)o(e)f (co)q(ordinate)120 2319 y(distance)20 b(is)f(0,)g(the)f(v)m(alid)i(bit) f(is)g(set,)g(the)g(asso)q(ciated)g(R)o(GBA)f(color)h(is)g(\(1)p Fy(;)8 b FC(1)p Fy(;)g FC(1)p Fy(;)f FC(1\))120 2375 y(and)19 b(the)f(asso)q(ciated)h(color)f(index)i(color)e(is)h(1.)29 b(In)19 b(R)o(GBA)f(mo)q(de,)h(the)g(asso)q(ciated)120 2432 y(color)13 b(index)g(alw)o(a)o(ys)f(has)g(its)h(initial)h(v)m (alue;)g(in)f(color)g(index)g(mo)q(de,)g(the)f(R)o(GBA)h(color)120 2488 y(alw)o(a)o(ys)i(main)o(tains)g(its)h(initial)h(v)m(alue.)p eop %%Page: 40 49 40 48 bop 332 137 a FC(40)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 350 242 1459 2 v 350 1234 2 992 v 404 317 a 21313290 12148569 657817 9406791 49665228 37627166 startTexFig 404 317 a %%BeginDocument: pics/rasterpos.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave gsave matrix currentmatrix [1 0 0 1 411.024 223.937] concat newpath 0 0 M 0 43.1496 L 89.3228 43.1496 L 89.3228 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 409.024 221.937 M 409.024 271 L 502.346 271 L 502.346 221.937 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 411.024 223.937] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 12.1534 29.0626 M (Texture) 65.016 S 18.1564 7.06261 M (Matrix) 53.01 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 144.567 204.094 M 368.504 204.094 L 368.504 229.606 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 10.6063 499.472] concat newpath 0 0 M 0 23.4961 L 135.992 23.4961 L 135.992 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 8.60628 497.472 M 8.60628 526.882 L 148.598 526.882 L 148.598 497.472 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 10.6063 499.472] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 13.4831 9.40914 M (Rasterpos In) 109.026 S setmatrix grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 367.504 260.795] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 15.3307 181.161] concat newpath 0 0 M 0 63.496 L 128.669 63.496 L 128.669 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 13.3307 179.161 M 13.3307 248.571 L 146 248.571 L 146 179.161 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 15.3307 181.161] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 31.8356 49.4091 M (Current) 64.998 S 31.8266 27.4091 M (Texture) 65.016 S 11.8286 5.40908 M (Coordinates) 105.012 S setmatrix grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 16.8307 165.654 M 144 165.654 L 144 258.661 L 16.8307 258.661 L closepath stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 226.858 397.968 M 226.858 468.48 L 383.189 468.48 L 383.189 397.968 L closepath stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 296.89 316.504 M 411.724 316.504 L 411.724 373.008 L 296.89 373.008 L closepath stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 240.945 218.268 M 324.787 218.268 L 324.787 272.945 L 240.945 272.945 L closepath stroke grestore gsave matrix currentmatrix [86.6772 0 0 54.6772 410.646 218.268] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 15.8661 402.819] concat newpath 0 0 M 0 40.315 L 129.008 40.315 L 129.008 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 13.8661 400.819 M 13.8661 447.047 L 146.874 447.047 L 146.874 400.819 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 15.8661 402.819] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 32.0049 26.228 M (Current) 64.998 S 33.4989 4.22805 M (Normal) 62.01 S setmatrix grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 17.0079 385.512 M 144.177 385.512 L 144.177 455.843 L 17.0079 455.843 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 16.7795 299.598] concat newpath 0 0 M 0 43.1496 L 126.173 43.1496 L 126.173 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 14.7795 297.598 M 14.7795 346.661 L 144.953 346.661 L 144.953 297.598 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 16.7795 299.598] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 30.5876 29.0626 M (Current) 64.998 S 39.5876 7.06261 M (Color) 46.998 S setmatrix grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 17.0079 286.299 M 144.177 286.299 L 144.177 356.63 L 17.0079 356.63 L closepath stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 369.669 230.772] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 325.984 260.787 M 368.504 260.787 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 411.024 246.614 M 396.85 246.614 L 368.504 260.787 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 298.638 360 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 255.118 399.685 M 255.118 360 L 279.638 360 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 295.803 328.819 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 144.567 328.819 M 276.803 328.819 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 437.701 344.157] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 437.701 315.811] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 255.118 328.819 M 255.118 300.472 L 439.37 300.472 L 439.37 314.646 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 411.024 342.992 M 439.37 342.992 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 297.638 333.614] concat newpath 0 0 M 0 20.4724 L 112 20.4724 L 112 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 295.638 331.614 M 295.638 358 L 411.638 358 L 411.638 331.614 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 297.638 333.614] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 20.504 6.38546 M (Lighting) 70.992 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 226.772 412.984] concat newpath 0 0 M 0 43.1496 L 157.354 43.1496 L 157.354 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 224.772 410.984 M 224.772 460.047 L 386.126 460.047 L 386.126 410.984 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 226.772 412.984] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 17.6572 29.0626 M (Vertex/Normal) 122.04 S 12.6712 7.06261 M (Transformation) 132.012 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 396.85 376.008 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 382.677 422.362 M 396.85 422.362 L 396.85 395.008 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 196.756 230.772] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 196.756 261.953] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 240.945 243.78 M 226.772 243.78 L 198.425 260.787 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 198.425 226.772 M 170.079 226.772 L 170.079 515.906 L 141.732 515.906 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 227.772 433.701 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 170.079 433.701 M 208.772 433.701 L stroke grestore gsave 0 0 0 setrgbcolor newpath 168.409 429.449 M 164.659 431.699 L 164.409 433.449 L 164.409 433.449 L 164.409 435.37 L 164.409 435.37 L 166.659 439.12 L 168.409 439.37 L 168.409 439.37 L 170.331 439.37 L 170.331 439.37 L 174.081 437.12 L 174.331 435.37 L 174.331 435.37 L 174.331 433.449 L 174.331 433.449 L 172.081 429.699 L 170.331 429.449 L 170.331 429.449 L 168.409 429.449 L closepath eofill 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor newpath 256.283 325.984 M 252.533 328.234 L 252.283 329.984 L 252.283 329.984 L 252.283 331.906 L 252.283 331.906 L 254.533 335.656 L 256.283 335.906 L 256.283 335.906 L 258.205 335.906 L 258.205 335.906 L 261.955 333.656 L 262.205 331.906 L 262.205 331.906 L 262.205 329.984 L 262.205 329.984 L 259.955 326.234 L 258.205 325.984 L 258.205 325.984 L 256.283 325.984 L closepath eofill 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 195.591 257.953 M 195.591 286.299 L 496.063 286.299 L 496.063 422.362 L 396.85 422.362 L stroke grestore gsave 0 0 0 setrgbcolor newpath 398.016 419.528 M 394.266 421.778 L 394.016 423.528 L 394.016 423.528 L 394.016 425.449 L 394.016 425.449 L 396.266 429.199 L 398.016 429.449 L 398.016 429.449 L 399.937 429.449 L 399.937 429.449 L 403.687 427.199 L 403.937 425.449 L 403.937 425.449 L 403.937 423.528 L 403.937 423.528 L 401.687 419.778 L 399.937 419.528 L 399.937 419.528 L 398.016 419.528 L closepath eofill 0 0 0 setrgbcolor grestore gsave gsave matrix currentmatrix [1 0 0 1 240.945 232.441] concat newpath 0 0 M 0 20.4724 L 83.6535 20.4724 L 83.6535 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 238.945 230.441 M 238.945 256.826 L 326.598 256.826 L 326.598 230.441 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 240.945 232.441] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 10.3177 6.38543 M (Texgen) 63.018 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 227.772 413.858 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 144.567 413.858 M 208.772 413.858 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 466.047 329.984] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 283.717 485.039 M 353.386 485.039 L 353.386 528.378 L 283.717 528.378 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 286.299 496.063] concat newpath 0 0 M 0 20.4724 L 66.6457 20.4724 L 66.6457 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 284.299 494.063 M 284.299 520.448 L 354.945 520.448 L 354.945 494.063 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 286.299 496.063] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 16.3218 6.38546 M (Clip) 34.002 S setmatrix grestore gsave matrix currentmatrix [86.6772 0 0 43.3386 382.551 485.039] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 385.512 493.228] concat newpath 0 0 M 0 23.307 L 83.6536 23.307 L 83.6536 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 383.512 491.228 M 383.512 520.448 L 471.165 520.448 L 471.165 491.228 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 385.512 493.228] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 11.3168 9.22008 M (Project) 61.02 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 383.677 507.402 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 354.331 507.402 M 364.677 507.402 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 654.89 145.811] concat newpath 0 0 M 0 68 L 98.9921 68 L 98.9921 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 652.89 143.811 M 652.89 217.724 L 755.882 217.724 L 755.882 143.811 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 654.89 145.811] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 16.9971 53.913 M (Current) 64.998 S 21.4881 31.913 M (Raster) 56.016 S 13.9911 9.91303 M (Position) 71.01 S setmatrix grestore gsave matrix currentmatrix [72.504 0 0 -45.6693 555.213 556.724] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 569.047 524.559] concat newpath 0 0 M 0 24 L 45.02 24 L 45.02 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 567.047 522.559 M 567.047 550.559 L 616.067 550.559 L 616.067 522.559 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 569.047 524.559] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Valid) 43.02 S setmatrix grestore gsave matrix currentmatrix [213.984 0 0 427.528 539.906 143.811] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth [12 4] 0 setdash gsave stroke grestore grestore gsave matrix currentmatrix [126.766 0 0 74.3307 556.123 423.315] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 554.071 438.496] concat newpath 0 0 M 0 43.1496 L 127.686 43.1496 L 127.686 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 552.071 436.496 M 552.071 485.559 L 683.757 485.559 L 683.757 436.496 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 554.071 438.496] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 35.8352 29.0626 M (Raster) 56.016 S 28.3382 7.06264 M (Position) 71.01 S setmatrix grestore gsave matrix currentmatrix [126.43 0 0 74.3307 554.803 325.984] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 552.756 341.165] concat newpath 0 0 M 0 43.1496 L 127.347 43.1496 L 127.347 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 550.756 339.165 M 550.756 388.228 L 682.103 388.228 L 682.103 339.165 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 552.756 341.165] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 35.6657 29.0626 M (Raster) 56.016 S 26.1617 7.06264 M (Distance) 75.024 S setmatrix grestore gsave matrix currentmatrix [126.43 0 0 74.3307 557.98 226.772] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 555.933 241.953] concat newpath 0 0 M 0 43.1496 L 127.347 43.1496 L 127.347 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 553.933 239.953 M 553.933 289.015 L 685.28 289.015 L 685.28 239.953 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 555.933 241.953] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 15.6587 29.0627 M (Associated) 96.03 S 44.1707 7.06269 M (Data) 39.006 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 556.591 541.417 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 240.945 467.717 M 240.945 541.417 L 537.591 541.417 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 556.591 462.047 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 467.717 507.402 M 510.236 507.402 L 510.236 462.047 L 537.591 462.047 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 556.591 362.835 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 382.677 442.205 M 524.409 442.205 L 524.409 362.835 L 537.591 362.835 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 556.591 280.63 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 467.717 331.654 M 521.575 331.654 L 521.575 280.63 L 537.591 280.63 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 559.425 243.78 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 496.063 243.78 M 540.425 243.78 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 287.299 507.402 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 240.945 507.402 M 268.299 507.402 L stroke grestore gsave 0 0 0 setrgbcolor newpath 242.11 501.732 M 238.36 503.982 L 238.11 505.732 L 238.11 505.732 L 238.11 507.654 L 238.11 507.654 L 240.36 511.404 L 242.11 511.654 L 242.11 511.654 L 244.031 511.654 L 244.031 511.654 L 247.781 509.404 L 248.031 507.654 L 248.031 507.654 L 248.031 505.732 L 248.031 505.732 L 245.781 501.982 L 244.031 501.732 L 244.031 501.732 L 242.11 501.732 L closepath eofill 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 755.016 535.748 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 629.291 535.748 M 736.016 535.748 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 755.016 462.047 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 683.15 462.047 M 736.016 462.047 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 755.016 360 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 683.15 360 M 736.016 360 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 755.016 263.622 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 685.984 263.622 M 736.016 263.622 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 436.535 345.827 M 464.882 331.654 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1205 a Fm(Figure)e(2.7.)j(The)e(curren)o(t)g(raster)g(p)q(osition) e(and)h(ho)o(w)f(it)h(is)g(set.)p 1807 1234 2 992 v 350 1236 1459 2 v 332 1511 a Fs(2.13)66 b(Colors)22 b(and)h(Coloring)332 1706 y FC(Figure)16 b(2.8)f(diagrams)g(the)g(pro)q(cessing)i(of)e (colors)h(b)q(efore)f(rasterization.)21 b(Incoming)332 1762 y(colors)12 b(arriv)o(e)g(in)h(one)g(of)e(sev)o(eral)i(formats.)k (T)l(able)c(2.6)f(summarizes)g(the)g(con)o(v)o(ersions)332 1819 y(that)i(tak)o(e)g(place)i(on)f(R,)g(G,)f(B,)g(and)h(A)g(comp)q (onen)o(ts)g(dep)q(ending)i(on)e(whic)o(h)g(v)o(ersion)332 1875 y(of)f(the)h Fz(Color)g FC(command)f(w)o(as)g(in)o(v)o(ok)o(ed)h (to)f(sp)q(ecify)i(the)f(comp)q(onen)o(ts.)20 b(As)15 b(a)f(result)332 1932 y(of)i(limited)i(precision,)g(some)e(con)o(v)o (erted)g(v)m(alues)h(will)h(not)e(b)q(e)h(represen)o(ted)f(exactly)l(.) 332 1988 y(In)g(color)f(index)i(mo)q(de,)e(a)g(single-v)m(alued)j (color)d(index)i(is)e(not)g(mapp)q(ed.)403 2093 y(Next,)i(ligh)o(ting,) i(if)g(enabled,)g(pro)q(duces)f(a)g(color.)27 b(If)18 b(ligh)o(ting)h(is)f(disabled,)h(the)332 2149 y(curren)o(t)i(color)g (is)h(used)g(in)g(further)f(pro)q(cessing.)38 b(After)21 b(ligh)o(ting,)i(R)o(GBA)e(colors)332 2206 y(are)e(clamp)q(ed)h(to)e (the)i(range)e([0)p Fy(;)8 b FC(1].)29 b(A)19 b(color)g(index)i(is)e (con)o(v)o(erted)g(to)f(\014xed-p)q(oin)o(t)332 2262 y(and)e(then)h(its)f(in)o(teger)h(p)q(ortion)f(is)h(mask)o(ed)f(\(see)g (section)h(2.13.6\).)j(After)c(clamping)332 2319 y(or)k(masking,)h(a)f (primitiv)o(e)h(ma)o(y)f(b)q(e)h Fv(\015atshade)n(d)p FC(,)g(indicating)h(that)d(all)i(v)o(ertices)g(of)332 2375 y(the)c(primitiv)o(e)h(are)f(to)f(ha)o(v)o(e)h(the)g(same)f (color.)25 b(Finally)l(,)19 b(if)e(a)g(primitiv)o(e)h(is)f(clipp)q(ed,) 332 2432 y(then)23 b(colors)f(\(and)g(texture)g(co)q(ordinates\))h(m)o (ust)e(b)q(e)i(computed)g(at)f(the)g(v)o(ertices)332 2488 y(in)o(tro)q(duced)16 b(or)f(mo)q(di\014ed)i(b)o(y)e(clipping.)p eop %%Page: 41 50 41 49 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(41)p 139 659 1459 2 v 139 2020 2 1362 v 193 733 a 21313290 16411227 460472 6841303 51638681 46376140 startTexFig 193 733 a %%BeginDocument: pics/color.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave gsave matrix currentmatrix [1 0 0 1 19 649] concat newpath 0 0 M 0 18 L 48.998 18 L 48.998 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 17 647 M 17 670.913 L 69.998 670.913 L 69.998 647 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 19 649] concat 1 3.91304 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 3.91304 M (Color) 46.998 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 321 624 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 120 624 M 302 624 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 47 548] concat newpath 0 0 M 0 24 L 69.536 24 L 69.536 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 45 546 M 45 575.913 L 118.536 575.913 L 118.536 546 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 47 548] concat 1 3.91304 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 3.91304 M ([0,2) 31.014 S 32.014 9.91304 M (k) 10.008 S 42.022 3.91304 M (-1]) 26.514 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 51 421] concat newpath 0 0 M 0 24 L 69.032 24 L 69.032 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 49 419 M 49 447 L 122.032 447 L 122.032 419 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 51 421] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M ([0.0,1.0]) 67.032 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 27 509] concat newpath 0 0 M 0 24 L 54.992 24 L 54.992 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 25 507 M 25 535 L 83.992 535 L 83.992 507 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 27 509] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (RGBA) 52.992 S setmatrix grestore gsave matrix currentmatrix [112 0 0 64 168 528] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 321 432 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 120 432 M 302 432 L stroke grestore gsave matrix currentmatrix [112 0 0 64 384 364] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 403 381] concat newpath 0 0 M 0 24 L 72.992 24 L 72.992 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 401 379 M 401 407 L 477.992 407 L 477.992 379 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 403 381] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Lighting) 70.992 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 537 396 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 496 396 M 518 396 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [6 0 0 6 542 398] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 584 408 M 540 424 L stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [6 0 0 6 542 430] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [6 0 0 6 590 410] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 657 420 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 588 416 M 588 420 L 638 420 L stroke grestore gsave matrix currentmatrix [96 0 0 64 656 388] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 663 397] concat newpath 0 0 M 0 46 L 79.004 46 L 79.004 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 661 395 M 661 445 L 744.004 445 L 744.004 395 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 663 397] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 25.913 M (Clamp to) 77.004 S 3.484 3.91304 M 3.484 3.91304 M ([0.0, 1.0]) 72.036 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 715 280 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 752 420 M 784 420 L 784 280 L 734 280 L stroke grestore gsave matrix currentmatrix [104 0 0 64 640 152] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 643 169] concat newpath 0 0 M 0 24 L 97.022 24 L 97.022 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 641 167 M 641 195 L 742.022 195 L 742.022 167 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 643 169] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Flatshade?) 95.022 S setmatrix grestore gsave matrix currentmatrix [48 0 0 32 668 264] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 692 265 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 692 216 M 692 246 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 559 280 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 668 280 M 578 280 L stroke grestore gsave matrix currentmatrix [112 0 0 64 448 248] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [112 0 0 64 448 120] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 467 125] concat newpath 0 0 M 0 42 L 70.994 42 L 70.994 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 465 123 M 465 170.273 L 539.994 170.273 L 539.994 123 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 467 125] concat 1 27.2727 M /Helvetica-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.2727 M (Primitive) 68.994 S 2.989 3.27273 M 2.989 3.27273 M (Clipping) 65.016 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 467 253] concat newpath 0 0 M 0 42 L 74 42 L 74 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 465 251 M 465 298.913 L 543 298.913 L 543 251 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 467 253] concat 13.501 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 13.501 27.913 M (Color) 46.998 S 1 3.91304 M 1 3.91304 M (Clipping) 72 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 288 215 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 448 280 M 288 280 L 288 234 L stroke grestore gsave matrix currentmatrix [112 0 0 64 236 151] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 241 160] concat newpath 0 0 M 0 42 L 98.516 42 L 98.516 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 239 158 M 239 205.913 L 341.516 205.913 L 341.516 158 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 241 160] concat 4.258 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 4.258 27.913 M (Convert to) 90 S 1 3.91304 M 1 3.91304 M (fixed-point) 96.516 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 292 152 M 292 136 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 607 394] concat newpath 0 0 M 0 19 L 43.216 19 L 43.216 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 605 392 M 605 415 L 652.216 415 L 652.216 392 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 607 394] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (RGBA) 41.216 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 321 560 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 280 560 M 302 560 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 175 537] concat newpath 0 0 M 0 42 L 92 42 L 92 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 173 535 M 173 582.913 L 269 582.913 L 269 535 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 175 537] concat 1 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.913 M (Convert to) 90 S 12.484 3.91304 M 12.484 3.91304 M ([0.0,1.0]) 67.032 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 169 560 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 120 560 M 150 560 L stroke grestore gsave matrix currentmatrix [112 0 0 64 168 640] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 321 672 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 280 672 M 302 672 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 175 649] concat newpath 0 0 M 0 42 L 92 42 L 92 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 173 647 M 173 694.913 L 269 694.913 L 269 647 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 175 649] concat 1 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.913 M (Convert to) 90 S 27.001 3.91304 M 27.001 3.91304 M (float) 37.998 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 169 672 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 120 672 M 150 672 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 47 675] concat newpath 0 0 M 0 30 L 70.526 30 L 70.526 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 45 673 M 45 707 L 119.526 707 L 119.526 673 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 47 675] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M ([0,2) 31.014 S 31.014 9.91304 M (n) 10.998 S 42.012 3.91304 M (-1]) 26.514 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 19 629] concat newpath 0 0 M 0 18 L 49.016 18 L 49.016 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 17 627 M 17 650.913 L 70.016 650.913 L 70.016 627 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 19 629] concat 1 3.91304 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 3.91304 M (Index) 47.016 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 39 599] concat newpath 0 0 M 0 30 L 85.538 30 L 85.538 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 37 597 M 37 631 L 126.538 631 L 126.538 597 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 39 599] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M ([0.0,2) 46.026 S 46.026 9.91304 M (n) 10.998 S 57.024 3.91304 M (-1]) 26.514 S setmatrix grestore gsave matrix currentmatrix [96 0 0 64 656 472] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 663 475] concat newpath 0 0 M 0 52 L 90.542 52 L 90.542 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 661 473 M 661 529 L 755.542 529 L 755.542 473 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 663 475] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 31.913 M (Mask to) 67.014 S 1 3.91304 M 1 3.91304 M ([0.0, 2) 51.03 S 52.03 9.91304 M (n) 10.998 S 63.028 3.91304 M (-1]) 26.514 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 657 504 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 588 420 M 588 504 L 638 504 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 603 506] concat newpath 0 0 M 0 19 L 38.554 19 L 38.554 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 601 504 M 601 527 L 643.554 527 L 643.554 504 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 603 506] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Color) 36.554 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 607 482] concat newpath 0 0 M 0 19 L 38.568 19 L 38.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 605 480 M 605 503 L 647.568 503 L 647.568 480 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 607 482] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Index) 36.568 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 752 504 M 784 504 L 784 420 L stroke grestore gsave matrix currentmatrix [112 0 0 64 108 152] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 113 161] concat newpath 0 0 M 0 42 L 98.516 42 L 98.516 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 111 159 M 111 206.913 L 213.516 206.913 L 213.516 159 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 113 161] concat 4.258 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 4.258 27.913 M (Convert to) 90 S 1 3.91304 M 1 3.91304 M (fixed-point) 96.516 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 164 215 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 288 280 M 164 280 L 164 234 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 164 152 M 164 136 L 292 136 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 228 103 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 228 136 M 228 122 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 303 226] concat newpath 0 0 M 0 19 L 43.216 19 L 43.216 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 301 224 M 301 247 L 348.216 247 L 348.216 224 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 303 226] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (RGBA) 41.216 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 111 223] concat newpath 0 0 M 0 38 L 38.568 38 L 38.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 109 221 M 109 263 L 151.568 263 L 151.568 221 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 111 223] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 21.4706 M (Color) 36.554 S 0 2.47059 M (Index) 36.568 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 508 249 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth [4] 0 setdash newpath 508 184 M 508 230 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 320 432 M 320 560 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 320 624 M 320 672 L stroke grestore gsave matrix currentmatrix [160 0 0 96 360 488] concat B setmatrix 0 0 0 setrgbcolor 4.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 363 501] concat newpath 0 0 M 0 66 L 66.998 66 L 66.998 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 361 499 M 361 570.913 L 431.998 570.913 L 431.998 499 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 363 501] concat 1 51.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 51.913 M (Current) 64.998 S 7.003 27.913 M 7.003 27.913 M (RGBA) 52.992 S 10 3.91304 M 10 3.91304 M (Color) 46.998 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 447 501] concat newpath 0 0 M 0 66 L 66.998 66 L 66.998 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 445 499 M 445 570.913 L 515.998 570.913 L 515.998 499 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 447 501] concat 1 51.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 51.913 M (Current) 64.998 S 10 27.913 M 10 27.913 M (Color) 46.998 S 9.991 3.91304 M 9.991 3.91304 M (Index) 47.016 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 440 488 M 440 584 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 361 536 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 320 536 M 342 536 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 480 583 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 320 648 M 480 648 L 480 602 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 400 488 M 400 464 L 480 464 L 480 488 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 440 427 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 440 464 M 440 446 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 544 435 translate -90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 480 464 M 544 464 L 544 454 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 7 468] concat newpath 0 0 M 0 24 L 110.576 24 L 110.576 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 5 466 M 5 495.913 L 119.576 495.913 L 119.576 466 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 7 468] concat 1 3.91304 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 3.91304 M ([-2) 26.514 S 27.514 9.91304 M (k) 10.008 S 37.522 3.91304 M (-1,2) 35.532 S 73.054 9.91304 M (k) 10.008 S 83.062 3.91304 M (-1]) 26.514 S setmatrix grestore gsave matrix currentmatrix [112 0 0 64 168 448] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 175 457] concat newpath 0 0 M 0 42 L 92 42 L 92 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 173 455 M 173 502.913 L 269 502.913 L 269 455 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 175 457] concat 1 27.913 M /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 1 27.913 M (Convert to) 90 S 7.228 3.91304 M 7.228 3.91304 M ([-1.0,1.0]) 77.544 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 169 480 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 120 480 M 150 480 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 321 480 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 280 480 M 302 480 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1891 a Fm(Figure)17 b(2.8.)26 b(Pro)q(cessing)18 b(of)e(colors.)27 b Fh(n)17 b Fm(is)g(the)g(n)o(um)o(b)q(er)f(of)h (bits)f(in)h(a)f(color)h(index;)178 1941 y Fh(m)d Fm(is)h(the)g(n)o(um) o(b)q(er)f(of)f(bits)i(an)f(R,)g(G,)f(B,)h(or)h(A)f(comp)q(onen)o(t.)19 b(See)d(T)m(able)d(2.6)h(for)g(the)178 1991 y(in)o(terpretation)g(of)f Fh(k)q Fm(.)p 1595 2020 2 1362 v 139 2022 1459 2 v eop %%Page: 42 51 42 50 bop 332 137 a FC(42)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 762 242 634 2 v 761 299 2 57 v 787 282 a FC(GL)g(T)o(yp)q(e)p 993 299 V 117 w(Con)o(v)o(ersion) p 1395 299 V 762 301 634 2 v 762 309 V 761 365 2 57 v 787 348 a(ub)o(yte)p 993 365 V 198 w Fy(c=)p FC(\(2)1180 332 y Fq(8)1208 348 y FB(\000)11 b FC(1\))p 1395 365 V 762 367 634 2 v 761 423 2 57 v 787 406 a(b)o(yte)p 993 423 V 155 w(\(2)p Fy(c)e FC(+)h(1\))p Fy(=)p FC(\(2)1248 390 y Fq(8)1277 406 y FB(\000)g FC(1\))p 1395 423 V 762 425 634 2 v 761 482 2 57 v 787 465 a(ushort)p 993 482 V 173 w Fy(c=)p FC(\(2)1171 448 y Fq(16)1217 465 y FB(\000)h FC(1\))p 1395 482 V 762 483 634 2 v 761 540 2 57 v 787 523 a(short)p 993 540 V 130 w(\(2)p Fy(c)e FC(+)h(1\))p Fy(=)p FC(\(2)1239 506 y Fq(16)1285 523 y FB(\000)h FC(1\))p 1395 540 V 762 541 634 2 v 761 598 2 57 v 787 581 a(uin)o(t)p 993 598 V 221 w Fy(c=)p FC(\(2)1171 564 y Fq(32)1217 581 y FB(\000)g FC(1\))p 1395 598 V 762 599 634 2 v 761 656 2 57 v 787 639 a(in)o(t)p 993 656 V 178 w(\(2)p Fy(c)e FC(+)h(1\))p Fy(=)p FC(\(2)1239 622 y Fq(32)1285 639 y FB(\000)h FC(1\))p 1395 656 V 762 658 634 2 v 761 714 2 57 v 787 697 a(\015oat)p 993 714 V 309 w Fy(c)p 1395 714 V 762 716 634 2 v 761 772 2 57 v 787 755 a FC(double)p 993 772 V 268 w Fy(c)p 1395 772 V 762 774 634 2 v 762 782 V 332 859 a FC(T)l(able)17 b(2.6:)j(Comp)q(onen)o(t)c(con)o(v)o (ersions.)22 b(Color,)15 b(normal,)h(and)g(depth)h(comp)q(onen)o(ts,) 332 916 y(\()p Fy(c)p FC(\),)12 b(are)h(con)o(v)o(erted)f(to)g(an)h(in) o(ternal)h(\015oating-p)q(oin)o(t)f(represen)o(tation,)g(\()p Fy(f)5 b FC(\),)13 b(using)g(the)332 972 y(equations)j(in)g(this)g (table.)21 b(All)16 b(arithmetic)g(is)g(done)g(in)g(the)f(in)o(ternal)i (\015oating)e(p)q(oin)o(t)332 1029 y(format.)22 b(These)17 b(con)o(v)o(ersions)f(apply)h(to)f(comp)q(onen)o(ts)g(sp)q(eci\014ed)j (as)d(parameters)f(to)332 1085 y(GL)g(commands)g(and)h(to)e(comp)q (onen)o(ts)i(in)g(pixel)g(data.)k(The)15 b(equations)h(remain)f(the)332 1142 y(same)f(ev)o(en)h(if)g(the)g(implemen)o(ted)h(ranges)f(of)f(the)g (GL)h(data)f(t)o(yp)q(es)h(are)f(greater)g(than)332 1198 y(the)h(minim)o(um)i(required)f(ranges.)j(\(Refer)d(to)e(table)i(2.2\)) 332 1408 y Fl(2.13.1)55 b(Ligh)n(ting)332 1513 y FC(GL)14 b(ligh)o(ting)h(computes)f(a)f(color)h(for)f(eac)o(h)h(v)o(ertex)f(sen) o(t)h(to)f(the)h(GL.)f(This)h(is)h(accom-)332 1569 y(plished)i(b)o(y)d (applying)i(an)f(equation)g(de\014ned)h(b)o(y)e(a)h(clien)o(t-sp)q (eci\014ed)j(ligh)o(ting)e(mo)q(del)332 1626 y(to)i(a)h(collection)h (of)f(parameters)e(that)i(can)f(include)k(the)c(v)o(ertex)h(co)q (ordinates,)g(the)332 1682 y(co)q(ordinates)12 b(of)f(one)h(or)f(more)g (ligh)o(t)h(sources,)g(the)g(curren)o(t)g(normal,)f(and)h(parameters) 332 1739 y(de\014ning)k(the)f(c)o(haracteristics)g(of)f(the)h(ligh)o(t) h(sources)e(and)h(a)g(curren)o(t)f(material.)20 b(The)332 1795 y(follo)o(wing)e(discussion)g(assumes)f(that)f(the)h(GL)g(is)g(in) h(R)o(GBA)f(mo)q(de.)25 b(\(Color)16 b(index)332 1852 y(ligh)o(ting)g(is)g(describ)q(ed)h(in)f(section)g(2.13.5.\))403 1918 y(Ligh)o(ting)g(ma)o(y)e(b)q(e)i(in)g(one)g(of)e(t)o(w)o(o)g (states:)388 2052 y(1.)22 b(Ligh)o(ting)14 b(O\013.)20 b(In)14 b(this)g(state)f(the)g(color)h(assigned)g(to)f(a)h(v)o(ertex)f (is)h(the)g(curren)o(t)446 2108 y(color.)388 2242 y(2.)22 b(Ligh)o(ting)c(On.)28 b(In)19 b(this)f(state,)f(a)g(v)o(ertex's)g (color)h(is)g(found)g(b)o(y)g(computing)g(a)446 2298 y(v)m(alue)e(giv)o(en)g(the)f(curren)o(t)g(ligh)o(ting)i(parameters.) 332 2432 y(Ligh)o(ting)k(is)g(turned)g(either)g(on)f(or)g(o\013)g (using)h(the)f(generic)i Fz(Enable)f FC(or)f Fz(Disable)332 2488 y FC(commands)15 b(with)h(the)f(sym)o(b)q(olic)h(v)m(alue)h Fr(LIGHTING)p FC(.)p eop %%Page: 43 52 43 51 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(43)120 286 y Fz(Ligh)o(ting)20 b(Op)q(eration)120 382 y FC(A)c(ligh)o(ting)i(parameter)d(is)h(of)g(one)g(of)f(\014v)o(e)i (t)o(yp)q(es:)k(color,)16 b(p)q(osition,)h(direction,)g(real,)120 438 y(or)f(b)q(o)q(olean.)23 b(A)16 b(color)h(parameter)e(consists)h (of)g(four)f(\015oating-p)q(oin)o(t)i(elemen)o(ts,)g(one)120 494 y(for)j(eac)o(h)h(of)g(R,)f(G,)g(B,)h(and)g(A,)f(in)i(that)e (order.)36 b(There)21 b(are)f(no)h(restrictions)g(on)120 551 y(the)f(allo)o(w)o(able)h(v)m(alues)g(for)f(these)g(parameters.)33 b(A)20 b(p)q(osition)h(parameter)f(consists)120 607 y(of)f(four)g (\015oating-p)q(oin)o(t)g(co)q(ordinates)h(\()p Fy(x)p FC(,)f Fy(y)r FC(,)h Fy(z)r FC(,)f(and)h Fy(w)q FC(\))e(that)h(sp)q (ecify)h(a)f(p)q(osition)120 664 y(in)e(ob)s(ject)f(co)q(ordinates)h (\()p Fy(w)g FC(ma)o(y)l(,)e(in)i(some)f(cases,)g(b)q(e)h(zero,)f (indicating)j(a)d(p)q(oin)o(t)g(at)120 720 y(in\014nit)o(y)e(in)e(the)g (direction)h(giv)o(en)f(b)o(y)g Fy(x)p FC(,)g Fy(y)r FC(,)g(and)g Fy(z)r FC(\).)19 b(A)11 b(direction)i(parameter)f (consists)120 777 y(of)17 b(three)g(\015oating-p)q(oin)o(t)g(co)q (ordinates)g(\()p Fy(x)p FC(,)g Fy(y)r FC(,)f(and)h Fy(z)r FC(\))g(that)f(sp)q(ecify)i(a)f(direction)h(in)120 833 y(ob)s(ject)11 b(co)q(ordinates.)18 b(A)11 b(real)g(parameter)f(is)h (one)g(\015oating-p)q(oin)o(t)h(v)m(alue.)19 b(The)11 b(v)m(arious)120 890 y(v)m(alues)k(and)g(their)f(t)o(yp)q(es)g(are)f (summarized)i(in)g(T)l(able)g(2.7.)j(The)c(result)g(of)g(a)g(ligh)o (ting)120 946 y(computation)d(is)g(unde\014ned)h(if)f(a)g(v)m(alue)g (for)f(a)h(parameter)e(is)i(sp)q(eci\014ed)i(that)d(is)h(outside)120 1003 y(the)16 b(range)f(giv)o(en)g(for)g(that)f(parameter)h(in)h(the)f (table.)191 1064 y(There)d(are)g Fy(n)g FC(ligh)o(t)g(sources,)h (indexed)g(b)o(y)f Fy(i)h FC(=)g(0)p Fy(;)8 b(:)g(:)g(:)t(;)g(n)t FB(\000)t FC(1.)18 b(\()p Fy(n)11 b FC(is)i(an)f(implemen-)120 1120 y(tation)j(dep)q(enden)o(t)h(maxim)o(um)f(that)f(m)o(ust)h(b)q(e)g (at)f(least)h(8.\))k(Note)c(that)f(the)h(default)120 1177 y(v)m(alues)i(for)d Fz(d)354 1184 y Fu(cli)410 1177 y FC(and)h Fz(s)519 1184 y Fu(cli)574 1177 y FC(di\013er)h(for)e Fy(i)f FC(=)g(0)i(and)g Fy(i)d(>)h FC(0.)191 1238 y(Before)19 b(sp)q(ecifying)i(the)f(w)o(a)o(y)e(that)h(ligh)o(ting)h(computes)g (colors,)g(w)o(e)f(in)o(tro)q(duce)120 1294 y(op)q(erators)h(and)h (notation)f(that)g(simplify)i(the)f(expressions)g(in)o(v)o(olv)o(ed.)37 b(If)21 b Fz(c)1501 1301 y Fq(1)1542 1294 y FC(and)120 1351 y Fz(c)143 1358 y Fq(2)185 1351 y FC(are)g(colors)g(without)g (alpha)h(where)g Fz(c)868 1358 y Fq(1)911 1351 y FC(=)h(\()p Fy(r)1008 1358 y Fq(1)1027 1351 y Fy(;)8 b(g)1070 1358 y Fq(1)1088 1351 y Fy(;)g(b)1129 1358 y Fq(1)1148 1351 y FC(\))21 b(and)g Fz(c)1304 1358 y Fq(2)1347 1351 y FC(=)j(\()p Fy(r)1445 1358 y Fq(2)1463 1351 y Fy(;)8 b(g)1506 1358 y Fq(2)1525 1351 y Fy(;)g(b)1566 1358 y Fq(2)1584 1351 y FC(\),)120 1407 y(then)19 b(de\014ne)g Fz(c)384 1414 y Fq(1)416 1407 y FB(\003)12 b Fz(c)474 1414 y Fq(2)511 1407 y FC(=)18 b(\()p Fy(r)603 1414 y Fq(1)622 1407 y Fy(r)643 1414 y Fq(2)662 1407 y Fy(;)8 b(g)705 1414 y Fq(1)724 1407 y Fy(g)746 1414 y Fq(2)765 1407 y Fy(;)g(b)806 1414 y Fq(1)825 1407 y Fy(b)845 1414 y Fq(2)864 1407 y FC(\).)28 b(Addition)20 b(of)d(colors)h(is)h (accomplished)120 1464 y(b)o(y)e(addition)h(of)f(the)g(comp)q(onen)o (ts.)25 b(Multiplication)19 b(of)e(colors)f(b)o(y)h(a)g(scalar)g(means) 120 1520 y(m)o(ultiplying)d(eac)o(h)e(comp)q(onen)o(t)g(b)o(y)g(that)f (scalar.)19 b(If)12 b Fz(d)1059 1527 y Fq(1)1091 1520 y FC(and)g Fz(d)1205 1527 y Fq(2)1236 1520 y FC(are)g(directions,)h (then)120 1577 y(de\014ne)603 1648 y Fz(d)632 1655 y Fq(1)662 1648 y FB(\014)d Fz(d)736 1655 y Fq(2)768 1648 y FC(=)j(max)p FB(f)p Fz(d)953 1655 y Fq(1)983 1648 y FB(\001)c Fz(d)1034 1655 y Fq(2)1054 1648 y Fy(;)f FC(0)p FB(g)p Fy(:)120 1748 y FC(\(Directions)13 b(are)g(tak)o(en)f(to)g(ha)o (v)o(e)g(three)h(co)q(ordinates.\))19 b(If)13 b Fz(P)1171 1755 y Fq(1)1203 1748 y FC(and)g Fz(P)1325 1755 y Fq(2)1357 1748 y FC(are)f(\(homoge-)120 1821 y(neous,)17 b(with)f(four)g(co)q (ordinates\))g(p)q(oin)o(ts)g(then)g(let)1029 1790 y FB(\000)-15 b(\000)-10 b(\000)-15 b(!)1029 1821 y Fz(P)1065 1828 y Fq(1)1084 1821 y Fz(P)1120 1828 y Fq(2)1156 1821 y FC(b)q(e)16 b(the)g(unit)h(v)o(ector)e(that)120 1877 y(p)q(oin)o(ts)h(from)f Fz(P)401 1884 y Fq(1)436 1877 y FC(to)f Fz(P)527 1884 y Fq(2)547 1877 y FC(.)20 b(Note)15 b(that)g(if)g Fz(P)866 1884 y Fq(2)901 1877 y FC(has)g(a)g(zero)h Fy(w)g FC(co)q(ordinate)g(and)f Fz(P)1514 1884 y Fq(1)1549 1877 y FC(has)120 1948 y(non-zero)j Fy(w)h FC(co)q(ordinate,)f(then)704 1917 y FB(\000)-15 b(\000)-10 b(\000)c(!)704 1948 y Fz(P)740 1955 y Fq(1)760 1948 y Fz(P)796 1955 y Fq(2)833 1948 y FC(is)18 b(the)g(unit)g(v)o(ector)f(corresp)q(onding)i(to)e(the)120 2004 y(direction)h(sp)q(eci\014ed)f(b)o(y)f(the)g Fy(x)p FC(,)g Fy(y)r FC(,)f(and)h Fy(z)i FC(co)q(ordinates)e(of)g Fz(P)1203 2011 y Fq(2)1222 2004 y FC(;)g(if)g Fz(P)1329 2011 y Fq(1)1364 2004 y FC(has)g(a)f(zero)h Fy(w)120 2074 y FC(co)q(ordinate)d(and)g Fz(P)463 2081 y Fq(2)495 2074 y FC(has)f(a)g(non-zero)h Fy(w)g FC(co)q(ordinate)g(then)1158 2043 y FB(\000)-15 b(\000)-9 b(\000)-15 b(!)1158 2074 y Fz(P)1194 2081 y Fq(1)1214 2074 y Fz(P)1250 2081 y Fq(2)1282 2074 y FC(is)13 b(the)f(unit)h(v)o(ector)120 2131 y(that)j(is)h(the)f(negativ)o(e)g(of)g(that)g(corresp)q(onding)h (to)e(the)i(direction)g(sp)q(eci\014ed)i(b)o(y)d Fz(P)1583 2138 y Fq(1)1602 2131 y FC(.)120 2201 y(If)i(b)q(oth)g Fz(P)314 2208 y Fq(1)352 2201 y FC(and)g Fz(P)479 2208 y Fq(2)516 2201 y FC(ha)o(v)o(e)f(zero)h Fy(w)g FC(co)q(ordinates,)h (then)1137 2170 y FB(\000)-15 b(\000)-10 b(\000)-15 b(!)1137 2201 y Fz(P)1173 2208 y Fq(1)1192 2201 y Fz(P)1228 2208 y Fq(2)1266 2201 y FC(is)18 b(the)g(unit)g(v)o(ector)120 2258 y(obtained)e(b)o(y)f(normalizing)i(the)e(direction)i(corresp)q (onding)f(to)f Fz(P)1270 2265 y Fq(2)1299 2258 y FB(\000)c Fz(P)1381 2265 y Fq(1)1400 2258 y FC(.)191 2319 y(If)g Fz(d)f FC(is)h(an)f(arbitrary)g(direction,)i(then)f(let)920 2307 y(^)917 2319 y Fz(d)f FC(b)q(e)h(the)g(unit)g(v)o(ector)f(in)h Fz(d)p FC('s)f(direction.)120 2375 y(Let)k FB(k)p Fz(P)259 2382 y Fq(1)278 2375 y Fz(P)314 2382 y Fq(2)333 2375 y FB(k)f FC(b)q(e)h(the)f(distance)h(b)q(et)o(w)o(een)g Fz(P)890 2382 y Fq(1)922 2375 y FC(and)g Fz(P)1045 2382 y Fq(2)1064 2375 y FC(.)19 b(Finally)l(,)c(let)f Fz(V)f FC(b)q(e)h(the)f(p)q(oin)o(t)120 2432 y(corresp)q(onding)18 b(to)f(the)g(v)o(ertex)g(b)q(eing)h(lit,)g(and)f Fz(n)g FC(b)q(e)h(the)f(corresp)q(onding)h(normal.)120 2488 y(Let)e Fz(P)238 2495 y Fu(e)271 2488 y FC(b)q(e)g(the)f(ey)o(ep)q(oin) o(t)h(\(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)f FC(1\))12 b(in)k(ey)o(e)f(co)q(ordinates\).)p eop %%Page: 44 53 44 52 bop 332 137 a FC(44)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 332 242 1487 2 v 331 299 2 57 v 357 282 a FC(P)o(arameter)p 588 299 V 597 299 V 93 w(T)o(yp)q(e)p 820 299 V 113 w(Default)g(V)l(alue)p 1198 299 V 78 w(Description)p 1818 299 V 332 301 1487 2 v 357 340 a(Material)f(P)o(arameters)p 332 359 V 331 415 2 57 v 423 398 a Fz(a)448 405 y Fu(cm)p 588 415 V 596 415 V 661 398 a FC(color)p 820 415 V 89 w(\(0)p Fy(:)p FC(2)p Fy(;)8 b FC(0)p Fy(:)p FC(2)p Fy(;)f FC(0)p Fy(:)p FC(2)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 415 V 46 w(am)o(bien)o(t)15 b(color)h(of)e(material)p 1818 415 V 332 417 1487 2 v 331 473 2 57 v 422 456 a Fz(d)451 463 y Fu(cm)p 588 473 V 596 473 V 661 456 a FC(color)p 820 473 V 89 w(\(0)p Fy(:)p FC(8)p Fy(;)8 b FC(0)p Fy(:)p FC(8)p Fy(;)f FC(0)p Fy(:)p FC(8)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 473 V 46 w(di\013use)16 b(color)f(of)g(material)p 1818 473 V 332 475 1487 2 v 331 531 2 57 v 426 514 a Fz(s)447 521 y Fu(cm)p 588 531 V 596 531 V 661 514 a FC(color)p 820 531 V 89 w(\(0)p Fy(:)p FC(0)p Fy(;)8 b FC(0)p Fy(:)p FC(0)p Fy(;)f FC(0)p Fy(:)p FC(0)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 531 V 46 w(sp)q(ecular)16 b(color)g(of)e(material)p 1818 531 V 332 533 1487 2 v 331 589 2 57 v 424 573 a Fz(e)448 580 y Fu(cm)p 588 589 V 596 589 V 661 573 a FC(color)p 820 589 V 89 w(\(0)p Fy(:)p FC(0)p Fy(;)8 b FC(0)p Fy(:)p FC(0)p Fy(;)f FC(0)p Fy(:)p FC(0)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 589 V 46 w(emissiv)o(e)16 b(color)g(of)e(material)p 1818 589 V 332 591 1487 2 v 331 704 2 113 v 425 631 a Fy(s)446 638 y Fu(r)q(m)p 588 704 V 596 704 V 672 631 a FC(real)p 820 704 V 236 w(0.0)p 1198 704 V 184 w(sp)q(ecular)45 b(exp)q(onen)o(t)f(\(range:)1224 687 y([0)p Fy(:)p FC(0)p Fy(;)8 b FC(128)p Fy(:)p FC(0])o(\))p 1818 704 V 332 706 1487 2 v 331 762 2 57 v 432 745 a Fy(a)456 752 y Fu(m)p 588 762 V 596 762 V 672 745 a FC(real)p 820 762 V 236 w(0)p Fy(:)p FC(0)p 1198 762 V 184 w(am)o(bien)o(t)15 b(color)h(index)p 1818 762 V 332 764 1487 2 v 331 820 2 57 v 432 803 a Fy(d)456 810 y Fu(m)p 588 820 V 596 820 V 672 803 a FC(real)p 820 820 V 236 w(1)p Fy(:)p FC(0)p 1198 820 V 184 w(di\013use)g(color)f(index)p 1818 820 V 332 822 1487 2 v 331 878 2 57 v 433 861 a Fy(s)454 868 y Fu(m)p 588 878 V 596 878 V 672 861 a FC(real)p 820 878 V 236 w(1)p Fy(:)p FC(0)p 1198 878 V 184 w(sp)q(ecular)h(color) g(index)p 1818 878 V 332 880 1487 2 v 357 920 a(Ligh)o(t)g(Source)f(P)o (arameters)p 332 938 V 331 995 2 57 v 427 978 a Fz(a)452 985 y Fu(cli)p 588 995 V 596 995 V 661 978 a FC(color)p 820 995 V 89 w(\(0)p Fy(:)p FC(0)p Fy(;)8 b FC(0)p Fy(:)p FC(0)p Fy(;)f FC(0)p Fy(:)p FC(0)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 995 V 46 w(am)o(bien)o(t)15 b(in)o(tensit)o(y)h(of)f (ligh)o(t)h Fy(i)p 1818 995 V 332 996 1487 2 v 331 1053 2 57 v 358 1036 a Fz(d)387 1043 y Fu(cli)428 1036 y FC(\()p Fy(i)c FC(=)h(0\))p 588 1053 V 597 1053 V 98 w(color)p 820 1053 V 89 w(\(1)p Fy(:)p FC(0)p Fy(;)8 b FC(1)p Fy(:)p FC(0)p Fy(;)f FC(1)p Fy(:)p FC(0)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 1053 V 46 w(di\013use)16 b(in)o(tensit)o(y)g(of)f(ligh)o (t)g(0)p 1818 1053 V 331 1109 V 358 1092 a Fz(d)387 1099 y Fu(cli)428 1092 y FC(\()p Fy(i)d(>)h FC(0\))p 588 1109 V 597 1109 V 98 w(color)p 820 1109 V 89 w(\(0)p Fy(:)p FC(0)p Fy(;)8 b FC(0)p Fy(:)p FC(0)p Fy(;)f FC(0)p Fy(:)p FC(0)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 1109 V 46 w(di\013use)16 b(in)o(tensit)o(y)g(of)f(ligh)o(t)g Fy(i)p 1818 1109 V 332 1111 1487 2 v 331 1167 2 57 v 363 1150 a Fz(s)384 1157 y Fu(cli)424 1150 y FC(\()p Fy(i)d FC(=)h(0\))p 588 1167 V 597 1167 V 102 w(color)p 820 1167 V 89 w(\(1)p Fy(:)p FC(0)p Fy(;)8 b FC(1)p Fy(:)p FC(0)p Fy(;)f FC(1)p Fy(:)p FC(0)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 1167 V 46 w(sp)q(ecular)16 b(in)o(tensit)o(y)g(of)f(ligh)o(t)h(0)p 1818 1167 V 331 1224 V 363 1207 a Fz(s)384 1214 y Fu(cli)424 1207 y FC(\()p Fy(i)c(>)h FC(0\))p 588 1224 V 597 1224 V 102 w(color)p 820 1224 V 89 w(\(0)p Fy(:)p FC(0)p Fy(;)8 b FC(0)p Fy(:)p FC(0)p Fy(;)f FC(0)p Fy(:)p FC(0)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 1224 V 46 w(sp)q(ecular)16 b(in)o(tensit)o(y)g(of)f(ligh)o(t)h Fy(i)p 1818 1224 V 332 1225 1487 2 v 331 1282 2 57 v 421 1265 a Fz(P)457 1272 y Fu(pli)p 588 1282 V 596 1282 V 630 1265 a FC(p)q(osition)p 820 1282 V 59 w(\(0)p Fy(:)p FC(0)p Fy(;)8 b FC(0)p Fy(:)p FC(0)p Fy(;)f FC(1)p Fy(:)p FC(0)o Fy(;)h FC(0)o Fy(:)p FC(0\))p 1198 1282 V 46 w(p)q(osition)16 b(of)f(ligh)o(t)h Fy(i)p 1818 1282 V 332 1284 1487 2 v 331 1396 2 113 v 428 1323 a Fz(s)449 1330 y Fu(dli)p 588 1396 V 596 1396 V 622 1323 a FC(direction)p 820 1396 V 72 w(\(0)p Fy(:)p FC(0)p Fy(;)8 b FC(0)p Fy(:)p FC(0)p Fy(;)g FB(\000)p FC(1)p Fy(:)o FC(0\))p 1198 1396 V 68 w(direction)k(of)d(sp)q(otligh)o (t)i(for)e(ligh)o(t)1224 1379 y Fy(i)p 1818 1396 V 332 1398 1487 2 v 331 1511 2 113 v 429 1438 a(s)450 1445 y Fu(r)q(li)p 588 1511 V 596 1511 V 672 1438 a FC(real)p 820 1511 V 236 w(0.0)p 1198 1511 V 184 w(sp)q(otligh)o(t)14 b(exp)q(onen)o(t)h(for)e(ligh)o(t)h Fy(i)1224 1494 y FC(\(range:)19 b([0)p Fy(:)p FC(0)p Fy(;)8 b FC(128)p Fy(:)p FC(0])o(\))p 1818 1511 V 332 1513 1487 2 v 331 1682 2 170 v 430 1552 a Fy(c)450 1559 y Fu(r)q(li)p 588 1682 V 596 1682 V 672 1552 a FC(real)p 820 1682 V 213 w(180.0)p 1198 1682 V 161 w(sp)q(otligh)o(t)42 b(cuto\013)f(angle)i (for)1224 1609 y(ligh)o(t)35 b Fy(i)g FC(\(range:)58 b([0)p Fy(:)p FC(0)p Fy(;)8 b FC(90)p Fy(:)p FC(0])o(,)1224 1665 y(180)p Fy(:)p FC(0\))p 1818 1682 V 332 1684 1487 2 v 331 1797 2 113 v 433 1723 a Fy(k)457 1730 y Fq(0)p Fu(i)p 588 1797 V 596 1797 V 672 1723 a FC(real)p 820 1797 V 236 w(1.0)p 1198 1797 V 184 w(constan)o(t)28 b(atten)o(uation)h (factor)1224 1780 y(for)15 b(ligh)o(t)g(i)h(\(range:)j([0)p Fy(:)p FC(0)p Fy(;)8 b FB(1)p FC(\)\))p 1818 1797 V 332 1798 1487 2 v 331 1911 2 113 v 433 1838 a Fy(k)457 1845 y Fq(1)p Fu(i)p 588 1911 V 596 1911 V 672 1838 a FC(real)p 820 1911 V 236 w(0.0)p 1198 1911 V 184 w(linear)22 b(atten)o(uation)d (factor)h(for)1224 1894 y(ligh)o(t)c(i)g(\(range:)j([0)p Fy(:)p FC(0)p Fy(;)8 b FB(1)p FC(\)\))p 1818 1911 V 332 1913 1487 2 v 331 2026 2 113 v 433 1952 a Fy(k)457 1959 y Fq(2)p Fu(i)p 588 2026 V 596 2026 V 672 1952 a FC(real)p 820 2026 V 236 w(0.0)p 1198 2026 V 184 w(quadratic)19 b(atten)o(uation)g(factor)1224 2009 y(for)c(ligh)o(t)g(i)h(\(range:)j ([0)p Fy(:)p FC(0)p Fy(;)8 b FB(1)p FC(\)\))p 1818 2026 V 332 2027 1487 2 v 357 2067 a(Ligh)o(ting)16 b(Mo)q(del)g(P)o (arameters)p 332 2086 V 331 2142 2 57 v 431 2125 a Fz(a)456 2132 y Fu(cs)p 588 2142 V 596 2142 V 661 2125 a FC(color)p 820 2142 V 89 w(\(0)p Fy(:)p FC(2)p Fy(;)8 b FC(0)p Fy(:)p FC(2)p Fy(;)f FC(0)p Fy(:)p FC(2)o Fy(;)h FC(1)o Fy(:)p FC(0\))p 1198 2142 V 46 w(am)o(bien)o(t)15 b(color)h(of)e(scene)p 1818 2142 V 332 2144 1487 2 v 331 2313 2 170 v 433 2183 a Fy(v)455 2190 y Fu(bs)p 588 2313 V 596 2313 V 632 2183 a FC(b)q(o)q(olean)p 820 2313 V 171 w Fr(FALSE)p 1198 2313 V 158 w FC(view)o(er)38 b(assumed)f(to)g(b)q(e)h(at)1224 2240 y(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0\))30 b(in)k(ey)o(e)f(co)q (ordinates)1224 2296 y(\()p Fr(TRUE)p FC(\))14 b(or)g(\(0)p Fy(;)8 b FC(0)p Fy(;)g FB(1)p FC(\))13 b(\()p Fr(FALSE)p FC(\))p 1818 2313 V 332 2315 1487 2 v 331 2371 2 57 v 435 2354 a Fy(t)451 2361 y Fu(bs)p 588 2371 V 596 2371 V 632 2354 a FC(b)q(o)q(olean)p 820 2371 V 171 w Fr(FALSE)p 1198 2371 V 158 w FC(use)j(t)o(w)o(o-sided)f(ligh)o(ting)h(mo)q(de)p 1818 2371 V 332 2373 1487 2 v 332 2450 a(T)l(able)i(2.7:)k(Summary)17 b(of)g(ligh)o(ting)h(parameters.)25 b(The)17 b(range)g(of)f(individual) k(color)332 2506 y(comp)q(onen)o(ts)15 b(is)h(\()p FB(\0001)p Fy(;)8 b FC(+)p FB(1)p FC(\).)p eop %%Page: 45 54 45 53 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(45)191 286 y(The)15 b(color)h Fz(c)f FC(pro)q(duced)h(b)o(y)f (ligh)o(ting)i(a)e(v)o(ertex)g(is)g(giv)o(en)h(b)o(y)389 373 y Fz(c)42 b FC(=)g Fz(e)555 380 y Fu(cm)454 442 y FC(+)g Fz(a)556 449 y Fu(cm)615 442 y FB(\003)9 b Fz(a)672 449 y Fu(cs)454 544 y FC(+)531 491 y Fu(n)p FG(\000)p Fq(1)534 503 y Fi(X)535 594 y Fu(i)p Fq(=0)597 544 y FC(\()p Fy(att)671 551 y Fu(i)686 544 y FC(\)\()p Fy(spot)804 551 y Fu(i)818 544 y FC(\))e([)p Fz(a)881 551 y Fu(cm)939 544 y FB(\003)j Fz(a)997 551 y Fu(cli)765 618 y FC(+)43 b(\()p Fz(n)9 b FB(\014)944 587 y(\000)-6 b(!)944 618 y Fz(VP)1012 625 y Fu(pli)1055 618 y FC(\))p Fz(d)1102 625 y Fu(cm)1160 618 y FB(\003)10 b Fz(d)1222 625 y Fu(cli)765 678 y FC(+)43 b(\()p Fy(f)883 685 y Fu(i)896 678 y FC(\)\()p Fz(n)10 b FB(\014)1019 666 y FC(^)1016 678 y Fz(h)1045 685 y Fu(i)1059 678 y FC(\))1077 662 y Fu(s)1093 666 y Fg(r)q(m)1140 678 y Fz(s)1161 685 y Fu(cm)1219 678 y FB(\003)g Fz(s)1273 685 y Fu(cli)1313 678 y FC(])120 761 y(where)237 872 y Fy(f)259 879 y Fu(i)314 872 y FC(=)391 800 y Fi(\()445 853 y FC(1)p Fy(;)41 b Fz(n)10 b FB(\014)607 822 y(\000)-6 b(!)607 853 y Fz(VP)675 860 y Fu(pli)730 853 y FB(6)p FC(=)13 b(0)p Fy(;)445 909 y FC(0)p Fy(;)41 b FC(otherwise,)1521 872 y(\(2.2\))230 1165 y Fz(h)259 1172 y Fu(i)314 1165 y FC(=)391 1079 y Fi(8)391 1116 y(<)391 1191 y(:)449 1106 y FB(\000)-6 b(!)449 1137 y Fz(VP)517 1144 y Fu(pli)569 1137 y FC(+)615 1106 y FB(\000)g(!)615 1137 y Fz(VP)683 1144 y Fu(e)701 1137 y Fy(;)200 b(v)936 1144 y Fu(bs)982 1137 y FC(=)13 b Fw(TRUE)o Fy(;)449 1180 y FB(\000)-6 b(!)449 1211 y Fz(VP)517 1218 y Fu(pli)569 1211 y FC(+)11 b(\()c(0)45 b(0)h(1)7 b(\))825 1190 y Fu(T)860 1211 y Fy(;)41 b(v)936 1218 y Fu(bs)982 1211 y FC(=)13 b Fw(FALSE)o Fy(;)1521 1165 y FC(\(2.3\))202 1480 y Fy(att)258 1487 y Fu(i)314 1480 y FC(=)391 1382 y Fi(8)391 1419 y(>)391 1431 y(<)391 1506 y(>)391 1519 y(:)770 1411 y FC(1)p 454 1418 655 2 v 454 1460 a Fy(k)478 1467 y Fq(0)p Fu(i)527 1460 y FC(+)18 b Fy(k)604 1467 y Fq(1)p Fu(i)635 1460 y FB(k)p Fz(VP)734 1467 y Fu(pli)776 1460 y FB(k)g FC(+)g Fy(k)894 1467 y Fq(2)p Fu(i)925 1460 y FB(k)p Fz(VP)1024 1467 y Fu(pli)1066 1460 y FB(k)1089 1441 y Fq(2)1113 1428 y Fy(;)41 b FC(if)16 b Fz(P)1245 1435 y Fu(pli)1287 1428 y FC('s)f Fy(w)f FB(6)p FC(=)f(0,)752 1539 y(1)p Fy(:)p FC(0)p Fy(;)343 b FC(otherwise,)1521 1480 y(\(2.4\))176 1823 y Fy(spot)258 1830 y Fu(i)314 1823 y FC(=)391 1712 y Fi(8)391 1750 y(>)391 1762 y(>)391 1775 y(<)391 1849 y(>)391 1862 y(>)391 1874 y(:)449 1767 y FC(\()467 1736 y FB(\000)-15 b(\000)-10 b(\000)-15 b(!)467 1767 y Fz(P)495 1774 y Fu(pli)538 1767 y Fz(V)10 b FB(\014)632 1766 y FC(^)633 1767 y Fz(s)654 1774 y Fu(dli)697 1767 y FC(\))715 1750 y Fu(s)731 1756 y Fg(r)q(li)772 1767 y Fy(;)41 b(c)846 1774 y Fu(r)q(li)900 1767 y FB(6)p FC(=)13 b(180)p Fy(:)p FC(0)p Fy(;)1074 1736 y FB(\000)-15 b(\000)j(\000)d(!)1074 1767 y Fz(P)1100 1774 y Fu(pli)1143 1767 y Fz(V)10 b FB(\014)1237 1766 y FC(^)1238 1767 y Fz(s)1259 1774 y Fu(dli)1315 1767 y FB(\025)j FC(cos\()p Fy(c)1462 1774 y Fu(r)q(li)1503 1767 y FC(\))p Fy(;)581 1841 y FC(0)p Fy(:)p FC(0)p Fy(;)173 b(c)846 1848 y Fu(r)q(li)900 1841 y FB(6)p FC(=)13 b(180)p Fy(:)p FC(0)p Fy(;)1074 1810 y FB(\000)-15 b(\000)j(\000)d(!)1074 1841 y Fz(P)1100 1848 y Fu(pli)1143 1841 y Fz(V)10 b FB(\014)1237 1840 y FC(^)1238 1841 y Fz(s)1259 1848 y Fu(dli)1315 1841 y Fy(<)j FC(cos\()p Fy(c)1462 1848 y Fu(r)q(li)1503 1841 y FC(\))p Fy(;)581 1897 y FC(1)p Fy(:)p FC(0)p Fy(;)173 b(c)846 1904 y Fu(r)q(li)900 1897 y FC(=)13 b(180)p Fy(:)p FC(0)p Fy(:)1521 1823 y FC(\(2.5\))120 1980 y(All)k(computations)e(are) g(carried)h(out)e(in)i(ey)o(e)g(co)q(ordinates.)191 2037 y(The)h(v)m(alue)g(of)f(A)h(pro)q(duced)g(b)o(y)g(ligh)o(ting)h(is)e (the)h(alpha)g(v)m(alue)h(asso)q(ciated)e(with)120 2093 y Fz(d)149 2100 y Fu(cm)198 2093 y FC(.)23 b(Results)17 b(of)f(ligh)o(ting)i(are)e(unde\014ned)i(if)f(the)f Fy(w)1055 2100 y Fu(e)1089 2093 y FC(co)q(ordinate)h(\()p Fy(w)f FC(in)i(ey)o(e)e(co)q(or-)120 2149 y(dinates\))g(of)f Fz(V)g FC(is)h(zero.)191 2206 y(Ligh)o(ting)i(ma)o(y)e(op)q(erate)h(in) h Fv(two-side)n(d)f FC(mo)q(de)g(\()p Fy(t)1051 2213 y Fu(bs)1100 2206 y FC(=)f Fw(TRUE)o FC(\),)h(in)h(whic)o(h)g(a)e Fv(fr)n(ont)120 2262 y FC(color)h(is)g(computed)g(with)g(one)f(set)h (of)f(material)h(parameters)e(\(the)i Fv(fr)n(ont)g(material)p FC(\))120 2319 y(and)e(a)g Fv(b)n(ack)g FC(color)g(is)g(computed)g (with)h(a)e(second)i(set)e(of)h(material)g(parameters)f(\(the)120 2375 y Fv(b)n(ack)e(material)p FC(\).)18 b(This)11 b(second)g (computation)g(replaces)g Fz(n)f FC(with)h FB(\000)p Fz(n)p FC(.)19 b(If)10 b Fy(t)1388 2382 y Fu(bs)1435 2375 y FC(=)j Fw(FALSE)o FC(,)120 2432 y(then)19 b(the)f(bac)o(k)h (color)f(and)g(fron)o(t)g(color)g(are)g(b)q(oth)h(assigned)g(the)f (color)g(computed)120 2488 y(using)e(the)g(fron)o(t)e(material)h(with)h Fz(n)p FC(.)p eop %%Page: 46 55 46 54 bop 332 137 a FC(46)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)403 286 y FC(The)10 b(selection)i(b)q(et)o (w)o(een)e(bac)o(k)g(color)h(and)f(fron)o(t)f(color)i(dep)q(ends)h(on)e (the)g(primitiv)o(e)332 343 y(of)17 b(whic)o(h)g(the)g(v)o(ertex)g(b)q (eing)h(lit)f(is)h(a)e(part.)24 b(If)18 b(the)e(primitiv)o(e)j(is)e(a)g (p)q(oin)o(t)g(or)f(a)h(line)332 399 y(segmen)o(t,)23 b(the)e(fron)o(t)g(color)h(is)g(alw)o(a)o(ys)f(selected.)41 b(If)22 b(it)g(is)g(a)g(p)q(olygon,)h(then)f(the)332 456 y(selection)16 b(is)f(based)f(on)g(the)h(sign)f(of)g(the)h(\(clipp) q(ed)h(or)e(unclipp)q(ed\))j(p)q(olygon's)d(signed)332 512 y(area)h(computed)g(in)h(windo)o(w)g(co)q(ordinates.)k(One)c(w)o(a) o(y)e(to)h(compute)g(this)h(area)e(is)815 653 y Fy(a)f FC(=)905 623 y(1)p 905 643 23 2 v 905 685 a(2)940 601 y Fu(n)p FG(\000)p Fq(1)944 613 y Fi(X)945 704 y Fu(i)p Fq(=0)1014 653 y Fy(x)1040 635 y Fu(i)1040 665 y(w)1069 653 y Fy(y)1093 635 y Fu(i)p FG(\010)p Fq(1)1091 665 y Fu(w)1162 653 y FB(\000)d Fy(x)1233 635 y Fu(i)p FG(\010)p Fq(1)1233 665 y Fu(w)1293 653 y Fy(y)1317 635 y Fu(i)1315 665 y(w)1733 653 y FC(\(2.6\))332 801 y(where)18 b Fy(x)492 784 y Fu(i)492 812 y(w)537 801 y FC(and)g Fy(y)652 784 y Fu(i)650 812 y(w)695 801 y FC(are)f(the)h Fy(x)f FC(and)h Fy(y)h FC(windo)o(w)e(co)q(ordinates)h(of)f(the)g Fy(i)p FC(th)g(v)o(ertex)g(of)332 857 y(the)c Fy(n)p FC(-v)o(ertex)h(p)q (olygon)g(\(v)o(ertices)f(are)g(n)o(um)o(b)q(ered)h(starting)f(at)f (zero)h(for)g(purp)q(oses)h(of)332 914 y(this)h(computation\))f(and)h Fy(i)8 b FB(\010)h FC(1)14 b(is)h(\()p Fy(i)8 b FC(+)h(1\))j(mo)q(d)g Fy(n)p FC(.)20 b(The)15 b(in)o(terpretation)f(of)g(the)h(sign)332 970 y(of)g(this)g(v)m(alue)i(is)f(con)o(trolled)g(with)446 1069 y Fw(void)29 b Fz(F)l(ron)o(tF)l(ace)p FC(\()h Fw(enum)14 b Fv(dir)i FC(\))f Fw(;)332 1168 y FC(Setting)22 b Fv(dir)g FC(to)f Fr(CCW)g FC(\(corresp)q(onding)h(to)f(coun)o(ter-clo)q(c)o (kwise)i(orien)o(tation)e(of)g(the)332 1225 y(pro)s(jected)16 b(p)q(olygon)h(in)f(windo)o(w)h(co)q(ordinates\))f(indicates)i(that)d (if)i Fy(a)d FB(\024)g FC(0,)i(then)g(the)332 1281 y(color)j(of)g(eac)o (h)h(v)o(ertex)f(of)f(the)i(p)q(olygon)g(b)q(ecomes)f(the)h(bac)o(k)f (color)g(computed)h(for)332 1338 y(that)15 b(v)o(ertex)g(while)h(if)g Fy(a)d(>)g FC(0,)i(then)h(the)f(fron)o(t)g(color)g(is)h(selected.)21 b(If)16 b Fv(dir)g FC(is)g Fr(CW)p FC(,)e(then)332 1394 y Fy(a)g FC(is)h(replaced)g(b)o(y)f FB(\000)p Fy(a)h FC(in)g(the)f(ab)q(o)o(v)o(e)g(inequalities.)22 b(This)15 b(requires)g(one)f(bit)h(of)f(state;)332 1451 y(initially)l(,)k(it)d (indicates)i Fr(CCW)p FC(.)332 1580 y Fl(2.13.2)55 b(Ligh)n(ting)18 b(P)n(arameter)g(Sp)r(eci\014cation)332 1669 y FC(Ligh)o(ting)d (parameters)f(are)g(divided)i(in)o(to)f(three)f(categories:)19 b(material)c(parameters,)332 1725 y(ligh)o(t)e(source)f(parameters,)g (and)g(ligh)o(ting)h(mo)q(del)g(parameters)f(\(see)g(T)l(able)h(2.7\).) k(Sets)332 1782 y(of)e(ligh)o(ting)h(parameters)f(are)f(sp)q(eci\014ed) k(with)446 1881 y Fw(void)29 b Fz(Material)p FB(f)p Fz(if)p FB(g)p FC(\()j Fw(enum)14 b Fv(fac)n(e)p Fw(,)h(enum)g Fv(pname)p Fw(,)g(T)g Fv(p)n(ar)n(am)g FC(\))g Fw(;)446 1937 y(void)29 b Fz(Material)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()i Fw(enum)15 b Fv(fac)n(e)p Fw(,)g(enum)f Fv(pname)p Fw(,)h(T)g Fv(p)n(ar)n(ams)g FC(\))g Fw(;)446 1994 y(void)29 b Fz(Ligh)o(t)p FB(f)p Fz(if)p FB(g)p FC(\()i Fw(enum)15 b Fv(light)p Fw(,)g(enum)f Fv(pname)p Fw(,)i(T)f Fv(p)n(ar)n(am)g FC(\))g Fw(;)446 2050 y(void)29 b Fz(Ligh)o(t)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()i Fw(enum)15 b Fv(light)p Fw(,)f(enum)h Fv(pname)p Fw(,)g(T)g Fv(p)n(ar)n(ams)g FC(\))g Fw(;)446 2107 y(void)29 b Fz(Ligh)o(tMo)q (del)p FB(f)p Fz(if)p FB(g)p FC(\()j Fw(enum)15 b Fv(pname)p Fw(,)g(T)g Fv(p)n(ar)n(am)g FC(\))g Fw(;)446 2163 y(void)29 b Fz(Ligh)o(tMo)q(del)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()j Fw(enum)14 b Fv(pname)p Fw(,)h(T)g Fv(p)n(ar)n(ams)h FC(\))e Fw(;)332 2262 y Fv(pname)j FC(is)h(a)f(sym)o(b)q(olic)h (constan)o(t)f(indicating)i(whic)o(h)f(parameter)e(is)i(to)f(b)q(e)h (set)e(\(see)332 2319 y(T)l(able)h(2.8\).)k(In)c(the)f(v)o(ector)f(v)o (ersions)i(of)e(the)h(commands,)g Fv(p)n(ar)n(ams)g FC(is)h(a)f(p)q (oin)o(ter)g(to)332 2375 y(a)g(group)h(of)f(v)m(alues)i(to)e(whic)o(h)i (to)e(set)g(the)h(indicated)h(parameter.)24 b(The)17 b(n)o(um)o(b)q(er)g(of)332 2432 y(v)m(alues)j(p)q(oin)o(ted)g(to)e(dep) q(ends)j(on)e(the)g(parameter)f(b)q(eing)i(set.)31 b(In)20 b(the)f(non-v)o(ector)332 2488 y(v)o(ersions,)i Fv(p)n(ar)n(am)g FC(is)f(a)g(v)m(alue)h(to)f(whic)o(h)h(to)e(set)h(a)g(single-v)m(alued) j(parameter.)34 b(\(If)p eop %%Page: 47 56 47 55 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(47)120 286 y Fv(p)n(ar)n(am)17 b FC(corresp)q(onds)f(to)g(a)g(m)o (ulti-v)m(alued)i(parameter,)d(the)i(error)e Fr(INVALID)p 1447 286 14 2 v 14 w(ENUM)h FC(re-)120 343 y(sults.\))35 b(F)l(or)19 b(the)h Fz(Material)i FC(command,)e Fv(fac)n(e)g FC(m)o(ust)f(b)q(e)i(one)f(of)g Fr(FRONT)p FC(,)e Fr(BACK)p FC(,)h(or)120 399 y Fr(FRONT)p 233 399 V 15 w(AND)p 314 399 V 15 w(BACK)p FC(,)14 b(indicating)j(that)d(the)h(prop)q(ert)o(y)g Fv(name)g FC(of)f(the)i(fron)o(t)e(or)g(bac)o(k)h(ma-)120 456 y(terial,)k(or)d(b)q(oth,)i(resp)q(ectiv)o(ely)l(,)h(should)g(b)q (e)f(set.)26 b(In)18 b(the)f(case)h(of)f Fz(Ligh)o(t)p FC(,)h Fv(light)f FC(is)h(a)120 512 y(sym)o(b)q(olic)g(constan)o(t)e (of)g(the)h(form)f Fr(LIGHT)p Fh(i)p FC(,)f(indicating)k(that)d(ligh)o (t)h Fy(i)f FC(is)h(to)f(ha)o(v)o(e)h(the)120 569 y(sp)q(eci\014ed)h (parameter)c(set.)20 b(The)15 b(constan)o(ts)f(ob)q(ey)i Fr(LIGHT)p Fh(i)c FC(=)h Fr(LIGHT0)c FC(+)h Fy(i)p FC(.)191 626 y(T)l(able)18 b(2.8)e(giv)o(es,)h(for)g(eac)o(h)g(of)g(the)g(three) g(parameter)f(groups,)h(the)g(corresp)q(on-)120 682 y(dence)e(b)q(et)o (w)o(een)f(the)g(pre-de\014ned)i(constan)o(t)d(names)g(and)h(their)h (names)e(in)i(the)f(ligh)o(t-)120 738 y(ing)i(equations,)g(along)f (with)h(the)f(n)o(um)o(b)q(er)h(of)f(v)m(alues)h(that)f(m)o(ust)g(b)q (e)h(sp)q(eci\014ed)h(with)120 795 y(eac)o(h.)28 b(Color)17 b(parameters)g(sp)q(eci\014ed)j(with)e Fz(Material)h FC(and)f Fz(Ligh)o(t)h FC(are)e(con)o(v)o(erted)120 851 y(to)i(\015oating-p)q(oin)o(t)h(v)m(alues)h(\(if)f(sp)q(eci\014ed)h(as) e(in)o(tegers\))h(as)f(indicated)i(in)f(T)l(able)h(2.6)120 908 y(for)e(signed)h(in)o(tegers.)32 b(The)20 b(error)e Fr(INVALID)p 905 908 V 15 w(VALUE)g FC(o)q(ccurs)h(if)h(a)f(sp)q (eci\014ed)j(ligh)o(ting)120 964 y(parameter)d(lies)h(outside)f(the)g (allo)o(w)o(able)h(range)f(giv)o(en)g(in)h(T)l(able)g(2.7.)30 b(\(The)19 b(sym-)120 1021 y(b)q(ol)d(\\)p FB(1)p FC(")f(indicates)i (the)e(maxim)o(um)g(represen)o(table)h(magnitude)g(for)f(the)g (indicated)120 1077 y(t)o(yp)q(e.\))191 1134 y(The)d(curren)o(t)f(mo)q (del-view)j(matrix)d(is)h(applied)i(to)d(the)g(p)q(osition)i(parameter) e(indi-)120 1191 y(cated)h(with)g Fz(Ligh)o(t)g FC(for)f(a)g (particular)i(ligh)o(t)f(source)f(when)h(that)f(p)q(osition)i(is)f(sp)q (eci\014ed.)120 1247 y(These)k(transformed)e(v)m(alues)j(are)d(the)i(v) m(alues)g(used)g(in)g(the)f(ligh)o(ting)i(equation.)191 1304 y(The)c(sp)q(otligh)o(t)h(direction)g(is)g(transformed)e(when)h (it)h(is)f(sp)q(eci\014ed)i(using)f(only)g(the)120 1360 y(upp)q(er)i(leftmost)f(3x3)f(p)q(ortion)i(of)e(the)i(mo)q(del-view)g (matrix.)k(That)14 b(is,)h(if)h Fz(M)1469 1367 y Fu(u)1506 1360 y FC(is)g(the)120 1417 y(upp)q(er)j(left)g(3x3)e(matrix)h(tak)o (en)f(from)h(the)g(curren)o(t)g(mo)q(del-view)h(matrix)f Fy(M)5 b FC(,)18 b(then)120 1473 y(the)e(sp)q(otligh)o(t)f(direction) 801 1494 y Fi(0)801 1568 y(@)845 1522 y Fy(d)869 1529 y Fu(x)845 1578 y Fy(d)869 1585 y Fu(y)846 1635 y Fy(d)870 1642 y Fu(z)898 1494 y Fi(1)898 1568 y(A)120 1710 y FC(is)h (transformed)e(to)657 1722 y Fi(0)657 1796 y(@)701 1750 y Fy(d)725 1733 y FG(0)725 1761 y Fu(x)701 1806 y Fy(d)725 1790 y FG(0)725 1817 y Fu(y)702 1863 y Fy(d)726 1846 y FG(0)726 1874 y Fu(z)754 1722 y Fi(1)754 1796 y(A)803 1806 y FC(=)f Fy(M)895 1813 y Fu(u)925 1722 y Fi(0)925 1796 y(@)969 1750 y Fy(d)993 1757 y Fu(x)969 1806 y Fy(d)993 1813 y Fu(y)970 1863 y Fy(d)994 1870 y Fu(z)1022 1722 y Fi(1)1022 1796 y(A)1066 1806 y Fy(:)191 1939 y FC(An)h(individual)j (ligh)o(t)d(is)g(enabled)i(or)d(disabled)i(b)o(y)f(calling)h Fz(Enable)g FC(or)f Fz(Disable)120 1995 y FC(with)i(the)g(sym)o(b)q (olic)h(v)m(alue)g Fr(LIGHT)p Fh(i)e FC(\()p Fy(i)g FC(is)h(in)h(the)f (range)f(0)h(to)f Fy(n)10 b FB(\000)h FC(1,)k(where)h Fy(n)g FC(is)h(the)120 2052 y(implemen)o(tation-dep)q(end)q(en)o(t)i(n) o(um)o(b)q(er)f(of)e(ligh)o(ts\).)26 b(If)17 b(ligh)o(t)g Fy(i)g FC(is)g(disabled,)i(the)e Fy(i)p FC(th)120 2108 y(term)e(in)h(the)f(ligh)o(ting)i(equation)e(is)h(e\013ectiv)o(ely)g (remo)o(v)o(ed)f(from)f(the)i(summation.)120 2232 y Fl(2.13.3)56 b(ColorMaterial)120 2319 y FC(It)15 b(is)f(p)q(ossible)i(to)e(attac)o (h)f(one)h(or)g(more)f(material)i(prop)q(erties)f(to)g(the)g(curren)o (t)g(color,)120 2375 y(so)23 b(that)e(they)i(con)o(tin)o(uously)h(trac) o(k)d(its)i(comp)q(onen)o(t)g(v)m(alues.)43 b(This)23 b(b)q(eha)o(vior)g(is)120 2432 y(enabled)15 b(and)d(disabled)j(b)o(y)e (calling)h Fz(Enable)g FC(or)e Fz(Disable)i FC(with)f(the)g(sym)o(b)q (olic)h(v)m(alue)120 2488 y Fr(COLOR)p 233 2488 V 15 w(MATERIAL)p FC(.)p eop %%Page: 48 57 48 56 bop 332 137 a FC(48)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 470 573 1220 2 v 469 629 2 57 v 496 612 a FC(P)o(arameter)p 728 629 V 737 629 V 253 w(Name)p 1291 629 V 244 w(Num)o(b)q(er)g(of)f(v)m(alues)p 1688 629 V 470 631 1220 2 v 495 670 a(Material)g(P)o(arameters)f(\()p Fz(Material)p FC(\))p 470 689 V 469 745 2 57 v 562 729 a Fz(a)587 736 y Fu(cm)p 728 745 V 736 745 V 938 729 a Fr(AMBIENT)p 1291 745 V 387 w FC(4)p 1688 745 V 470 747 1220 2 v 469 804 2 57 v 560 787 a Fz(d)589 794 y Fu(cm)p 728 804 V 736 804 V 938 787 a Fr(DIFFUSE)p 1291 804 V 387 w FC(4)p 1688 804 V 470 805 1220 2 v 469 862 2 57 v 513 845 a Fz(a)538 852 y Fu(cm)587 845 y Fy(;)8 b Fz(d)637 852 y Fu(cm)p 728 862 V 736 862 V 813 845 a Fr(AMBIENT)p 970 845 14 2 v 15 w(AND)p 1051 845 V 15 w(DIFFUSE)p 1291 862 2 57 v 262 w FC(4)p 1688 862 V 470 863 1220 2 v 469 920 2 57 v 565 903 a Fz(s)586 910 y Fu(cm)p 728 920 V 736 920 V 927 903 a Fr(SPECULAR)p 1291 920 V 376 w FC(4)p 1688 920 V 470 921 1220 2 v 469 978 2 57 v 563 961 a Fz(e)587 968 y Fu(cm)p 728 978 V 736 978 V 927 961 a Fr(EMISSION)p 1291 978 V 376 w FC(4)p 1688 978 V 470 980 1220 2 v 469 1036 2 57 v 563 1019 a Fy(s)584 1026 y Fu(r)q(m)p 728 1036 V 736 1036 V 916 1019 a Fr(SHININESS)p 1291 1036 V 365 w FC(1)p 1688 1036 V 470 1038 1220 2 v 469 1094 2 57 v 495 1077 a Fy(a)519 1084 y Fu(m)552 1077 y Fy(;)g(d)597 1084 y Fu(m)629 1077 y Fy(;)g(s)671 1084 y Fu(m)p 728 1094 V 736 1094 V 876 1077 a Fr(COLOR)p 989 1077 14 2 v 14 w(INDEXES)p 1291 1094 2 57 v 325 w FC(3)p 1688 1094 V 470 1096 1220 2 v 495 1135 a(Ligh)o(t)15 b(Source)h(P)o(arameters)d(\()p Fz(Ligh)o(t)p FC(\))p 470 1154 V 469 1210 2 57 v 566 1193 a Fz(a)591 1200 y Fu(cli)p 728 1210 V 736 1210 V 938 1193 a Fr(AMBIENT)p 1291 1210 V 387 w FC(4)p 1688 1210 V 470 1212 1220 2 v 469 1268 2 57 v 564 1252 a Fz(d)593 1259 y Fu(cli)p 728 1268 V 736 1268 V 938 1252 a Fr(DIFFUSE)p 1291 1268 V 387 w FC(4)p 1688 1268 V 470 1270 1220 2 v 469 1327 2 57 v 569 1310 a Fz(s)590 1317 y Fu(cli)p 728 1327 V 736 1327 V 927 1310 a Fr(SPECULAR)p 1291 1327 V 376 w FC(4)p 1688 1327 V 470 1328 1220 2 v 469 1385 2 57 v 560 1368 a Fz(P)596 1375 y Fu(pli)p 728 1385 V 736 1385 V 927 1368 a Fr(POSITION)p 1291 1385 V 376 w FC(4)p 1688 1385 V 470 1386 1220 2 v 469 1443 2 57 v 567 1426 a Fz(s)588 1433 y Fu(dli)p 728 1443 V 736 1443 V 865 1426 a Fr(SPOT)p 956 1426 14 2 v 15 w(DIRECTION)p 1291 1443 2 57 v 313 w FC(3)p 1688 1443 V 470 1444 1220 2 v 469 1501 2 57 v 568 1484 a Fy(s)589 1491 y Fu(r)q(li)p 728 1501 V 736 1501 V 876 1484 a Fr(SPOT)p 967 1484 14 2 v 15 w(EXPONENT)p 1291 1501 2 57 v 324 w FC(1)p 1688 1501 V 470 1503 1220 2 v 469 1559 2 57 v 568 1542 a Fy(c)588 1549 y Fu(r)q(li)p 728 1559 V 736 1559 V 897 1542 a Fr(SPOT)p 988 1542 14 2 v 15 w(CUTOFF)p 1291 1559 2 57 v 347 w FC(1)p 1688 1559 V 470 1561 1220 2 v 469 1617 2 57 v 577 1600 a Fy(k)601 1607 y Fq(0)p 728 1617 V 736 1617 V 799 1600 a Fr(CONSTANT)p 978 1600 14 2 v 14 w(ATTENUATION)p 1291 1617 2 57 v 248 w FC(1)p 1688 1617 V 470 1619 1220 2 v 469 1675 2 57 v 577 1658 a Fy(k)601 1665 y Fq(1)p 728 1675 V 736 1675 V 821 1658 a Fr(LINEAR)p 956 1658 14 2 v 15 w(ATTENUATION)p 1291 1675 2 57 v 269 w FC(1)p 1688 1675 V 470 1677 1220 2 v 469 1733 2 57 v 577 1716 a Fy(k)601 1723 y Fq(2)p 728 1733 V 736 1733 V 788 1716 a Fr(QUADRATIC)p 989 1716 14 2 v 14 w(ATTENUATION)p 1291 1733 2 57 v 237 w FC(1)p 1688 1733 V 470 1735 1220 2 v 495 1775 a(Ligh)o(ting)j(Mo)q(del)g(P)o(arameters)d(\()p Fz(Ligh)o(tMo)q(del)p FC(\))p 470 1793 V 469 1850 2 57 v 570 1833 a Fz(a)595 1840 y Fu(cs)p 728 1850 V 736 1850 V 813 1833 a Fr(LIGHT)p 926 1833 14 2 v 15 w(MODEL)p 1051 1833 V 15 w(AMBIENT)p 1291 1850 2 57 v 262 w FC(4)p 1688 1850 V 470 1851 1220 2 v 469 1908 2 57 v 571 1891 a Fy(v)593 1898 y Fu(bs)p 728 1908 V 736 1908 V 762 1891 a Fr(LIGHT)p 875 1891 14 2 v 15 w(MODEL)p 1000 1891 V 14 w(LOCAL)p 1124 1891 V 15 w(VIEWER)p 1291 1908 2 57 v 211 w FC(1)p 1688 1908 V 470 1909 1220 2 v 469 1966 2 57 v 574 1949 a Fy(t)590 1956 y Fu(bs)p 728 1966 V 736 1966 V 805 1949 a Fr(LIGHT)p 918 1949 14 2 v 15 w(MODEL)p 1043 1949 V 15 w(TWO)p 1124 1949 V 15 w(SIDE)p 1291 1966 2 57 v 255 w FC(1)p 1688 1966 V 470 1968 1220 2 v 332 2095 a(T)l(able)33 b(2.8:)51 b(Corresp)q(ondence)33 b(of)e(ligh)o(ting) i(parameter)e(sym)o(b)q(ols)h(to)f(names.)332 2151 y Fr(AMBIENT)p 489 2151 14 2 v 14 w(AND)p 569 2151 V 15 w(DIFFUSE)14 b FC(is)i(used)g(to)e(set)h Fz(a)1050 2158 y Fu(cm)1114 2151 y FC(and)h Fz(d)1232 2158 y Fu(cm)1295 2151 y FC(to)f(the)g(same)g(v)m(alue.)p eop %%Page: 49 58 49 57 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(49)p 139 600 1459 2 v 139 2079 2 1479 v 193 675 a 21313290 17476896 2039234 1973452 59927183 49994137 startTexFig 193 675 a %%BeginDocument: pics/colormaterial.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Helvetica-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-BoldOblique-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave matrix currentmatrix [96 0 0 -48 192 760] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 207 715] concat newpath 0 0 M 0 38 L 52.554 38 L 52.554 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 205 713 M 205 755 L 261.554 755 L 261.554 713 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 207 715] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 21.4706 M (Current) 50.554 S 0 2.47059 M (Color) 36.554 S setmatrix grestore gsave matrix currentmatrix [120 0 0 -48 544 608] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 551 563] concat newpath 0 0 M 0 38 L 97.662 38 L 97.662 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 549 561 M 549 603 L 650.662 603 L 650.662 561 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 551 563] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 21.4706 M (Front Ambient) 95.662 S 0 2.47059 M (Color) 36.554 S setmatrix grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 600] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 568] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 456 584] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 452 584 M 420 596 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 545 584 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 460 584 M 536 584 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 600 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 352 736 M 352 600 L 412 600 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 753 584 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 664 584 M 744 584 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 193 736 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth [4] 0 setdash newpath 96 736 M 184 736 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 568 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth [4] 0 setdash newpath 232 568 M 412 568 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 463 616] concat newpath 0 0 M 0 57 L 439.934 57 L 439.934 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 461 614 M 461 675 L 904.934 675 L 904.934 614 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 463 616] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 40.4706 M (Up while ColorMater) 135.352 S 135.352 40.4706 M (ial ) 19.46 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 154.812 40.4706 M (face ) 31.906 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 186.718 40.4706 M (is FRONT or FRONT_A) 151.676 S 338.394 40.4706 M (ND_BACK,) 72.324 S 0 21.4706 M (and ColorMaterial ) 122.136 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 122.136 21.4706 M (mode ) 41.23 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 163.366 21.4706 M (is AMBIENT or AMBIE) 146.23 S 309.596 21.4706 M (NT_AND_DIFFUSE,) 128.338 S 0 2.47059 M (and ColorMaterial i) 126.028 S 126.028 2.47059 M (s enabled. Down ot) 131.474 S 257.502 2.47059 M (herwise.) 56.028 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 31 558] concat newpath 0 0 M 0 19 L 185.554 19 L 185.554 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 29 556 M 29 579 L 218.554 579 L 218.554 556 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 31 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Material*\(FRONT,AMB) 147 S 147 2.47059 M (IENT\)) 36.554 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 439.629 599.072 translate -111.801 rotate 1.2 1.2 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 2.000000 setlinewidth newpath 456 640 M 442.971 607.428 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 767 574] concat newpath 0 0 M 0 19 L 143.568 19 L 143.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 765 572 M 765 595 L 912.568 595 L 912.568 572 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 767 574] concat /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (To lighting equatio) 125.23 S 125.23 2.47059 M (ns) 16.338 S setmatrix grestore gsave matrix currentmatrix [120 0 0 -48 544 472] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 551 427] concat newpath 0 0 M 0 38 L 89.108 38 L 89.108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 549 425 M 549 467 L 642.108 467 L 642.108 425 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 551 427] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 21.4706 M (Front Diffuse) 87.108 S 0 2.47059 M (Color) 36.554 S setmatrix grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 464] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 432] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 456 448] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 452 448 M 420 460 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 545 448 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 460 448 M 536 448 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 464 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 352 600 M 352 464 L 412 464 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 753 448 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 664 448 M 744 448 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 432 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth [4] 0 setdash newpath 232 432 M 412 432 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 463 480] concat newpath 0 0 M 0 57 L 436.056 57 L 436.056 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 461 478 M 461 539 L 901.056 539 L 901.056 478 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 463 480] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 40.4706 M (Up while ColorMater) 135.352 S 135.352 40.4706 M (ial ) 19.46 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 154.812 40.4706 M (face ) 31.906 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 186.718 40.4706 M (is FRONT or FRONT_A) 151.676 S 338.394 40.4706 M (ND_BACK,) 72.324 S 0 21.4706 M (and ColorMaterial ) 122.136 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 122.136 21.4706 M (mode ) 41.23 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 163.366 21.4706 M (is DIFFUSE or AMBIE) 142.352 S 305.718 21.4706 M (NT_AND_DIFFUSE,) 128.338 S 0 2.47059 M (and ColorMaterial i) 126.028 S 126.028 2.47059 M (s enabled. Down ot) 131.474 S 257.502 2.47059 M (herwise.) 56.028 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 31 422] concat newpath 0 0 M 0 19 L 181.676 19 L 181.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 29 420 M 29 443 L 214.676 443 L 214.676 420 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 31 422] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Material*\(FRONT,DIF) 137.676 S 137.676 2.47059 M (FUSE\)) 42 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 439.629 463.072 translate -111.801 rotate 1.2 1.2 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 2.000000 setlinewidth newpath 456 504 M 442.971 471.428 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 767 438] concat newpath 0 0 M 0 19 L 143.568 19 L 143.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 765 436 M 765 459 L 912.568 459 L 912.568 436 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 767 438] concat /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (To lighting equatio) 125.23 S 125.23 2.47059 M (ns) 16.338 S setmatrix grestore gsave matrix currentmatrix [120 0 0 -48 544 336] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 328] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 296] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 456 312] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 452 312 M 420 324 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 545 312 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 460 312 M 536 312 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 328 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 352 464 M 352 328 L 412 328 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 753 312 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 664 312 M 744 312 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 296 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth [4] 0 setdash newpath 248 296 M 412 296 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 463 344] concat newpath 0 0 M 0 57 L 412.718 57 L 412.718 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 461 342 M 461 403 L 877.718 403 L 877.718 342 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 463 344] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 40.4706 M (Up while ColorMater) 135.352 S 135.352 40.4706 M (ial ) 19.46 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 154.812 40.4706 M (face ) 31.906 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 186.718 40.4706 M (is FRONT or FRONT_A) 151.676 S 338.394 40.4706 M (ND_BACK,) 72.324 S 0 21.4706 M (and ColorMaterial ) 122.136 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 122.136 21.4706 M (mode ) 41.23 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 163.366 21.4706 M (is SPECULAR, and Co) 147.798 S 311.164 21.4706 M (lorMaterial is) 86.366 S 0 2.47059 M (enabled. Down othe) 136.136 S 136.136 2.47059 M (rwise.) 39.69 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 31 286] concat newpath 0 0 M 0 19 L 198.784 19 L 198.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 29 284 M 29 307 L 231.784 307 L 231.784 284 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 31 286] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Material*\(FRONT,SPE) 143.136 S 143.136 2.47059 M (CULAR\)) 53.648 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 439.629 327.072 translate -111.801 rotate 1.2 1.2 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 2.000000 setlinewidth newpath 456 368 M 442.971 335.428 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 767 302] concat newpath 0 0 M 0 19 L 143.568 19 L 143.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 765 300 M 765 323 L 912.568 323 L 912.568 300 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 767 302] concat /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (To lighting equatio) 125.23 S 125.23 2.47059 M (ns) 16.338 S setmatrix grestore gsave matrix currentmatrix [120 0 0 -48 544 200] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 551 155] concat newpath 0 0 M 0 38 L 103.906 38 L 103.906 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 549 153 M 549 195 L 656.906 195 L 656.906 153 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 551 155] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 21.4706 M (Front Emission) 101.906 S 0 2.47059 M (Color) 36.554 S setmatrix grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 192] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 424 160] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 2.000000 setlinewidth matrix currentmatrix [4 0 0 4 456 176] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 452 176 M 420 188 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 545 176 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 460 176 M 536 176 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 192 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 352 328 M 352 192 L 412 192 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 753 176 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 664 176 M 744 176 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 421 160 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth [4] 0 setdash newpath 240 160 M 412 160 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 463 208] concat newpath 0 0 M 0 57 L 412.718 57 L 412.718 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 461 206 M 461 267 L 877.718 267 L 877.718 206 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 463 208] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 40.4706 M (Up while ColorMater) 135.352 S 135.352 40.4706 M (ial ) 19.46 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 154.812 40.4706 M (face ) 31.906 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 186.718 40.4706 M (is FRONT or FRONT_A) 151.676 S 338.394 40.4706 M (ND_BACK,) 72.324 S 0 21.4706 M (and ColorMaterial ) 122.136 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 122.136 21.4706 M (mode ) 41.23 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 163.366 21.4706 M (is EMISSION, and Co) 139.258 S 302.624 21.4706 M (lorMaterial is) 86.366 S 0 2.47059 M (enabled. Down othe) 136.136 S 136.136 2.47059 M (rwise.) 39.69 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 31 150] concat newpath 0 0 M 0 19 L 190.244 19 L 190.244 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 29 148 M 29 171 L 223.244 171 L 223.244 148 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 31 150] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Material*\(FRONT,EMI) 140.014 S 140.014 2.47059 M (SSION\)) 48.23 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 439.629 191.072 translate -111.801 rotate 1.2 1.2 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 2.000000 setlinewidth newpath 456 232 M 442.971 199.428 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 767 166] concat newpath 0 0 M 0 19 L 143.568 19 L 143.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 765 164 M 765 187 L 912.568 187 L 912.568 164 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 767 166] concat /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (To lighting equatio) 125.23 S 125.23 2.47059 M (ns) 16.338 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 551 291] concat newpath 0 0 M 0 38 L 100.798 38 L 100.798 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 549 289 M 549 331 L 653.798 331 L 653.798 289 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 551 291] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 21.4706 M (Front Specular) 98.798 S 0 2.47059 M (Color) 36.554 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 31 726] concat newpath 0 0 M 0 19 L 53.324 19 L 53.324 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 29 724 M 29 747 L 86.324 747 L 86.324 724 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 31 726] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Color*\(\)) 51.324 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 481 736 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 288 736 M 472 736 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 495 726] concat newpath 0 0 M 0 19 L 226.056 19 L 226.056 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 493 724 M 493 747 L 723.056 747 L 723.056 724 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 495 726] concat /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (To subsequent vert) 133.028 S 133.028 2.47059 M (ex operations) 91.028 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 289 72 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth [4] 0 setdash newpath 224 72 M 280 72 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 289 40 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -10 -3 L -10 3 L closepath fill grestore 3.000000 setlinewidth newpath 224 40 M 280 40 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 303 30] concat newpath 0 0 M 0 19 L 310.07 19 L 310.07 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 301 28 M 301 51 L 615.07 51 L 615.07 28 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 303 30] concat /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (State values flow c) 125.272 S 125.272 2.47059 M (ontinuously along t) 129.122 S 254.394 2.47059 M (his path) 53.676 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 303 62] concat newpath 0 0 M 0 19 L 436.91 19 L 436.91 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 301 60 M 301 83 L 741.91 83 L 741.91 60 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 303 62] concat /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (State values flow a) 125.272 S 125.272 2.47059 M (long this path only) 124.46 S 249.732 2.47059 M ( when a command is ) 140.826 S 390.558 2.47059 M (issued) 44.352 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1900 a Fm(Figure)13 b(2.9.)k Fk(ColorMaterial)11 b Fm(op)q(eration.)18 b(Material)12 b(prop)q(erties)j(are)f(con)o(tin)o (uously)178 1950 y(up)q(dated)e(from)f(the)h(curren)o(t)i(color)e (while)f Fk(ColorMaterial)f Fm(is)h(enabled)i(and)f(has)g(the)178 2000 y(appropriate)17 b(mo)q(de.)28 b(Only)17 b(the)h(fron)o(t)f (material)e(prop)q(erties)k(are)f(included)g(in)e(this)178 2049 y(\014gure.)i(The)c(bac)o(k)g(material)e(prop)q(erties)k(are)e (treated)h(iden)o(tically)m(.)p 1595 2079 2 1479 v 139 2081 1459 2 v eop %%Page: 50 59 50 58 bop 332 137 a FC(50)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)403 286 y FC(The)f(command)g(that)g(con)o (trols)f(whic)o(h)j(of)d(these)i(mo)q(des)f(is)h(selected)g(is)446 387 y Fw(void)29 b Fz(ColorMaterial)p FC(\()j Fw(enum)14 b Fv(fac)n(e)p Fw(,)h(enum)g Fv(mo)n(de)g FC(\))g Fw(;)332 488 y Fv(fac)n(e)j FC(is)h(one)f(of)g Fr(FRONT)p FC(,)e Fr(BACK)p FC(,)h(or)h Fr(FRONT)p 1046 488 14 2 v 15 w(AND)p 1127 488 V 15 w(BACK)p FC(,)f(indicating)j(whether)e(the)g(fron)o(t)332 545 y(material,)j(bac)o(k)f(material,)i(or)d(b)q(oth)h(are)g (a\013ected)g(b)o(y)g(the)g(curren)o(t)h(color.)34 b Fv(mo)n(de)332 601 y FC(is)16 b(one)g(of)f Fr(EMISSION)p FC(,)e Fr(AMBIENT)p FC(,)h Fr(DIFFUSE)p FC(,)g Fr(SPECULAR)p FC(,)f(or)i Fr(AMBIENT)p 1493 601 V 14 w(AND)p 1573 601 V 15 w(DIFFUSE)f FC(and)332 658 y(sp)q(eci\014es)21 b(whic)o(h)e (material)g(prop)q(ert)o(y)f(or)g(prop)q(erties)i(trac)o(k)e(the)g (curren)o(t)h(color.)30 b(If)332 714 y Fv(mo)n(de)22 b FC(is)h Fr(EMISSION)p FC(,)d Fr(AMBIENT)p FC(,)g Fr(DIFFUSE)p FC(,)g(or)h Fr(SPECULAR)p FC(,)f(then)j(the)f(v)m(alue)h(of)e Fz(e)1765 721 y Fu(cm)1814 714 y FC(,)332 771 y Fz(a)357 778 y Fu(cm)406 771 y FC(,)26 b Fz(d)474 778 y Fu(cm)546 771 y FC(or)e Fz(s)632 778 y Fu(cm)680 771 y FC(,)i(resp)q(ectiv)o(ely) l(,)i(will)d(trac)o(k)e(the)h(curren)o(t)g(color.)47 b(If)24 b Fv(mo)n(de)g FC(is)332 827 y Fr(AMBIENT)p 489 827 V 14 w(AND)p 569 827 V 15 w(DIFFUSE)p FC(,)19 b(b)q(oth)h Fz(a)904 834 y Fu(cm)973 827 y FC(and)g Fz(d)1095 834 y Fu(cm)1164 827 y FC(trac)o(k)f(the)h(curren)o(t)g(color.)35 b(The)20 b(re-)332 884 y(placemen)o(ts)c(made)e(to)h(material)g(prop)q (erties)g(are)g(p)q(ermanen)o(t;)f(the)h(replaced)h(v)m(alues)332 940 y(remain)f(un)o(til)g(c)o(hanged)g(b)o(y)f(either)h(sending)g(a)f (new)g(color)g(or)g(b)o(y)g(setting)g(a)g(new)h(ma-)332 997 y(terial)h(v)m(alue)h(when)f Fz(ColorMaterial)h FC(is)f(not)f (curren)o(tly)h(enabled)h(to)e(o)o(v)o(erride)g(that)332 1053 y(particular)h(v)m(alue.)21 b(When)16 b Fr(COLOR)p 923 1053 V 14 w(MATERIAL)e FC(is)i(enabled,)g(the)f(indicated)i (parameter)332 1109 y(or)e(parameters)f(alw)o(a)o(ys)h(trac)o(k)f(the)h (curren)o(t)g(color.)20 b(F)l(or)15 b(instance,)g(calling)446 1211 y Fz(ColorMaterial)p Fw(\()p Fr(FRONT)p FC(,)g Fr(AMBIENT)p Fw(\))332 1312 y FC(while)j Fr(COLOR)p 565 1312 V 15 w(MATERIAL)c FC(is)j(enabled)h(sets)e(the)h(fron)o(t)e(material)i Fz(a)1470 1319 y Fu(cm)1535 1312 y FC(to)f(the)g(v)m(alue)i(of)332 1368 y(the)d(curren)o(t)g(color.)332 1500 y Fl(2.13.4)55 b(Ligh)n(ting)18 b(State)332 1589 y FC(The)11 b(state)f(required)j(for) d(ligh)o(ting)i(consists)f(of)g(all)h(of)e(the)h(ligh)o(ting)i (parameters)d(\(fron)o(t)332 1646 y(and)i(bac)o(k)f(material)h (parameters,)f(ligh)o(ting)i(mo)q(del)g(parameters,)e(and)h(at)f(least) g(8)h(sets)332 1702 y(of)i(ligh)o(t)g(parameters\),)f(a)h(bit)h (indicating)h(whether)e(a)g(bac)o(k)g(color)g(distinct)h(from)e(the)332 1759 y(fron)o(t)i(color)i(should)g(b)q(e)g(computed,)g(at)e(least)i(8)f (bits)g(to)g(indicate)i(whic)o(h)f(ligh)o(ts)g(are)332 1815 y(enabled,)d(a)e(\014v)o(e-v)m(alued)i(v)m(ariable)f(indicating)h (the)e(curren)o(t)g Fz(ColorMaterial)i FC(mo)q(de,)332 1872 y(a)i(bit)h(indicating)i(whether)d(or)g(not)g Fr(COLOR)p 1084 1872 V 15 w(MATERIAL)f FC(is)i(enabled,)g(and)g(a)f(single)i(bit) 332 1928 y(to)e(indicate)j(whether)e(ligh)o(ting)h(is)g(enabled)h(or)d (disabled.)27 b(In)18 b(the)f(initial)i(state,)e(all)332 1985 y(ligh)o(ting)k(parameters)d(ha)o(v)o(e)h(their)g(default)h(v)m (alues.)33 b(Bac)o(k)19 b(color)h(ev)m(aluation)g(do)q(es)332 2041 y(not)14 b(tak)o(e)f(place,)i Fz(ColorMaterial)h FC(is)f Fr(FRONT)p 1131 2041 V 14 w(AND)p 1211 2041 V 15 w(BACK)f FC(and)g Fr(AMBIENT)p 1569 2041 V 14 w(AND)p 1649 2041 V 15 w(DIFFUSE)p FC(,)332 2097 y(and)h(b)q(oth)h(ligh)o(ting) g(and)g Fr(COLOR)p 895 2097 V 14 w(MATERIAL)e FC(are)h(disabled.)332 2229 y Fl(2.13.5)55 b(Color)19 b(Index)f(Ligh)n(ting)332 2319 y FC(A)k(simpli\014ed)j(ligh)o(ting)e(computation)f(applies)i(in)f (color)f(index)h(mo)q(de)g(that)e(uses)332 2375 y(man)o(y)14 b(of)h(the)g(parameters)f(con)o(trolling)h(R)o(GBA)g(ligh)o(ting,)h (but)f(none)g(of)f(the)h(R)o(GBA)332 2432 y(material)20 b(parameters.)33 b(First,)20 b(the)f(R)o(GBA)h(di\013use)h(and)f(sp)q (ecular)g(in)o(tensities)i(of)332 2488 y(ligh)o(t)13 b Fy(i)g FC(\()p Fz(d)510 2495 y Fu(cli)562 2488 y FC(and)g Fz(s)669 2495 y Fu(cli)709 2488 y FC(,)g(resp)q(ectiv)o(ely\))h (determine)g(color)f(index)h(di\013use)f(and)g(sp)q(ecular)p eop %%Page: 51 60 51 59 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(51)120 286 y(ligh)o(t)16 b(in)o(tensities,)h Fy(d)476 293 y Fu(li)516 286 y FC(and)e Fy(s)625 293 y Fu(li)665 286 y FC(from)407 388 y Fy(d)431 395 y Fu(li)468 388 y FC(=)e(\()p Fy(:)p FC(30\))p Fy(R)p FC(\()p Fz(d)693 395 y Fu(cli)731 388 y FC(\))d(+)g(\()p Fy(:)p FC(59\))p Fy(G)p FC(\()p Fz(d)982 395 y Fu(cli)1021 388 y FC(\))f(+)i(\()p Fy(:)p FC(11\))p Fy(B)r FC(\()p Fz(d)1272 395 y Fu(cli)1311 388 y FC(\))120 490 y(and)414 547 y Fy(s)435 554 y Fu(li)473 547 y FC(=)i(\()p Fy(:)p FC(30\))p Fy(R)p FC(\()p Fz(s)690 554 y Fu(cli)728 547 y FC(\))d(+)g(\()p Fy(:)p FC(59\))p Fy(G)p FC(\()p Fz(s)971 554 y Fu(cli)1009 547 y FC(\))g(+)g(\()p Fy(:)p FC(11\))p Fy(B)r FC(\()p Fz(s)1252 554 y Fu(cli)1291 547 y FC(\))p Fy(:)120 630 y(R)p FC(\()p Fz(x)p FC(\))16 b(indicates)i(the)e(R)h(comp)q(onen)o(t)g(of)f(the)h(color)f Fz(x)g FC(and)h(similarly)h(for)e Fy(G)p FC(\()p Fz(x)p FC(\))g(and)120 687 y Fy(B)r FC(\()p Fz(x)p FC(\).)191 743 y(Next,)f(let)488 827 y Fy(s)e FC(=)589 774 y Fu(n)570 787 y Fi(X)571 878 y Fu(i)p Fq(=0)630 827 y FC(\()p Fy(att)704 834 y Fu(i)718 827 y FC(\)\()p Fy(spot)836 834 y Fu(i)850 827 y FC(\)\()p Fy(s)907 834 y Fu(li)932 827 y FC(\)\()p Fy(f)990 834 y Fu(i)1004 827 y FC(\)\()p Fz(n)c FB(\014)1127 815 y FC(^)1124 827 y Fz(h)1153 834 y Fu(i)1167 827 y FC(\))1185 809 y Fu(s)1201 813 y Fg(r)q(m)120 945 y FC(where)15 b Fy(att)307 952 y Fu(i)336 945 y FC(and)f Fy(spot)505 952 y Fu(i)534 945 y FC(are)g(giv)o(en)g(b)o(y)g(equations)h(2.4)e(and) h(2.5,)f(resp)q(ectiv)o(ely)l(,)j(and)e Fy(f)1600 952 y Fu(i)120 1001 y FC(and)212 989 y(^)209 1001 y Fz(h)238 1008 y Fu(i)268 1001 y FC(are)h(giv)o(en)h(b)o(y)f(equations)h(2.2)e (and)i(2.3,)e(resp)q(ectiv)o(ely)l(.)23 b(Let)15 b Fy(s)1343 985 y FG(0)1368 1001 y FC(=)f(min)p FB(f)p Fy(s;)8 b FC(1)p FB(g)p FC(.)120 1058 y(Finally)l(,)17 b(let)513 1142 y Fy(d)12 b FC(=)616 1089 y Fu(n)597 1102 y Fi(X)598 1193 y Fu(i)p Fq(=0)657 1142 y FC(\()p Fy(att)731 1149 y Fu(i)746 1142 y FC(\)\()p Fy(spot)864 1149 y Fu(i)878 1142 y FC(\)\()p Fy(d)938 1149 y Fu(li)962 1142 y FC(\)\()p Fz(n)d FB(\014)1082 1111 y(\000)-6 b(!)1082 1142 y Fz(VP)1149 1149 y Fu(pli)1192 1142 y FC(\))p Fy(:)120 1260 y FC(Then)16 b(color)f(index)i(ligh)o(ting)f(pro)q(duces)g(a)f(v)m(alue)i Fy(c)p FC(,)d(giv)o(en)i(b)o(y)431 1361 y Fy(c)d FC(=)g Fy(a)536 1368 y Fu(m)579 1361 y FC(+)d Fy(d)p FC(\(1)g FB(\000)g Fy(s)765 1343 y FG(0)777 1361 y FC(\)\()p Fy(d)837 1368 y Fu(m)879 1361 y FB(\000)h Fy(a)949 1368 y Fu(m)982 1361 y FC(\))f(+)g Fy(s)1076 1343 y FG(0)1088 1361 y FC(\()p Fy(s)1127 1368 y Fu(m)1171 1361 y FB(\000)g Fy(a)1240 1368 y Fu(m)1274 1361 y FC(\))p Fy(:)120 1463 y FC(The)16 b(\014nal)g(color)f(index)i(is)707 1520 y Fy(c)727 1501 y FG(0)751 1520 y FC(=)c(min)q FB(f)p Fy(c;)8 b(s)960 1527 y Fu(m)992 1520 y FB(g)p Fy(:)120 1603 y FC(The)18 b(v)m(alues)g Fy(a)377 1610 y Fu(m)411 1603 y FC(,)f Fy(d)465 1610 y Fu(m)515 1603 y FC(and)h Fy(s)627 1610 y Fu(m)678 1603 y FC(are)f(material)g(prop)q(erties)h(describ)q(ed)i (in)e(T)l(ables)g(2.7)120 1660 y(and)h(2.8.)28 b(An)o(y)18 b(am)o(bien)o(t)g(ligh)o(t)h(in)o(tensities)h(are)d(incorp)q(orated)i (in)o(to)f Fy(a)1381 1667 y Fu(m)1415 1660 y FC(.)28 b(As)18 b(with)120 1716 y(R)o(GBA)12 b(ligh)o(ting,)i(disabled)f(ligh)o (ts)g(cause)f(the)g(corresp)q(onding)g(terms)g(from)f(the)h(sum-)120 1773 y(mations)h(to)f(b)q(e)i(omitted.)19 b(The)13 b(in)o(terpretation) g(of)g Fy(t)1033 1780 y Fu(bs)1080 1773 y FC(and)g(the)g(calculation)h (of)f(fron)o(t)120 1829 y(and)23 b(bac)o(k)f(colors)g(is)g(carried)h (out)f(as)f(has)h(already)h(b)q(een)g(describ)q(ed)h(for)e(R)o(GBA)120 1885 y(ligh)o(ting.)191 1942 y(The)27 b(v)m(alues)i Fy(a)468 1949 y Fu(m)501 1942 y FC(,)h Fy(d)568 1949 y Fu(m)601 1942 y FC(,)f(and)f Fy(s)765 1949 y Fu(m)825 1942 y FC(are)f(set)g (with)g Fz(Material)i FC(using)f Fv(pr)n(op)f FC(of)120 1998 y Fr(COLOR)p 233 1998 14 2 v 15 w(INDEXES)p FC(.)18 b(Their)j(initial)h(v)m(alues)f(are)e(0,)i(1,)f(and)g(1,)h(resp)q (ectiv)o(ely)l(.)36 b(The)20 b(ad-)120 2055 y(ditional)f(state)e (consists)g(of)g(three)g(\015oating-p)q(oin)o(t)h(v)m(alues.)28 b(These)17 b(v)m(alues)i(ha)o(v)o(e)e(no)120 2111 y(e\013ect)e(on)g(R)o (GBA)h(ligh)o(ting.)120 2233 y Fl(2.13.6)56 b(Clamping)17 b(or)i(Masking)120 2319 y FC(After)f(ligh)o(ting)h(\(whether)f(enabled) h(or)f(not\),)f(R)o(GBA)h(colors)g(are)g(clamp)q(ed)h(to)f(the)120 2375 y(range)12 b([0)p Fy(;)c FC(1].)17 b(F)l(or)11 b(a)h(color)g (index,)i(the)e(index)h(is)g(\014rst)f(con)o(v)o(erted)g(to)f (\014xed-p)q(oin)o(t)i(with)120 2432 y(an)k(unsp)q(eci\014ed)j(n)o(um)o (b)q(er)d(of)g(bits)g(to)f(the)h(righ)o(t)g(of)f(the)i(binary)f(p)q (oin)o(t;)h(the)f(nearest)120 2488 y(\014xed-p)q(oin)o(t)g(v)m(alue)f (is)f(selected.)21 b(Then,)16 b(the)f(bits)g(to)f(the)h(righ)o(t)g(of)g (the)g(binary)g(p)q(oin)o(t)p eop %%Page: 52 61 52 60 bop 332 137 a FC(52)643 b Fx(CHAPTER)16 b(2.)34 b(OPENGL)16 b(OPERA)l(TION)p 664 242 830 2 v 663 299 2 57 v 689 282 a FC(Primitiv)o(e)h(t)o(yp)q(e)e(of)g(p)q(olygon)g Fy(i)p 1313 299 V 108 w FC(V)l(ertex)p 1493 299 V 664 301 830 2 v 664 309 V 663 365 2 57 v 689 348 a(single)i(p)q(olygon)f (\()p Fy(i)11 b FB(\021)i FC(1\))p 1313 365 V 271 w(1)p 1493 365 V 664 367 830 2 v 663 423 2 57 v 689 406 a(triangle)j(strip)p 1313 423 V 410 w Fy(i)10 b FC(+)g(2)p 1493 423 V 664 425 830 2 v 663 482 2 57 v 689 465 a(triangle)16 b(fan)p 1313 482 V 439 w Fy(i)10 b FC(+)g(2)p 1493 482 V 664 483 830 2 v 663 540 2 57 v 689 523 a(indep)q(enden)o(t)18 b(triangle)p 1313 540 V 287 w(3)p Fy(i)p 1493 540 V 664 541 830 2 v 663 598 2 57 v 689 581 a FC(quad)e(strip)p 1313 598 V 453 w(2)p Fy(i)9 b FC(+)i(2)p 1493 598 V 664 599 830 2 v 663 656 2 57 v 689 639 a(indep)q(enden)o(t)18 b(quad)p 1313 656 V 341 w(4)p Fy(i)p 1493 656 V 664 658 830 2 v 332 785 a FC(T)l(able)12 b(2.9:)17 b(P)o(olygon)10 b(\015atshading)h(color)g(selection.)20 b(The)11 b(color)g(used)h(for)e (\015atshading)332 841 y(the)15 b Fy(i)p FC(th)f(p)q(olygon)h (generated)g(b)o(y)g(the)g(indicated)h Fz(Begin)p FC(/)p Fz(End)g FC(t)o(yp)q(e)f(is)g(the)g(curren)o(t)332 897 y(color)f(\(if)g(ligh)o(ting)i(is)e(disabled\))i(in)f(e\013ect)f(when)g (the)h(indicated)g(v)o(ertex)f(is)h(sp)q(eci\014ed.)332 954 y(If)k(ligh)o(ting)h(is)g(enabled,)h(the)e(color)g(is)g(pro)q (duced)h(b)o(y)f(ligh)o(ting)h(the)f(indicated)i(v)o(er-)332 1010 y(tex.)h(V)l(ertices)17 b(are)f(n)o(um)o(b)q(ered)g(1)g(through)f Fy(n)p FC(,)h(where)h Fy(n)f FC(is)g(the)g(n)o(um)o(b)q(er)h(of)e(v)o (ertices)332 1067 y(b)q(et)o(w)o(een)h(the)f Fz(Begin)p FC(/)p Fz(End)h FC(pair.)332 1211 y(are)21 b(left)g(alone)h(while)g (the)g(in)o(teger)f(p)q(ortion)g(is)h(mask)o(ed)e(\(bit)o(wise)i (ANDed\))f(with)332 1268 y(2)355 1251 y Fu(n)391 1268 y FB(\000)12 b FC(1,)19 b(where)g Fy(n)g FC(is)g(the)g(n)o(um)o(b)q(er) f(of)h(bits)g(in)g(a)f(color)h(in)g(the)g(color)g(index)g(bu\013er)332 1324 y(\(bu\013ers)c(are)g(discussed)h(in)h(c)o(hapter)e(4\).)332 1458 y Fl(2.13.7)55 b(Flatshading)332 1548 y FC(A)13 b(primitiv)o(e)h(ma)o(y)f(b)q(e)g Fv(\015atshade)n(d)p FC(,)h(meaning)f(that)f(all)i(v)o(ertices)g(of)e(the)h(primitiv)o(e)i (are)332 1605 y(assigned)h(the)g(same)g(color.)21 b(This)c(color)f(is)g (the)g(color)g(of)f(the)h(v)o(ertex)f(that)g(spa)o(wned)332 1661 y(the)g(primitiv)o(e.)21 b(F)l(or)13 b(a)h(p)q(oin)o(t,)h(this)g (is)g(the)f(color)h(asso)q(ciated)g(with)f(the)h(p)q(oin)o(t.)20 b(F)l(or)14 b(a)332 1718 y(line)j(segmen)o(t,)d(it)i(is)f(the)g(color)g (of)g(the)g(second)h(\(\014nal\))f(v)o(ertex)g(of)f(the)i(segmen)o(t.)j (F)l(or)332 1774 y(a)f(p)q(olygon,)i(the)e(selected)i(color)f(dep)q (ends)h(on)e(ho)o(w)g(the)h(p)q(olygon)g(w)o(as)f(generated.)332 1831 y(T)l(able)e(2.9)e(summarizes)i(the)f(p)q(ossibilitie)q(s.)403 1889 y(Flatshading)g(is)h(con)o(trolled)g(b)o(y)446 1992 y Fw(void)29 b Fz(ShadeMo)q(del)p FC(\()j Fw(enum)14 b Fv(mo)n(de)i FC(\))e Fw(;)332 2095 y Fv(mo)n(de)f FC(v)m(alue)i(m)o (ust)d(b)q(e)i(either)g(of)e(the)h(sym)o(b)q(olic)i(constan)o(ts)d Fr(SMOOTH)g FC(or)g Fr(FLAT)p FC(.)g(If)h Fv(mo)n(de)332 2151 y FC(is)h Fr(SMOOTH)e FC(\(the)g(initial)k(state\),)c(v)o(ertex)g (colors)i(are)e(treated)h(individuall)q(y)l(.)22 b(If)14 b Fv(mo)n(de)f FC(is)332 2207 y Fr(FLAT)p FC(,)g(\015atshading)i(is)g (turned)g(on.)k Fz(ShadeMo)q(del)d FC(th)o(us)e(requires)h(one)g(bit)g (of)f(state.)332 2342 y Fl(2.13.8)55 b(Color)19 b(and)g(T)-5 b(exture)18 b(Co)r(ordinate)g(Clipping)332 2432 y FC(After)23 b(ligh)o(ting,)j(clamping)e(or)e(masking)i(and)f(p)q(ossible)i (\015atshading,)g(colors)e(are)332 2488 y(clipp)q(ed.)38 b(If)20 b(the)g(color)h(is)f(asso)q(ciated)h(with)f(a)g(v)o(ertex)g (that)g(lies)h(within)g(the)g(clip)p eop %%Page: 53 62 53 61 bop 120 137 a Fx(2.13.)34 b(COLORS)17 b(AND)e(COLORING)746 b FC(53)120 286 y(v)o(olume,)17 b(it)g(is)g(una\013ected)g(b)o(y)f (clipping.)26 b(If)17 b(a)f(primitiv)o(e)i(is)f(clipp)q(ed,)i(ho)o(w)o (ev)o(er,)d(the)120 343 y(colors)g(assigned)f(to)g(v)o(ertices)g(pro)q (duced)i(b)o(y)e(clipping)j(are)d(clipp)q(ed)i(colors.)191 399 y(Let)i(the)h(color)f(assigned)g(to)g(the)g(t)o(w)o(o)f(v)o (ertices)h Fz(P)1093 406 y Fq(1)1132 399 y FC(and)g Fz(P)1260 406 y Fq(2)1299 399 y FC(of)g(an)g(unclipp)q(ed)120 456 y(edge)g(b)q(e)h Fz(c)316 463 y Fq(1)355 456 y FC(and)f Fz(c)470 463 y Fq(2)489 456 y FC(.)31 b(The)19 b(v)m(alue)h(of)e Fy(t)h FC(\(section)g(2.11\))f(for)g(a)g(clipp)q(ed)k(p)q(oin)o(t)d Fz(P)f FC(is)120 512 y(used)e(to)f(obtain)g(the)g(color)h(asso)q (ciated)f(with)h Fz(P)e FC(as)675 603 y Fz(c)f FC(=)g Fy(t)p Fz(c)798 610 y Fq(1)829 603 y FC(+)d(\(1)g FB(\000)g Fy(t)p FC(\))p Fz(c)1027 610 y Fq(2)1047 603 y Fy(:)120 693 y FC(\(F)l(or)16 b(a)f(color)i(index)g(color,)f(m)o(ultiplying)i(a) e(color)g(b)o(y)g(a)g(scalar)g(means)h(m)o(ultiplying)120 749 y(the)g(index)h(b)o(y)f(the)f(scalar.)24 b(F)l(or)16 b(an)h(R)o(GBA)g(color,)f(it)h(means)g(m)o(ultiplying)h(eac)o(h)f(of) 120 806 y(R,)c(G,)f(B,)h(and)g(A)g(b)o(y)g(the)g(scalar.\))18 b(P)o(olygon)13 b(clipping)i(ma)o(y)e(create)f(a)h(clipp)q(ed)i(v)o (ertex)120 862 y(along)i(an)g(edge)h(of)e(the)i(clip)g(v)o(olume's)f(b) q(oundary)l(.)26 b(This)18 b(situation)g(is)f(handled)i(b)o(y)120 919 y(noting)e(that)f(p)q(olygon)h(clipping)i(pro)q(ceeds)e(b)o(y)f (clipping)j(against)e(one)f(plane)i(of)e(the)120 975 y(clip)j(v)o(olume's)d(b)q(oundary)h(at)f(a)h(time.)24 b(Color)16 b(clipping)j(is)e(done)g(in)h(the)f(same)f(w)o(a)o(y)l(,)120 1032 y(so)22 b(that)e(clipp)q(ed)25 b(p)q(oin)o(ts)d(alw)o(a)o(ys)e(o)q (ccur)i(at)f(the)h(in)o(tersection)g(of)f(p)q(olygon)h(edges)120 1088 y(\(p)q(ossibly)17 b(already)e(clipp)q(ed\))j(with)d(the)h(clip)g (v)o(olume's)g(b)q(oundary)l(.)191 1145 y(T)l(exture)j(co)q(ordinates)g (m)o(ust)g(also)g(b)q(e)g(clipp)q(ed)j(when)d(a)g(primitiv)o(e)h(is)f (clipp)q(ed.)120 1201 y(The)d(metho)q(d)f(is)h(exactly)f(analogous)g (to)g(that)f(used)i(for)f(color)g(clipping.)120 1321 y Fl(2.13.9)56 b(Final)18 b(Color)h(Pro)r(cessing)120 1407 y FC(F)l(or)c(an)g(R)o(GBA)g(color,)g(eac)o(h)g(color)g(comp)q (onen)o(t)g(\(whic)o(h)h(lies)g(in)g([0,1]\))d(is)j(con)o(v)o(erted)120 1463 y(\(b)o(y)k(rounding)h(to)e(nearest\))h(to)f(a)h(\014xed-p)q(oin)o (t)h(v)m(alue)g(with)f Fy(m)g FC(bits.)35 b(W)l(e)20 b(assume)120 1520 y(that)d(the)h(\014xed-p)q(oin)o(t)h(represen)o (tation)f(used)h(represen)o(ts)e(eac)o(h)h(v)m(alue)h Fy(k)q(=)p FC(\(2)1470 1503 y Fu(m)1515 1520 y FB(\000)12 b FC(1\),)120 1576 y(where)20 b Fy(k)g FB(2)g(f)p FC(0)p Fy(;)8 b FC(1)p Fy(;)g(:)f(:)h(:)t(;)g FC(2)563 1560 y Fu(m)608 1576 y FB(\000)13 b FC(1)p FB(g)p FC(,)19 b(as)g Fy(k)h FC(\(e.g.)31 b(1.0)18 b(is)i(represen)o(ted)g(in)g (binary)f(as)g(a)120 1633 y(string)c(of)g(all)h(ones\).)k Fy(m)15 b FC(m)o(ust)f(b)q(e)i(at)f(least)g(as)g(large)g(as)g(the)g(n)o (um)o(b)q(er)g(of)g(bits)h(in)g(the)120 1689 y(corresp)q(onding)21 b(comp)q(onen)o(t)e(of)g(the)g(framebu\013er.)32 b(If)19 b(the)h(framebu\013er)f(do)q(es)g(not)120 1745 y(con)o(tain)g(an)f(A)g (comp)q(onen)o(t,)g(then)h Fy(m)f FC(m)o(ust)g(b)q(e)g(at)g(least)g(2)g (for)f(A.)h(A)g(color)g(index)120 1802 y(is)e(con)o(v)o(erted)e(\(b)o (y)h(rounding)g(to)f(nearest\))g(to)h(a)f(\014xed-p)q(oin)o(t)i(v)m (alue)g(with)f(at)f(least)h(as)120 1858 y(man)o(y)g(bits)h(as)f(there)g (are)g(in)h(the)f(color)g(index)i(p)q(ortion)e(of)g(the)g (framebu\013er.)191 1915 y(Because)e(a)e(n)o(um)o(b)q(er)i(of)e(the)h (form)g Fy(k)q(=)p FC(\(2)876 1898 y Fu(m)912 1915 y FB(\000)t FC(1\))f(ma)o(y)h(not)f(b)q(e)i(represen)o(ted)f(exactly)120 1971 y(as)g(a)g(limited-precision)j(\015oating-p)q(oin)o(t)e(quan)o (tit)o(y)l(,)f(w)o(e)g(place)h(a)e(further)h(requiremen)o(t)120 2028 y(on)k(the)g(\014xed-p)q(oin)o(t)h(con)o(v)o(ersion)f(of)g(R)o (GBA)g(comp)q(onen)o(ts.)21 b(Supp)q(ose)c(that)f(ligh)o(ting)120 2084 y(is)e(disabled,)i(the)d(color)h(asso)q(ciated)f(with)h(a)f(v)o (ertex)g(has)g(not)g(b)q(een)i(clipp)q(ed,)h(and)e(one)120 2141 y(of)k Fz(Colorub)p FC(,)i Fz(Colorus)p FC(,)e(or)g Fz(Colorui)h FC(w)o(as)f(used)h(to)f(sp)q(ecify)i(that)e(color.)29 b(When)120 2197 y(these)14 b(conditions)h(are)f(satis\014ed,)g(an)f(R)o (GBA)h(comp)q(onen)o(t)g(m)o(ust)f(con)o(v)o(ert)g(to)g(a)h(v)m(alue) 120 2254 y(that)e(matc)o(hes)g(the)g(comp)q(onen)o(t)g(as)g(sp)q (eci\014ed)i(in)f(the)f Fz(Color)h FC(command:)18 b(if)12 b Fy(m)g FC(is)h(less)120 2310 y(than)h(the)f(n)o(um)o(b)q(er)g(of)g (bits)h Fy(b)f FC(with)g(whic)o(h)h(the)g(comp)q(onen)o(t)f(w)o(as)g (sp)q(eci\014ed,)i(then)f(the)120 2366 y(con)o(v)o(erted)e(v)m(alue)h (m)o(ust)f(equal)g(the)g(most)f(signi\014can)o(t)i Fy(m)f FC(bits)g(of)g(the)g(sp)q(eci\014ed)i(v)m(alue;)120 2423 y(otherwise,)i(the)f(most)f(signi\014can)o(t)j Fy(b)d FC(bits)i(of)f(the)g(con)o(v)o(erted)g(v)m(alue)i(m)o(ust)e(equal)h (the)120 2479 y(sp)q(eci\014ed)i(v)m(alue.)p eop %%Page: 54 63 54 62 bop 332 634 a Ft(Chapter)31 b(3)332 878 y FA(Rasterization)332 1137 y FC(Rasterization)22 b(is)g(the)g(pro)q(cess)g(b)o(y)f(whic)o(h)i (a)e(primitiv)o(e)i(is)f(con)o(v)o(erted)f(to)g(a)h(t)o(w)o(o-)332 1193 y(dimensional)d(image.)26 b(Eac)o(h)17 b(p)q(oin)o(t)h(of)f(this)g (image)h(con)o(tains)f(suc)o(h)g(information)h(as)332 1250 y(color)g(and)h(depth.)30 b(Th)o(us,)19 b(rasterizing)f(a)g (primitiv)o(e)i(consists)f(of)f(t)o(w)o(o)f(parts.)28 b(The)332 1306 y(\014rst)14 b(is)h(to)f(determine)i(whic)o(h)f(squares) g(of)f(an)g(in)o(teger)h(grid)g(in)g(windo)o(w)g(co)q(ordinates)332 1363 y(are)g(o)q(ccupied)j(b)o(y)e(the)f(primitiv)o(e.)23 b(The)16 b(second)g(is)g(assigning)h(a)e(color)h(and)g(a)f(depth)332 1419 y(v)m(alue)j(to)d(eac)o(h)i(suc)o(h)f(square.)23 b(The)16 b(results)h(of)f(this)h(pro)q(cess)f(are)g(passed)h(on)f(to)f (the)332 1476 y(next)f(stage)g(of)f(the)i(GL)f(\(p)q(er-fragmen)o(t)f (op)q(erations\),)h(whic)o(h)h(uses)f(the)g(information)332 1532 y(to)f(up)q(date)h(the)f(appropriate)h(lo)q(cations)g(in)g(the)g (framebu\013er.)19 b(Figure)13 b(3.1)g(diagrams)332 1589 y(the)i(rasterization)h(pro)q(cess.)403 1681 y(A)k(grid)h(square)f (along)h(with)g(its)f(parameters)g(of)g(assigned)h(color,)g Fy(z)i FC(\(depth\),)332 1738 y(and)14 b(texture)f(co)q(ordinates)h(is) g(called)i(a)d Fv(fr)n(agment)p FC(;)g(the)h(parameters)f(are)g (collectiv)o(ely)332 1794 y(dubb)q(ed)18 b(the)e(fragmen)o(t's)e Fv(asso)n(ciate)n(d)j(data)p FC(.)23 b(A)16 b(fragmen)o(t)e(is)j(lo)q (cated)g(b)o(y)e(its)i(lo)o(w)o(er-)332 1851 y(left)f(corner,)f(whic)o (h)h(lies)h(on)f(in)o(teger)f(grid)h(co)q(ordinates.)21 b(Rasterization)16 b(op)q(erations)332 1907 y(also)e(refer)f(to)g(a)g (fragmen)o(t's)f Fv(c)n(enter)p FC(,)h(whic)o(h)h(is)g(o\013set)e(b)o (y)i(\(1)p Fy(=)p FC(2)p Fy(;)8 b FC(1)p Fy(=)p FC(2\))i(from)j(its)h (lo)o(w)o(er-)332 1964 y(left)i(corner)f(\(and)g(so)g(lies)h(on)f (half-in)o(teger)h(co)q(ordinates\).)403 2057 y(Grid)f(squares)f(need)i (not)e(actually)i(b)q(e)g(square)e(in)i(the)f(GL.)f(Rasterization)i (rules)332 2113 y(are)i(not)f(a\013ected)h(b)o(y)g(the)g(actual)g(asp)q (ect)g(ratio)f(of)h(the)f(grid)i(squares.)27 b(Displa)o(y)19 b(of)332 2170 y(non-square)c(grids,)f(ho)o(w)o(ev)o(er,)f(will)j(cause) f(rasterized)g(p)q(oin)o(ts)g(and)f(line)i(segmen)o(ts)e(to)332 2226 y(app)q(ear)19 b(fatter)e(in)j(one)e(direction)i(than)f(the)f (other.)30 b(W)l(e)18 b(assume)h(that)f(fragmen)o(ts)332 2282 y(are)d(square,)g(since)h(it)f(simpli\014es)j(an)o(tialiasing)e (and)g(texturing.)403 2375 y(Sev)o(eral)e(factors)f(a\013ect)g (rasterization.)19 b(Lines)c(and)f(p)q(olygons)g(ma)o(y)g(b)q(e)g (stippled.)332 2432 y(P)o(oin)o(ts)h(ma)o(y)f(b)q(e)i(giv)o(en)g (di\013ering)g(diameters)f(and)h(line)h(segmen)o(ts)d(di\013ering)i (widths.)332 2488 y(A)f(p)q(oin)o(t,)h(line)h(segmen)o(t,)d(or)h(p)q (olygon)g(ma)o(y)g(b)q(e)h(an)o(tialiased.)1057 2613 y(54)p eop %%Page: 55 64 55 63 bop 120 137 a Fx(3.1.)34 b(INV)-5 b(ARIANCE)1049 b FC(55)p 139 242 1459 2 v 139 1195 2 953 v 238 317 a 19892389 11537574 1447198 6841303 48415375 34206515 startTexFig 238 317 a %%BeginDocument: pics/raster.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave matrix currentmatrix [104 0 0 72 536 364] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 574 390] concat newpath 0 0 M 0 14 L 27.662 14 L 27.662 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 572 388 M 572 406.471 L 603.662 406.471 L 603.662 388 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 574 390] concat 1 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 2.47059 M (Fog) 25.662 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 384 364] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 402 390] concat newpath 0 0 M 0 14 L 65.784 14 L 65.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 400 388 M 400 406.471 L 469.784 406.471 L 469.784 388 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 402 390] concat 0.999998 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0.999998 2.47059 M (Texturing) 63.784 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 168 448] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 174 467] concat newpath 0 0 M 0 33 L 89.906 33 L 89.906 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 172 465 M 172 502.471 L 265.906 502.471 L 265.906 465 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 174 467] concat 27.453 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 27.453 21.4706 M (Point) 35 S 1 2.47059 M 1 2.47059 M (Rasterization) 87.906 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 168 364] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 174 383] concat newpath 0 0 M 0 33 L 89.906 33 L 89.906 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 172 381 M 172 418.471 L 265.906 418.471 L 265.906 381 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 174 383] concat 30.561 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 30.561 21.4706 M (Line) 28.784 S 1 2.47059 M 1 2.47059 M (Rasterization) 87.906 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 168 280] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 174 299] concat newpath 0 0 M 0 33 L 89.906 33 L 89.906 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 172 297 M 172 334.471 L 265.906 334.471 L 265.906 297 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 174 299] concat 17.338 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 17.338 21.4706 M (Polygon) 55.23 S 1 2.47059 M 1 2.47059 M (Rasterization) 87.906 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 272 488 M 332 400 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 272 400 M 336 400 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 272 312 M 332 400 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 385 400 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 336 400 M 366 400 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 537 400 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 488 400 M 518 400 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 22 372] concat newpath 0 0 M 0 52 L 68.136 52 L 68.136 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 20 370 M 20 426.471 L 92.136 426.471 L 92.136 370 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 22 372] concat 16.568 40.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 16.568 40.4706 M (From) 35 S 4.5 21.4706 M 4.5 21.4706 M (Primitive) 59.136 S 1 2.47059 M 1 2.47059 M (Assembly) 66.136 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 169 400 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 96 400 M 150 400 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 168.633 488.774 translate 50.7106 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 96 400 M 156.602 474.069 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 168.633 311.226 translate -50.7106 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 96 400 M 156.602 325.931 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 697 400 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 640 400 M 678 400 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 662 366] concat newpath 0 0 M 0 14 L 73.568 14 L 73.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 660 364 M 660 382.471 L 737.568 382.471 L 737.568 364 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 662 366] concat 1 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 2.47059 M (Fragments) 71.568 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 168 192] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 174 200] concat newpath 0 0 M 0 52 L 89.906 52 L 89.906 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 172 198 M 172 254.471 L 265.906 254.471 L 265.906 198 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 174 200] concat 28.608 40.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 28.608 40.4706 M (Pixel) 32.69 S 11.5 21.4706 M 11.5 21.4706 M (Rectangle) 66.906 S 1 2.47059 M 1 2.47059 M (Rasterization) 87.906 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 169 228 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 128 228 M 150 228 L stroke grestore gsave matrix currentmatrix [104 0 0 72 168 104] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 174 123] concat newpath 0 0 M 0 33 L 89.906 33 L 89.906 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 172 121 M 172 158.471 L 265.906 158.471 L 265.906 121 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 174 123] concat 21.23 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 21.23 21.4706 M (Bitmap) 47.446 S 1 2.47059 M 1 2.47059 M (Rasterization) 87.906 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 169 140 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 128 140 M 150 140 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 332 400 M 272 224 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 332 400 M 272 136 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 74 130] concat newpath 0 0 M 0 14 L 49.446 14 L 49.446 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 72 128 M 72 146.471 L 125.446 146.471 L 125.446 128 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 74 130] concat 1 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 2.47059 M (Bitmap) 47.446 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 46 218] concat newpath 0 0 M 0 14 L 76.704 14 L 76.704 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 44 216 M 44 234.471 L 124.704 234.471 L 124.704 216 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 46 218] concat 1 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 2.47059 M (DrawPixels) 74.704 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1166 a Fm(Figure)14 b(3.1.)j(Rasterization.)p 1595 1195 2 953 v 139 1197 1459 2 v 120 1380 a Fs(3.1)67 b(In)n(v)l(ariance) 120 1486 y FC(Consider)21 b(a)e(primitiv)o(e)j Fy(p)580 1470 y FG(0)611 1486 y FC(obtained)f(b)o(y)f(translating)g(a)f (primitiv)o(e)i Fy(p)f FC(through)g(an)120 1543 y(o\013set)f(\()p Fy(x;)8 b(y)r FC(\))19 b(in)i(windo)o(w)f(co)q(ordinates,)h(where)f Fy(x)g FC(and)g Fy(y)i FC(are)e(in)o(tegers.)34 b(As)20 b(long)120 1599 y(as)g(neither)h Fy(p)363 1583 y FG(0)395 1599 y FC(nor)e Fy(p)h FC(is)h(clipp)q(ed,)i(it)d(m)o(ust)g(b)q(e)h (the)f(case)g(that)f(eac)o(h)h(fragmen)o(t)f Fy(f)1603 1583 y FG(0)120 1656 y FC(pro)q(duced)f(from)e Fy(p)452 1639 y FG(0)480 1656 y FC(is)h(iden)o(tical)i(to)d(a)g(corresp)q (onding)i(fragmen)o(t)d Fy(f)22 b FC(from)16 b Fy(p)g FC(except)120 1712 y(that)f(the)g(cen)o(ter)g(of)g Fy(f)511 1696 y FG(0)538 1712 y FC(is)h(o\013set)e(b)o(y)h(\()p Fy(x;)8 b(y)r FC(\))14 b(from)g(the)h(cen)o(ter)h(of)e Fy(f)5 b FC(.)120 1869 y Fs(3.2)67 b(An)n(tialiasing)120 1975 y FC(An)o(tialiasing)20 b(of)d(a)h(p)q(oin)o(t,)h(line,)g(or)f(p)q (olygon)g(is)h(e\013ected)f(in)g(one)g(of)g(t)o(w)o(o)e(w)o(a)o(ys)h (de-)120 2032 y(p)q(ending)g(on)e(whether)h(the)f(GL)g(is)h(in)g(R)o (GBA)f(or)g(color)g(index)i(mo)q(de.)191 2091 y(In)g(R)o(GBA)g(mo)q (de,)g(the)f(R,)h(G,)f(and)g(B)h(v)m(alues)h(of)e(the)h(rasterized)g (fragmen)o(t)e(are)120 2147 y(left)20 b(una\013ected,)h(but)f(the)g(A)f (v)m(alue)i(is)f(m)o(ultiplied)j(b)o(y)c(a)h(\015oating-p)q(oin)o(t)g (v)m(alue)h(in)120 2204 y(the)k(range)e([0)p Fy(;)8 b FC(1])23 b(that)g(describ)q(es)j(a)e(fragmen)o(t's)e(screen)j(pixel)h (co)o(v)o(erage.)45 b(The)120 2260 y(p)q(er-fragmen)o(t)20 b(stage)f(of)h(the)g(GL)g(can)g(b)q(e)h(set)e(up)i(to)e(use)h(the)h(A)f (v)m(alue)h(to)e(blend)120 2316 y(the)e(incoming)g(fragmen)o(t)e(with)i (the)f(corresp)q(onding)i(pixel)g(already)e(presen)o(t)h(in)g(the)120 2373 y(framebu\013er.)191 2432 y(In)e(color)f(index)h(mo)q(de,)g(the)f (least)g(signi\014can)o(t)h Fy(b)f FC(bits)g(\(to)f(the)i(left)f(of)g (the)g(binary)120 2488 y(p)q(oin)o(t\))20 b(of)f(the)h(color)g(index)h (are)e(used)h(for)f(an)o(tialiasing;)k Fy(b)d FC(=)g(min)q FB(f)p FC(4)p Fy(;)8 b(m)p FB(g)p FC(,)18 b(where)p eop %%Page: 56 65 56 64 bop 332 137 a FC(56)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y Fy(m)16 b FC(is)h(the)f(n)o(um)o(b)q(er)g (of)g(bits)h(in)g(the)f(color)g(index)i(p)q(ortion)e(of)g(the)g (framebu\013er.)22 b(The)332 343 y(an)o(tialiasing)14 b(pro)q(cess)g(sets)f(these)g Fy(b)g FC(bits)g(based)h(on)f(the)g (fragmen)o(t's)e(co)o(v)o(erage)i(v)m(alue:)332 399 y(the)g(bits)g(are) f(set)h(to)f(zero)h(for)f(no)g(co)o(v)o(erage)g(and)h(to)f(all)i(ones)e (for)g(complete)i(co)o(v)o(erage.)403 456 y(The)19 b(details)h(of)e(ho) o(w)g(an)o(tialiased)i(fragmen)o(t)e(co)o(v)o(erage)g(v)m(alues)i(are)e (computed)332 512 y(are)d(di\016cult)i(to)e(sp)q(ecify)i(in)f(general.) 22 b(The)16 b(reason)f(is)h(that)f(high-qualit)o(y)i(an)o(tialias-)332 569 y(ing)e(ma)o(y)f(tak)o(e)h(in)o(to)f(accoun)o(t)h(p)q(erceptual)h (issues)f(as)g(w)o(ell)h(as)e(c)o(haracteristics)h(of)f(the)332 625 y(monitor)k(on)g(whic)o(h)g(the)h(con)o(ten)o(ts)e(of)g(the)i (framebu\013er)e(are)h(displa)o(y)o(ed.)29 b(Suc)o(h)19 b(de-)332 682 y(tails)f(cannot)f(b)q(e)h(addressed)f(within)i(the)e (scop)q(e)h(of)e(this)i(do)q(cumen)o(t.)26 b(F)l(urther,)17 b(the)332 738 y(co)o(v)o(erage)f(v)m(alue)i(computed)g(for)e(a)h (fragmen)o(t)f(of)g(some)h(primitiv)o(e)i(ma)o(y)d(dep)q(end)j(on)332 795 y(the)14 b(primitiv)o(e's)h(relationship)g(to)e(a)g(n)o(um)o(b)q (er)h(of)g(grid)g(squares)f(neigh)o(b)q(oring)i(the)f(one)332 851 y(corresp)q(onding)j(to)e(the)h(fragmen)o(t,)e(and)i(not)g(just)f (on)h(the)g(fragmen)o(t's)e(grid)i(square.)332 907 y(Another)i (consideration)i(is)f(that)e(accurate)h(calculation)i(of)e(co)o(v)o (erage)g(v)m(alues)h(ma)o(y)332 964 y(b)q(e)14 b(computationally)g(exp) q(ensiv)o(e;)h(consequen)o(tly)f(w)o(e)f(allo)o(w)g(a)g(giv)o(en)g(GL)g (implemen-)332 1020 y(tation)j(to)f(appro)o(ximate)g(true)h(co)o(v)o (erage)e(v)m(alues)j(b)o(y)f(using)h(a)e(fast)g(but)h(not)f(en)o (tirely)332 1077 y(accurate)g(co)o(v)o(erage)f(computation.)403 1133 y(In)f(ligh)o(t)g(of)g(these)g(considerations,)h(w)o(e)e(c)o(hose) h(to)f(sp)q(ecify)i(the)f(b)q(eha)o(vior)g(of)g(exact)332 1190 y(an)o(tialiasing)20 b(in)g(the)f(protot)o(ypical)g(case)g(that)f (eac)o(h)h(displa)o(y)o(ed)h(pixel)h(is)e(a)g(p)q(erfect)332 1246 y(square)c(of)f(uniform)h(in)o(tensit)o(y)l(.)21 b(The)15 b(square)g(is)g(called)i(a)d Fv(fr)n(agment)i(squar)n(e)f FC(and)g(has)332 1303 y(lo)o(w)o(er)h(left)g(corner)g(\()p Fy(x;)8 b(y)r FC(\))15 b(and)h(upp)q(er)h(righ)o(t)f(corner)g(\()p Fy(x)11 b FC(+)g(1)p Fy(;)d(y)j FC(+)g(1\).)22 b(W)l(e)17 b(recognize)332 1359 y(that)e(this)h(simple)i(b)q(o)o(x)e(\014lter)g (ma)o(y)f(not)g(pro)q(duce)i(the)f(most)f(fa)o(v)o(orable)g(an)o (tialiasing)332 1416 y(results,)g(but)h(it)f(pro)o(vides)h(a)f(simple,) h(w)o(ell-de\014ned)i(mo)q(del.)403 1472 y(A)g(GL)g(implemen)o(tation)h (ma)o(y)e(use)i(other)e(metho)q(ds)h(to)g(p)q(erform)g(an)o (tialiasing,)332 1528 y(sub)s(ject)d(to)g(the)g(follo)o(wing)h (conditions:)388 1605 y(1.)22 b(If)14 b Fy(f)512 1612 y Fq(1)546 1605 y FC(and)h Fy(f)656 1612 y Fq(2)690 1605 y FC(are)f(t)o(w)o(o)f(fragmen)o(ts,)g(and)h(the)h(p)q(ortion)f(of)g Fy(f)1469 1612 y Fq(1)1503 1605 y FC(co)o(v)o(ered)h(b)o(y)f(some)446 1662 y(primitiv)o(e)22 b(is)f(a)f(subset)h(of)g(the)f(corresp)q(onding) i(p)q(ortion)f(of)f Fy(f)1569 1669 y Fq(2)1610 1662 y FC(co)o(v)o(ered)h(b)o(y)446 1718 y(the)14 b(primitiv)o(e,)i(then)e (the)g(co)o(v)o(erage)g(computed)g(for)g Fy(f)1391 1725 y Fq(1)1425 1718 y FC(m)o(ust)g(b)q(e)h(less)g(than)f(or)446 1775 y(equal)i(to)e(that)h(computed)g(for)g Fy(f)1021 1782 y Fq(2)1041 1775 y FC(.)388 1862 y(2.)22 b(The)f(co)o(v)o(erage)f (computation)h(for)f(a)h(fragmen)o(t)e Fy(f)26 b FC(m)o(ust)21 b(b)q(e)g(lo)q(cal:)33 b(it)21 b(ma)o(y)446 1918 y(dep)q(end)14 b(only)f(on)f Fy(f)5 b FC('s)12 b(relationship)i(to)e(the)g(b)q (oundary)h(of)f(the)g(primitiv)o(e)i(b)q(eing)446 1975 y(rasterized.)20 b(It)15 b(ma)o(y)g(not)g(dep)q(end)h(on)f Fy(f)5 b FC('s)15 b Fy(x)g FC(and)h Fy(y)h FC(co)q(ordinates.)332 2052 y(Another)e(prop)q(ert)o(y)g(that)g(is)g(desirable,)i(but)e(not)g (required,)h(is:)388 2129 y(3.)22 b(The)13 b(sum)g(of)g(the)g(co)o(v)o (erage)f(v)m(alues)i(for)e(all)i(fragmen)o(ts)e(pro)q(duced)i(b)o(y)f (rasteriz-)446 2185 y(ing)j(a)g(particular)g(primitiv)o(e)h(m)o(ust)e (b)q(e)i(constan)o(t,)d(indep)q(enden)o(t)19 b(of)c(an)o(y)g(rigid)446 2242 y(motions)d(in)i(windo)o(w)f(co)q(ordinates,)g(as)f(long)h(as)g (none)g(of)f(those)h(fragmen)o(ts)e(lies)446 2298 y(along)k(windo)o(w)g (edges.)332 2375 y(In)22 b(some)f(implemen)o(tations,)j(v)m(arying)d (degrees)h(of)f(an)o(tialiasing)h(qualit)o(y)g(ma)o(y)f(b)q(e)332 2432 y(obtained)e(b)o(y)g(pro)o(viding)h(GL)e(hin)o(ts)i(\(section)f (5.6\),)e(allo)o(wing)j(a)e(user)h(to)f(mak)o(e)h(an)332 2488 y(image)c(qualit)o(y)h(v)o(ersus)f(sp)q(eed)h(tradeo\013.)p eop %%Page: 57 66 57 65 bop 120 137 a Fx(3.3.)34 b(POINTS)1169 b FC(57)120 286 y Fs(3.3)67 b(P)n(oin)n(ts)120 388 y FC(The)16 b(rasterization)f (of)g(p)q(oin)o(ts)g(is)h(con)o(trolled)g(with)234 479 y Fw(void)30 b Fz(P)o(oin)o(tSize)p FC(\()g Fw(float)15 b Fv(size)f FC(\))h Fw(;)120 570 y Fv(size)h FC(sp)q(eci\014es)i(the)e (width)h(or)e(diameter)i(of)f(a)g(p)q(oin)o(t.)23 b(The)17 b(default)f(v)m(alue)i(is)f(1.0.)22 b(A)120 627 y(v)m(alue)17 b(less)f(than)f(or)f(equal)i(to)f(zero)g(results)h(in)g(the)f(error)f Fr(INVALID)p 1299 627 14 2 v 15 w(VALUE)p FC(.)191 683 y(P)o(oin)o(t)i(an)o(tialiasing)i(is)f(enabled)h(or)e(disabled)i(b)o(y) f(calling)h Fz(Enable)g FC(or)e Fz(Disable)120 740 y FC(with)g(the)g(sym)o(b)q(olic)g(constan)o(t)f Fr(POINT)p 788 740 V 15 w(SMOOTH)p FC(.)e(The)j(default)g(state)f(is)h(for)f(p)q (oin)o(t)h(an-)120 796 y(tialiasing)h(to)e(b)q(e)h(disabled.)191 853 y(In)j(the)g(default)g(state,)f(a)g(p)q(oin)o(t)i(is)f(rasterized)g (b)o(y)f(truncating)h(its)g Fy(x)1426 860 y Fu(w)1472 853 y FC(and)g Fy(y)1586 860 y Fu(w)120 909 y FC(co)q(ordinates)11 b(\(recall)g(that)f(the)h(subscripts)g(indicate)h(that)e(these)g(are)g Fy(x)h FC(and)f Fy(y)j FC(windo)o(w)120 966 y(co)q(ordinates\))k(to)f (in)o(tegers.)23 b(This)17 b(\()p Fy(x;)8 b(y)r FC(\))15 b(address,)h(along)h(with)f(data)g(deriv)o(ed)h(from)120 1022 y(the)f(data)e(asso)q(ciated)i(with)f(the)g(v)o(ertex)g(corresp)q (onding)h(to)f(the)g(p)q(oin)o(t,)h(is)f(sen)o(t)g(as)g(a)120 1078 y(single)i(fragmen)o(t)d(to)g(the)i(p)q(er-fragmen)o(t)e(stage)h (of)g(the)g(GL.)191 1135 y(The)24 b(e\013ect)f(of)h(a)f(p)q(oin)o(t)h (width)g(other)g(than)f(1)p Fy(:)p FC(0)g(dep)q(ends)i(on)f(the)f (state)g(of)120 1191 y(p)q(oin)o(t)g(an)o(tialiasing.)43 b(If)23 b(an)o(tialiasing)h(is)f(disabled,)i(the)e(actual)f(width)i(is) e(deter-)120 1248 y(mined)15 b(b)o(y)e(rounding)h(the)g(supplied)h (width)f(to)f(the)g(nearest)g(in)o(teger,)h(then)f(clamping)120 1304 y(it)j(to)e(the)h(implemen)o(tation-dep)q(end)q(en)o(t)i(maxim)o (um)e(non-an)o(tialiased)i(p)q(oin)o(t)f(width.)120 1361 y(Though)21 b(this)h(implemen)o(tation-dep)q(enden)o(t)i(v)m(alue)e (cannot)f(b)q(e)h(queried,)h(it)e(m)o(ust)120 1417 y(b)q(e)d(no)f(less) h(than)f(the)g(implemen)o(tation-dep)q(endent)i(maxim)o(um)e(an)o (tialiased)h(p)q(oin)o(t)120 1474 y(width,)g(rounded)f(to)f(the)h (nearest)f(in)o(teger)h(v)m(alue,)h(and)f(in)g(an)o(y)g(ev)o(en)o(t)f (no)h(less)g(than)120 1530 y(1.)22 b(If)16 b(rounding)h(the)f(sp)q (eci\014ed)i(width)e(results)g(in)h(the)f(v)m(alue)h(0,)e(then)h(it)h (is)f(as)f(if)i(the)120 1587 y(v)m(alue)g(w)o(ere)e(1.)k(If)d(the)f (resulting)h(width)g(is)g(o)q(dd,)f(then)h(the)f(p)q(oin)o(t)576 1702 y(\()p Fy(x;)8 b(y)r FC(\))j(=)i(\()p FB(b)p Fy(x)806 1709 y Fu(w)834 1702 y FB(c)d FC(+)915 1671 y(1)p 915 1692 23 2 v 915 1733 a(2)942 1702 y Fy(;)e FB(b)p Fy(y)1005 1709 y Fu(w)1033 1702 y FB(c)j FC(+)1114 1671 y(1)p 1114 1692 V 1114 1733 a(2)1142 1702 y(\))120 1812 y(is)i(computed)f(from)g (the)g(v)o(ertex's)f Fy(x)740 1819 y Fu(w)780 1812 y FC(and)h Fy(y)887 1819 y Fu(w)916 1812 y FC(,)g(and)g(a)g(square)g (grid)g(of)g(the)g(o)q(dd)g(width)120 1868 y(cen)o(tered)j(at)e(\()p Fy(x;)8 b(y)r FC(\))13 b(de\014nes)i(the)f(cen)o(ters)g(of)f(the)h (rasterized)h(fragmen)o(ts)e(\(recall)h(that)120 1924 y(fragmen)o(t)g(cen)o(ters)h(lie)h(at)e(half-in)o(teger)i(windo)o(w)f (co)q(ordinate)g(v)m(alues\).)20 b(If)15 b(the)g(width)120 1981 y(is)h(ev)o(en,)f(then)h(the)f(cen)o(ter)g(p)q(oin)o(t)h(is)569 2096 y(\()p Fy(x;)8 b(y)r FC(\))j(=)i(\()p FB(b)p Fy(x)799 2103 y Fu(w)838 2096 y FC(+)888 2066 y(1)p 888 2086 V 888 2128 a(2)916 2096 y FB(c)p Fy(;)8 b FB(b)p Fy(y)999 2103 y Fu(w)1037 2096 y FC(+)1088 2066 y(1)p 1088 2086 V 1088 2128 a(2)1115 2096 y FB(c)p FC(\);)120 2206 y(the)j(rasterized)g (fragmen)o(t)f(cen)o(ters)h(are)f(the)h(half-in)o(teger)g(windo)o(w)g (co)q(ordinate)h(v)m(alues)120 2262 y(within)17 b(the)e(square)g(of)g (the)g(ev)o(en)h(width)g(cen)o(tered)f(on)g(\()p Fy(x;)8 b(y)r FC(\).)19 b(See)c(Figure)h(3.2.)191 2319 y(All)23 b(fragmen)o(ts)e(pro)q(duced)j(in)f(rasterizing)f(a)g(non-an)o (tialiased)i(p)q(oin)o(t)e(are)g(as-)120 2375 y(signed)13 b(the)f(same)f(asso)q(ciated)h(data,)f(whic)o(h)h(are)g(those)f(of)g (the)h(v)o(ertex)f(corresp)q(onding)120 2432 y(to)i(the)f(p)q(oin)o(t,) i(with)f(texture)g(co)q(ordinates)g Fy(s)p FC(,)g Fy(t)p FC(,)g(and)g Fy(r)h FC(replaced)g(with)f Fy(s=q)r FC(,)g Fy(t=q)r FC(,)g(and)120 2488 y Fy(r)q(=q)r FC(,)g(resp)q(ectiv)o(ely)l (.)22 b(If)13 b Fy(q)j FC(is)e(less)g(then)g(or)f(equal)i(to)e(zero,)g (the)h(results)g(are)f(unde\014ned.)p eop %%Page: 58 67 58 66 bop 332 137 a FC(58)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 350 242 1459 2 v 350 1245 2 1003 v 449 317 a 19892389 10741882 1973452 34272296 31575244 50520391 startTexFig 449 317 a %%BeginDocument: pics/point.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /pmask16 { <00006666666600000000999999990000 00006666666600000000999999990000> } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 48 /patchar16 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar16 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask16 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 48 576 M 48 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 80 576 M 80 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 112 576 M 112 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 144 576 M 144 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 176 576 M 176 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 207 576 M 207 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 31 592 M 223 592 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 31 624 M 223 624 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 30 657 M 222 657 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 31 688 M 223 688 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 31 720 M 223 720 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 32 752 M 224 752 L stroke grestore gsave matrix currentmatrix [32 0 0 32 128 672] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 640 16.08 720 { 96 exch M (00000) show } for grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 104 648 M 120 664 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 104 664 M 120 648 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 168 648 M 184 664 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 168 664 M 184 648 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 136 648 M 152 664 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 136 664 M 152 648 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 136 680 M 152 696 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 136 696 M 152 680 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 104 680 M 120 696 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 104 696 M 120 680 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 168 680 M 184 696 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 168 696 M 184 680 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 168 712 M 184 728 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 168 728 M 184 712 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 136 712 M 152 728 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 136 728 M 152 712 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 104 712 M 120 728 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 104 728 M 120 712 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 304 576 M 304 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 336 576 M 336 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 368 576 M 368 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 400 576 M 400 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 432 576 M 432 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 464 576 M 464 768 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 288 592 M 480 592 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 288 624 M 480 624 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 288 656 M 480 656 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 288 688 M 480 688 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 288 720 M 480 720 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [4] 0 setdash newpath 288 752 M 480 752 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 648 M 376 664 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 664 M 376 648 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 648 M 440 664 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 664 M 440 648 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 648 M 408 664 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 664 M 408 648 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 680 M 408 696 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 696 M 408 680 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 680 M 376 696 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 696 M 376 680 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 680 M 440 696 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 696 M 440 680 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 712 M 440 728 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 728 M 440 712 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 712 M 408 728 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 728 M 408 712 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 712 M 376 728 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 728 M 376 712 L stroke grestore gsave matrix currentmatrix [32 0 0 32 368 656] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 624 16.08 704 { 336 exch M (00000) show } for grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 648 M 344 664 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 664 M 344 648 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 680 M 344 696 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 696 M 344 680 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 712 M 344 728 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 728 M 344 712 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 616 M 344 632 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 328 632 M 344 616 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 616 M 376 632 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 632 M 376 616 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 616 M 408 632 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 392 632 M 408 616 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 616 M 440 632 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 424 632 M 440 616 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 79 521] concat newpath 0 0 M 0 24 L 92.99 24 L 92.99 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 77 519 M 77 547 L 173.99 547 L 173.99 519 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 79 521] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Odd Width) 90.99 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 335 521] concat newpath 0 0 M 0 24 L 100.01 24 L 100.01 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 333 519 M 333 547 L 437.01 547 L 437.01 519 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 335 521] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (Even Width) 98.01 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 135 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 133 554 M 133 575 L 155.68 575 L 155.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 135 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (3.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 167 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 165 554 M 165 575 L 187.68 575 L 187.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 167 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (4.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 199 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 197 554 M 197 575 L 219.68 575 L 219.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 199 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (5.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 103 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 101 554 M 101 575 L 123.68 575 L 123.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 103 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (2.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 71 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 69 554 M 69 575 L 91.68 575 L 91.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 71 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (1.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 391 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 389 554 M 389 575 L 411.68 575 L 411.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 391 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (3.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 423 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 421 554 M 421 575 L 443.68 575 L 443.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 423 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (4.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 455 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 453 554 M 453 575 L 475.68 575 L 475.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 455 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (5.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 359 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 357 554 M 357 575 L 379.68 575 L 379.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 359 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (2.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 327 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 325 554 M 325 575 L 347.68 575 L 347.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 327 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (1.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 247 616] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 245 614 M 245 635 L 267.68 635 L 267.68 614 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 247 616] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (1.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 247 648] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 245 646 M 245 667 L 267.68 667 L 267.68 646 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 247 648] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (2.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 247 680] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 245 678 M 245 699 L 267.68 699 L 267.68 678 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 247 680] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (3.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 247 712] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 245 710 M 245 731 L 267.68 731 L 267.68 710 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 247 712] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (4.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 295 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 293 554 M 293 575 L 315.68 575 L 315.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 295 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (0.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 39 556] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 37 554 M 37 575 L 59.68 575 L 59.68 554 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 39 556] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (0.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 247 584] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 245 582 M 245 603 L 267.68 603 L 267.68 582 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 247 584] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (0.5) 16.68 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 247 744] concat newpath 0 0 M 0 17 L 18.68 17 L 18.68 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 245 742 M 245 763 L 267.68 763 L 267.68 742 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 247 744] concat /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 0 2.4 M (5.5) 16.68 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 128 704 M 128 672 L 160 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 368 688 M 368 656 L 400 656 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1116 a Fm(Figure)16 b(3.2.)24 b(Rasterization)16 b(of)f(non-an)o(tialiased)f(wide)i(p)q(oin)o(ts.)25 b(The)16 b(crosses)i(sho)o(w)389 1165 y(fragmen)o(t)11 b(cen)o(ters)k(pro)q (duced)f(b)o(y)f(rasterization)g(for)f(an)o(y)g(p)q(oin)o(t)g(that)h (lies)g(within)f(the)389 1215 y(shaded)j(region.)j(The)c(dotted)g(grid) g(lines)g(lie)f(on)h(half-in)o(teger)f(co)q(ordinates.)p 1807 1245 2 1003 v 350 1247 1459 2 v 403 1456 a FC(If)k(an)o (tialiasing)i(is)f(enabled,)h(then)f(p)q(oin)o(t)g(rasterization)f(pro) q(duces)h(a)g(fragmen)o(t)332 1513 y(for)j(eac)o(h)i(fragmen)o(t)d (square)i(that)g(in)o(tersects)g(the)g(region)g(lying)h(within)h(the)e (cir-)332 1569 y(cle)e(ha)o(ving)f(diameter)g(equal)h(to)e(the)h (curren)o(t)f(p)q(oin)o(t)i(width)f(and)g(cen)o(tered)g(at)f(the)332 1626 y(p)q(oin)o(t's)g(\()p Fy(x)528 1633 y Fu(w)556 1626 y Fy(;)8 b(y)599 1633 y Fu(w)627 1626 y FC(\))17 b(\(Figure)h(3.3\).)26 b(The)18 b(co)o(v)o(erage)f(v)m(alue)i(for)e (eac)o(h)h(fragmen)o(t)e(is)i(the)332 1682 y(windo)o(w)h(co)q(ordinate) f(area)g(of)g(the)h(in)o(tersection)g(of)f(the)g(circular)i(region)f (with)f(the)332 1739 y(corresp)q(onding)13 b(fragmen)o(t)e(square)h (\(but)h(see)f(section)h(3.2\).)k(This)c(v)m(alue)h(is)e(sa)o(v)o(ed)g (and)332 1795 y(used)20 b(in)f(the)g(\014nal)h(step)f(of)f (rasterization)h(\(section)g(3.10\).)30 b(The)19 b(data)f(asso)q (ciated)332 1851 y(with)f(eac)o(h)f(fragmen)o(t)f(are)h(otherwise)h (the)f(data)g(asso)q(ciated)g(with)h(the)f(p)q(oin)o(t)h(b)q(eing)332 1908 y(rasterized,)g(with)f(texture)g(co)q(ordinates)h Fy(s)p FC(,)f Fy(t)p FC(,)h(and)f Fy(r)h FC(replaced)g(with)g Fy(s=q)r FC(,)f Fy(t=q)r FC(,)g(and)332 1964 y Fy(r)q(=q)r FC(,)d(resp)q(ectiv)o(ely)l(.)21 b(If)14 b Fy(q)i FC(is)e(less)g(then)g (or)f(equal)h(to)f(zero,)h(the)g(results)g(are)f(unde\014ned.)403 2093 y(Not)21 b(all)i(widths)f(need)h(b)q(e)f(supp)q(orted)g(when)h(p)q (oin)o(t)f(an)o(tialiasing)h(is)f(on,)h(but)332 2149 y(the)16 b(width)g(1)p Fy(:)p FC(0)f(m)o(ust)g(b)q(e)i(pro)o(vided.)22 b(If)16 b(an)g(unsupp)q(orted)h(width)f(is)g(requested,)g(the)332 2206 y(nearest)c(supp)q(orted)h(width)f(is)h(used)g(instead.)19 b(The)12 b(range)g(of)g(supp)q(orted)h(widths)f(and)332 2262 y(the)h(width)g(of)f(ev)o(enly-spaced)j(gradations)d(within)i (that)d(range)i(are)f(implemen)o(tation)332 2319 y(dep)q(enden)o(t.)40 b(The)21 b(range)g(and)h(gradations)e(ma)o(y)h(b)q(e)h(obtained)g (using)g(the)f(query)332 2375 y(mec)o(hanism)15 b(describ)q(ed)h(in)f (Chapter)e(6.)20 b(If,)14 b(for)f(instance,)i(the)f(width)h(range)f(is) g(from)332 2432 y(0.1)d(to)g(2.0)g(and)g(the)h(gradation)f(width)i(is)f (0.1,)f(then)h(the)g(widths)g(0)p Fy(:)p FC(1)p Fy(;)c FC(0)p Fy(:)p FC(2)p Fy(;)f(:)h(:)f(:)t(;)h FC(1)p Fy(:)p FC(9)p Fy(;)g FC(2)p Fy(:)p FC(0)332 2488 y(are)15 b(supp)q(orted.)p eop %%Page: 59 68 59 67 bop 120 137 a Fx(3.3.)34 b(POINTS)1169 b FC(59)p 139 784 1459 2 v 139 1895 2 1112 v 538 858 a 10419816 10107215 3881123 19076710 32430407 46902394 startTexFig 538 858 a %%BeginDocument: pics/pointa.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /pmask16 { <00006666666600000000999999990000 00006666666600000000999999990000> } def /pmask19 { <11112222444488881111222244448888 11112222444488881111222244448888> } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 48 /patchar16 put Encoding 51 /patchar19 put /CharProcs 3 dict def CharProcs begin /.notdef {} def /patchar16 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask16 imagemask } def /patchar19 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask19 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave /PatternFont findfont 16.08 scalefont setfont matrix currentmatrix [113.701 0 0 113.701 268 496] concat newpath 0 0 1 0 360 arc closepath clip setmatrix 0 0 0 setrgbcolor 352 16.08 624 { 128 exch M (33333333333333333) show } for 2.000000 setlinewidth matrix currentmatrix [113.701 0 0 113.701 268 496] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 128 320 M 128 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 192 320 M 192 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 256 320 M 256 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 320 320 M 320 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 384 320 M 384 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 448 320 M 448 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 352 M 480 352 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 416 M 480 416 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 480 M 480 480 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 544 M 480 544 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 608 M 480 608 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 672 M 480 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 320 M 480 320 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 384 M 480 384 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 448 M 480 448 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 512 M 480 512 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 97 576 M 481 576 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 97 640 M 481 640 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 704 M 480 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 320 M 96 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 320 M 160 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 224 320 M 224 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 288 320 M 288 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 352 320 M 352 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 416 320 M 416 704 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 480 320 M 480 704 L stroke grestore gsave matrix currentmatrix [8 0 0 8 272 496] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 2.000000 setlinewidth matrix currentmatrix [8 0 0 8 272 496] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 600 M 328 616 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 616 M 328 600 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 376 536 M 392 552 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 376 552 M 392 536 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 536 M 328 552 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 552 M 328 536 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 600 M 264 616 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 616 M 264 600 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 536 M 264 552 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 552 M 264 536 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 536 M 200 552 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 552 M 200 536 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 472 M 200 488 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 488 M 200 472 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 472 M 264 488 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 488 M 264 472 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 472 M 328 488 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 488 M 328 472 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 376 472 M 392 488 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 376 488 M 392 472 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 408 M 328 424 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 312 424 M 328 408 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 408 M 264 424 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 424 M 264 408 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 408 M 200 424 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 424 M 200 408 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 600 M 200 616 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 184 616 M 200 600 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 344 M 264 360 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 248 360 M 264 344 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 120 472 M 136 488 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 120 488 M 136 472 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 120 536 M 136 552 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 120 552 M 136 536 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 376 408 M 392 424 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 376 424 M 392 408 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 151 290] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 149 288 M 149 311 L 174.46 311 L 174.46 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 151 290] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (1.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 87 290] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 85 288 M 85 311 L 110.46 311 L 110.46 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 87 290] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (0.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 275 290] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 273 288 M 273 311 L 298.46 311 L 298.46 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 275 290] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (3.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 215 290] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 213 288 M 213 311 L 238.46 311 L 238.46 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 215 290] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (2.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 403 290] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 401 288 M 401 311 L 426.46 311 L 426.46 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 403 290] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (5.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 343 290] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 341 288 M 341 311 L 366.46 311 L 366.46 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 343 290] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (4.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 471 290] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 469 288 M 469 311 L 494.46 311 L 494.46 288 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 471 290] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (6.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 59 310] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 308 M 57 331 L 82.46 331 L 82.46 308 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 310] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (0.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 59 374] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 372 M 57 395 L 82.46 395 L 82.46 372 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 374] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (1.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 59 438] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 436 M 57 459 L 82.46 459 L 82.46 436 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 438] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (2.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 59 502] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 500 M 57 523 L 82.46 523 L 82.46 500 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 502] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (3.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 59 566] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 564 M 57 587 L 82.46 587 L 82.46 564 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 566] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (4.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 59 630] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 628 M 57 651 L 82.46 651 L 82.46 628 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 630] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (5.0) 19.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 59 694] concat newpath 0 0 M 0 19 L 21.46 19 L 21.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 57 692 M 57 715 L 82.46 715 L 82.46 692 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 59 694] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (6.0) 19.46 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1617 a Fm(Figure)19 b(3.3.)31 b(Rasterization)19 b(of)f(an)o(tialiased)g(wide)g(p)q(oin)o(ts.)33 b(The)19 b(blac)o(k)g(dot)g(indi-)178 1667 y(cates)c(the)g(p)q(oin)o(t)f(to)g(b) q(e)h(rasterized.)21 b(The)15 b(shaded)g(region)f(has)g(the)h(sp)q (eci\014ed)h(width.)178 1716 y(The)f(X)h(marks)e(indicate)i(those)g (fragmen)o(t)e(cen)o(ters)j(pro)q(duced)g(b)o(y)e(rasterization.)23 b(A)178 1766 y(fragmen)o(t's)10 b(computed)h(co)o(v)o(erage)h(v)n(alue) e(is)i(based)g(on)f(the)h(p)q(ortion)g(of)f(the)h(shaded)g(re-)178 1816 y(gion)f(that)h(co)o(v)o(ers)h(the)f(corresp)q(onding)h(fragmen)o (t)e(square.)18 b(Solid)11 b(lines)h(lie)f(on)h(in)o(teger)178 1866 y(co)q(ordinates.)p 1595 1895 2 1112 v 139 1897 1459 2 v eop %%Page: 60 69 60 68 bop 332 137 a FC(60)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y Fl(3.3.1)55 b(P)n(oin)n(t)20 b(Rasterization)d(State)332 374 y FC(The)11 b(state)f(required)i(to)e (con)o(trol)h(p)q(oin)o(t)g(rasterization)g(consists)g(of)f(the)h (\015oating-p)q(oin)o(t)332 430 y(p)q(oin)o(t)16 b(width)g(and)f(a)g (bit)h(indicating)h(whether)e(or)g(not)g(an)o(tialiasing)h(is)g (enabled.)332 579 y Fs(3.4)66 b(Line)24 b(Segmen)n(ts)332 682 y FC(A)16 b(line)i(segmen)o(t)e(results)g(from)g(a)g(line)i(strip)e Fz(Begin)p FC(/)p Fz(End)h FC(ob)s(ject,)f(a)g(line)h(lo)q(op,)g(or)332 738 y(a)g(series)h(of)f(separate)f(line)j(segmen)o(ts.)25 b(Line)19 b(segmen)o(t)e(rasterization)g(is)h(con)o(trolled)332 795 y(b)o(y)d(sev)o(eral)h(v)m(ariables.)21 b(Line)16 b(width,)g(whic)o(h)g(ma)o(y)e(b)q(e)i(set)f(b)o(y)g(calling)446 892 y Fw(void)29 b Fz(LineWidth)p FC(\()j Fw(float)15 b Fv(width)h FC(\))f Fw(;)332 989 y FC(with)f(an)g(appropriate)g(p)q (ositiv)o(e)h(\015oating-p)q(oin)o(t)f(width,)h(con)o(trols)e(the)h (width)g(of)g(ras-)332 1046 y(terized)19 b(line)g(segmen)o(ts.)28 b(The)18 b(default)g(width)g(is)h(1)p Fy(:)p FC(0.)26 b(V)l(alues)19 b(less)g(than)e(or)h(equal)332 1102 y(to)c(0)p Fy(:)p FC(0)g(generate)g(the)h(error)f Fr(INVALID)p 987 1102 14 2 v 14 w(VALUE)p FC(.)g(An)o(tialiasing)i(is)f(con)o(trolled)h (with)f Fz(En-)332 1159 y(able)22 b FC(and)e Fz(Disable)i FC(using)f(the)g(sym)o(b)q(olic)h(constan)o(t)e Fr(LINE)p 1410 1159 V 15 w(SMOOTH)p FC(.)f(Finally)l(,)k(line)332 1215 y(segmen)o(ts)17 b(ma)o(y)g(b)q(e)h(stippled.)28 b(Stippling)20 b(is)e(con)o(trolled)g(b)o(y)f(a)g(GL)h(command)f(that) 332 1272 y(sets)e(a)g Fv(stipple)h(p)n(attern)f FC(\(see)g(b)q(elo)o (w\).)332 1398 y Fl(3.4.1)55 b(Basic)19 b(Line)e(Segmen)n(t)g (Rasterization)332 1486 y FC(Line)k(segmen)o(t)d(rasterization)h(b)q (egins)h(b)o(y)f(c)o(haracterizing)h(the)f(segmen)o(t)g(as)g(either)332 1542 y Fv(x-major)g FC(or)e Fv(y-major)p FC(.)30 b Fy(x)p FC(-ma)s(jor)16 b(line)k(segmen)o(ts)d(ha)o(v)o(e)h(slop)q(e)g(in)h (the)f(closed)h(in)o(ter-)332 1599 y(v)m(al)e([)p FB(\000)p FC(1)p Fy(;)8 b FC(1];)15 b(all)j(other)e(line)i(segmen)o(ts)e(are)h Fy(y)r FC(-ma)s(jor)e(\(slop)q(e)i(is)g(determined)h(b)o(y)e(the)332 1655 y(segmen)o(t's)h(endp)q(oin)o(ts\).)28 b(W)l(e)18 b(shall)h(sp)q(ecify)g(rasterization)f(only)g(for)f Fy(x)p FC(-ma)s(jor)f(seg-)332 1712 y(men)o(ts)e(except)g(in)h(cases)f(where)g (the)g(mo)q(di\014cations)h(for)e Fy(y)r FC(-ma)s(jor)g(segmen)o(ts)g (are)h(not)332 1768 y(self-eviden)o(t.)403 1825 y(Ideally)l(,)h(the)e (GL)g(uses)h(a)e(\\diamond-exit")i(rule)g(to)f(determine)h(those)f (fragmen)o(ts)332 1882 y(that)i(are)h(pro)q(duced)h(b)o(y)f (rasterizing)h(a)f(line)h(segmen)o(t.)22 b(F)l(or)16 b(eac)o(h)g(fragmen)o(t)f Fy(f)21 b FC(with)332 1938 y(cen)o(ter)e(at)g(windo)o(w)g(co)q(ordinates)h Fy(x)972 1945 y Fu(f)1014 1938 y FC(and)f Fy(y)1128 1945 y Fu(f)1151 1938 y FC(,)h(de\014ne)g(a)f(diamond-shap)q(ed)i(region)332 1995 y(that)15 b(is)g(the)h(in)o(tersection)g(of)e(four)h(half)h (planes:)671 2099 y Fy(R)706 2106 y Fu(f)741 2099 y FC(=)d FB(f)8 b FC(\()p Fy(x;)g(y)r FC(\))i FB(j)j(j)p Fy(x)c FB(\000)i Fy(x)1083 2106 y Fu(f)1105 2099 y FB(j)f FC(+)h FB(j)p Fy(y)g FB(\000)g Fy(y)1288 2106 y Fu(f)1311 2099 y FB(j)h Fy(<)h FC(1)p Fy(=)p FC(2)p Fy(:)p FB(g)403 2205 y FC(Essen)o(tially)l(,)g(a)d(line)j(segmen)o(t)d(starting)h(at)f Fz(p)1169 2212 y Fu(a)1201 2205 y FC(and)h(ending)h(at)f Fz(p)1508 2212 y Fu(b)1536 2205 y FC(pro)q(duces)h(those)332 2261 y(fragmen)o(ts)k Fy(f)22 b FC(for)16 b(whic)o(h)i(the)e(segmen)o (t)h(in)o(tersects)g Fy(R)1286 2268 y Fu(f)1308 2261 y FC(,)g(except)g(if)g Fz(p)1554 2268 y Fu(b)1588 2261 y FC(is)h(con)o(tained)332 2318 y(in)e Fy(R)420 2325 y Fu(f)442 2318 y FC(.)k(See)c(Figure)f(3.4.)403 2375 y(T)l(o)h(a)o(v)o(oid)g(di\016culties)j(when)e(an)g(endp)q(oin)o(t)g (lies)h(on)f(a)f(b)q(oundary)h(of)f Fy(R)1664 2382 y Fu(f)1703 2375 y FC(w)o(e)g(\(in)332 2432 y(principle\))23 b(p)q(erturb)d(the)g(supplied)i(endp)q(oin)o(ts)f(b)o(y)f(a)g(tin)o(y)g (amoun)o(t.)33 b(Let)20 b Fz(p)1712 2439 y Fu(a)1753 2432 y FC(and)332 2488 y Fz(p)361 2495 y Fu(b)396 2488 y FC(ha)o(v)o(e)d(windo)o(w)h(co)q(ordinates)g(\()p Fy(x)959 2495 y Fu(a)979 2488 y Fy(;)8 b(y)1022 2495 y Fu(a)1043 2488 y FC(\))17 b(and)h(\()p Fy(x)1213 2495 y Fu(b)1230 2488 y Fy(;)8 b(y)1273 2495 y Fu(b)1289 2488 y FC(\),)18 b(resp)q(ectiv)o(ely)l(.)29 b(Obtain)18 b(the)p eop %%Page: 61 70 61 69 bop 120 137 a Fx(3.4.)34 b(LINE)16 b(SEGMENTS)961 b FC(61)p 139 242 1459 2 v 139 1214 2 972 v 568 317 a 9472573 9472573 4210032 25260195 25260195 46310359 startTexFig 568 317 a %%BeginDocument: pics/bresen.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /pmask16 { <00006666666600000000999999990000 00006666666600000000999999990000> } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 48 /patchar16 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar16 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask16 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 80 672 M 368 672 L 368 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 80 608 M 368 608 L 368 608 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 80 544 M 368 544 L 368 544 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 80 480 M 368 480 L 368 480 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 80 416 M 368 416 L 368 416 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 400 M 96 688 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 160 400 M 160 688 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 400 M 224 688 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 288 400 M 288 688 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 352 400 M 352 688 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 448 M 320 672 L 320 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 512 M 256 672 L 256 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 192 416 M 352 576 L 352 576 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 128 416 M 352 640 L 352 640 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 576 M 192 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 256 416 M 352 512 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 320 416 M 352 448 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 640 M 128 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 448 M 128 416 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 320 672 M 352 640 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 192 416 M 96 512 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 352 576 M 256 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 256 416 M 96 576 L 96 576 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 352 512 M 192 672 L 192 672 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 96 640 M 320 416 L stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth [4] 0 setdash newpath 128 672 M 352 448 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 82 425 M 352 625 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 88 408 M 104 424 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 88 424 M 104 408 L 104 408 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 152 472 M 168 488 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 152 488 M 168 472 L 168 472 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 216 536 M 232 552 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 216 552 M 232 536 L 232 536 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 280 600 M 296 616 L stroke grestore gsave 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 280 616 M 296 600 L 296 600 L stroke grestore gsave matrix currentmatrix [0 0 0 0 128 480] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 448 16.08 496 { 96 exch M (000) show } for 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [0 0 0 0 128 480] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 448 16.08 496 { 96 exch M (000) show } for 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 128 480 M 160 512 L 192 480 L 160 448 L closepath eoclip 416 16.08 528 { 96 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 192 544 M 224 576 L 256 544 L 224 512 L closepath eoclip 480 16.08 592 { 160 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 192 480 M 224 512 L 256 480 L 224 448 L closepath eoclip 416 16.08 528 { 160 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 192 416 M 224 448 L 256 416 L 224 384 L closepath eoclip 352 16.08 464 { 160 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 128 416 M 160 448 L 192 416 L 160 384 L closepath eoclip 352 16.08 464 { 96 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 64 416 M 96 448 L 128 416 L 96 384 L closepath eoclip 352 16.08 464 { 32 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 64 480 M 96 512 L 128 480 L 96 448 L closepath eoclip 416 16.08 528 { 32 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 64 544 M 96 576 L 128 544 L 96 512 L closepath eoclip 480 16.08 592 { 32 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 64 608 M 96 640 L 128 608 L 96 576 L closepath eoclip 544 16.08 656 { 32 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 64 672 M 96 704 L 128 672 L 96 640 L closepath eoclip 608 16.08 720 { 32 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 128 544 M 160 576 L 192 544 L 160 512 L closepath eoclip 480 16.08 592 { 96 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 128 608 M 160 640 L 192 608 L 160 576 L closepath eoclip 544 16.08 656 { 96 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 128 672 M 160 704 L 192 672 L 160 640 L closepath eoclip 608 16.08 720 { 96 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 192 608 M 224 640 L 256 608 L 224 576 L closepath eoclip 544 16.08 656 { 160 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 192 672 M 224 704 L 256 672 L 224 640 L closepath eoclip 608 16.08 720 { 160 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 256 416 M 288 448 L 320 416 L 288 384 L closepath eoclip 352 16.08 464 { 224 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 256 480 M 288 512 L 320 480 L 288 448 L closepath eoclip 416 16.08 528 { 224 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 256 544 M 288 576 L 320 544 L 288 512 L closepath eoclip 480 16.08 592 { 224 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 256 608 M 288 640 L 320 608 L 288 576 L closepath eoclip 544 16.08 656 { 224 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 256 672 M 288 704 L 320 672 L 288 640 L closepath eoclip 608 16.08 720 { 224 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 320 416 M 352 448 L 384 416 L 352 384 L closepath eoclip 352 16.08 464 { 288 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 320 480 M 352 512 L 384 480 L 352 448 L closepath eoclip 416 16.08 528 { 288 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 320 544 M 352 576 L 384 544 L 352 512 L closepath eoclip 480 16.08 592 { 288 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 320 608 M 352 640 L 384 608 L 352 576 L closepath eoclip 544 16.08 656 { 288 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 320 672 M 352 704 L 384 672 L 352 640 L closepath eoclip 608 16.08 720 { 288 exch M (0000000) show } for 0 0 0 setrgbcolor grestore gsave matrix currentmatrix [4.12311 0 0 4.12311 83 425] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 1.000000 setlinewidth matrix currentmatrix [4.12311 0 0 4.12311 83 425] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave matrix currentmatrix [4.12311 0 0 4.12311 352.123 625.123] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 1.000000 setlinewidth matrix currentmatrix [4.12311 0 0 4.12311 352.123 625.123] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1035 a Fm(Figure)19 b(3.4.)35 b(Visualization)19 b(of)g(Bresenham's)h(algorithm.)33 b(A)20 b(p)q(ortion)f(of)h(a)f(line) 178 1085 y(segmen)o(t)10 b(is)g(sho)o(wn.)17 b(A)10 b(diamond)e(shap)q (ed)k(region)e(of)g(heigh)o(t)g(1)g(is)g(placed)h(around)f(eac)o(h)178 1135 y(fragmen)o(t)g(cen)o(ter;)k(those)f(regions)g(that)f(the)h(line)e (segmen)o(t)h(exits)h(cause)g(rasterization)178 1185 y(to)g(pro)q(duce)i(corresp)q(onding)g(fragmen)o(ts.)p 1595 1214 2 972 v 139 1216 1459 2 v 120 1395 a FC(p)q(erturb)q(ed)h (endp)q(oin)o(ts)f Fz(p)567 1378 y FG(0)567 1406 y Fu(a)602 1395 y FC(giv)o(en)g(b)o(y)f(\()p Fy(x)826 1402 y Fu(a)846 1395 y Fy(;)8 b(y)889 1402 y Fu(a)910 1395 y FC(\))g FB(\000)g FC(\()p Fy(\017;)g(\017)1054 1378 y Fq(2)1074 1395 y FC(\))13 b(and)i Fz(p)1222 1378 y FG(0)1222 1408 y Fu(b)1253 1395 y FC(giv)o(en)g(b)o(y)f(\()p Fy(x)1477 1402 y Fu(b)1494 1395 y Fy(;)8 b(y)1537 1402 y Fu(b)1554 1395 y FC(\))f FB(\000)120 1451 y FC(\()p Fy(\017;)h(\017)195 1435 y Fq(2)215 1451 y FC(\).)18 b(Rasterizing)12 b(the)f(line)i (segmen)o(t)e(starting)f(at)h Fz(p)1072 1458 y Fu(a)1104 1451 y FC(and)g(ending)h(at)f Fz(p)1411 1458 y Fu(b)1439 1451 y FC(pro)q(duces)120 1508 y(those)18 b(fragmen)o(ts)f Fy(f)23 b FC(for)17 b(whic)o(h)i(the)f(segmen)o(t)f(starting)g(at)h Fz(p)1224 1491 y FG(0)1224 1519 y Fu(a)1262 1508 y FC(and)h(ending)g (on)f Fz(p)1598 1491 y FG(0)1598 1521 y Fu(b)120 1564 y FC(in)o(tersects)i Fy(R)361 1571 y Fu(f)383 1564 y FC(,)f(except)h(if)f Fz(p)636 1548 y FG(0)636 1577 y Fu(b)673 1564 y FC(is)g(con)o(tained)h(in)g Fy(R)1024 1571 y Fu(f)1046 1564 y FC(.)31 b Fy(\017)19 b FC(is)h(c)o(hosen)f(to)g (b)q(e)g(so)g(small)120 1621 y(that)h(rasterizing)g(the)h(line)g (segmen)o(t)f(pro)q(duces)h(the)f(same)g(fragmen)o(ts)f(when)h Fy(\016)i FC(is)120 1677 y(substituted)16 b(for)f Fy(\017)g FC(for)g(an)o(y)g(0)d Fy(<)h(\016)i FB(\024)e Fy(\017)p FC(.)191 1734 y(When)18 b Fz(p)355 1741 y Fu(a)394 1734 y FC(and)g Fz(p)514 1741 y Fu(b)549 1734 y FC(lie)h(on)f(fragmen)o(t)f (cen)o(ters,)h(this)g(c)o(haracterization)g(of)f(frag-)120 1790 y(men)o(ts)g(reduces)h(to)f(Bresenham's)g(algorithm)h(with)f(one)h (mo)q(di\014cation:)25 b(lines)19 b(pro-)120 1847 y(duced)g(in)e(this)h (description)g(are)f(\\half-op)q(en,")h(meaning)g(that)e(the)h(\014nal) h(fragmen)o(t)120 1903 y(\(corresp)q(onding)j(to)e Fz(p)524 1910 y Fu(b)542 1903 y FC(\))g(is)i(not)e(dra)o(wn.)34 b(This)21 b(means)f(that)f(when)i(rasterizing)f(a)120 1960 y(series)g(of)e(connected)h(line)h(segmen)o(ts,)f(shared)f(endp)q (oin)o(ts)i(will)g(b)q(e)f(pro)q(duced)h(only)120 2016 y(once)c(rather)f(than)g(t)o(wice)g(\(as)g(w)o(ould)g(o)q(ccur)h(with)f (Bresenham's)g(algorithm\).)191 2073 y(Because)21 b(the)g(initial)h (and)f(\014nal)g(conditions)h(of)e(the)g(diamond-exit)i(rule)f(ma)o(y) 120 2129 y(b)q(e)g(di\016cult)h(to)d(implemen)o(t,)j(other)e(line)i (segmen)o(t)d(rasterization)h(algorithms)g(are)120 2186 y(allo)o(w)o(ed,)c(sub)s(ject)f(to)f(the)i(follo)o(wing)f(rules:)176 2280 y(1.)22 b(The)f(co)q(ordinates)g(of)f(a)g(fragmen)o(t)f(pro)q (duced)j(b)o(y)e(the)h(algorithm)f(ma)o(y)g(not)234 2337 y(deviate)g(b)o(y)f(more)h(than)f(one)g(unit)i(in)f(either)g Fy(x)f FC(or)g Fy(y)j FC(windo)o(w)d(co)q(ordinates)234 2393 y(from)14 b(a)h(corresp)q(onding)i(fragmen)o(t)d(pro)q(duced)i(b)o (y)f(the)g(diamond-exit)i(rule.)176 2488 y(2.)22 b(The)16 b(total)f(n)o(um)o(b)q(er)h(of)f(fragmen)o(ts)f(pro)q(duced)j(b)o(y)e (the)h(algorithm)g(ma)o(y)e(di\013er)p eop %%Page: 62 71 62 70 bop 332 137 a FC(62)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)446 286 y FC(from)14 b(that)h(pro)q(duced)h(b)o(y)f (the)g(diamond-exit)i(rule)f(b)o(y)f(no)g(more)g(than)g(one.)388 376 y(3.)22 b(F)l(or)12 b(an)h Fy(x)p FC(-ma)s(jor)e(line,)k(no)e(t)o (w)o(o)f(fragmen)o(ts)f(ma)o(y)h(b)q(e)i(pro)q(duced)g(that)e(lie)j(in) e(the)446 433 y(same)f(windo)o(w-co)q(ordinate)i(column)g(\(for)e(a)g Fy(y)r FC(-ma)s(jor)g(line,)i(no)f(t)o(w)o(o)f(fragmen)o(ts)446 489 y(ma)o(y)i(app)q(ear)i(in)g(the)f(same)g(ro)o(w\).)388 579 y(4.)22 b(If)f(t)o(w)o(o)e(line)j(segmen)o(ts)e(share)g(a)h(common) f(endp)q(oin)o(t,)j(and)d(b)q(oth)h(segmen)o(ts)446 636 y(are)14 b(either)h Fy(x)p FC(-ma)s(jor)e(\(b)q(oth)i(left-to-righ)o(t) f(or)g(b)q(oth)h(righ)o(t-to-left\))f(or)g Fy(y)r FC(-ma)s(jor)446 692 y(\(b)q(oth)22 b(b)q(ottom-to-top)e(or)i(b)q(oth)g(top-to-b)q (ottom\),)g(then)h(rasterizing)f(b)q(oth)446 749 y(segmen)o(ts)f(ma)o (y)f(not)h(pro)q(duce)i(duplicate)g(fragmen)o(ts,)e(nor)g(ma)o(y)g(an)o (y)g(frag-)446 805 y(men)o(ts)c(b)q(e)h(omitted)f(so)g(as)g(to)g(in)o (terrupt)g(con)o(tin)o(uit)o(y)h(of)f(the)g(connected)h(seg-)446 862 y(men)o(ts.)403 946 y(Next)13 b(w)o(e)h(m)o(ust)f(sp)q(ecify)i(ho)o (w)e(the)h(data)f(asso)q(ciated)h(with)g(eac)o(h)g(rasterized)g(frag-) 332 1003 y(men)o(t)21 b(are)f(obtained.)38 b(Let)21 b(the)g(windo)o(w)g (co)q(ordinates)g(of)f(a)h(pro)q(duced)h(fragmen)o(t)332 1059 y(cen)o(ter)15 b(b)q(e)g(giv)o(en)g(b)o(y)f Fz(p)737 1066 y Fu(r)769 1059 y FC(=)f(\()p Fy(x)861 1066 y Fu(d)881 1059 y Fy(;)8 b(y)924 1066 y Fu(d)943 1059 y FC(\))14 b(and)h(let)g Fz(p)1157 1066 y Fu(a)1190 1059 y FC(=)e(\()p Fy(x)1282 1066 y Fu(a)1303 1059 y Fy(;)8 b(y)1346 1066 y Fu(a)1366 1059 y FC(\))14 b(and)h Fz(p)1515 1066 y Fu(b)1545 1059 y FC(=)e(\()p Fy(x)1637 1066 y Fu(b)1653 1059 y Fy(;)8 b(y)1696 1066 y Fu(b)1713 1059 y FC(\).)19 b(Set)825 1174 y Fy(t)13 b FC(=)907 1143 y(\()p Fz(p)954 1150 y Fu(r)983 1143 y FB(\000)d Fz(p)1057 1150 y Fu(a)1078 1143 y FC(\))g FB(\001)g FC(\()p Fz(p)1176 1150 y Fu(b)1203 1143 y FB(\000)g Fz(p)1277 1150 y Fu(a)1298 1143 y FC(\))p 907 1163 409 2 v 1003 1205 a FB(k)p Fz(p)1055 1212 y Fu(b)1082 1205 y FB(\000)h Fz(p)1157 1212 y Fu(a)1177 1205 y FB(k)1200 1192 y Fq(2)1321 1174 y Fy(:)399 b FC(\(3.1\))332 1289 y(\(Note)15 b(that)g Fy(t)e FC(=)h(0)h(at)g Fz(p)760 1296 y Fu(a)796 1289 y FC(and)h Fy(t)d FC(=)h(1)h(at)g Fz(p)1086 1296 y Fu(b)1103 1289 y FC(.\))20 b(The)c(v)m(alue)h(of)e(an) g(asso)q(ciated)h(datum)332 1345 y Fy(f)j FC(for)13 b(the)h(fragmen)o (t,)f(whether)h(it)g(b)q(e)h(R,)f(G,)f(B,)h(or)f(A)h(\(in)h(R)o(GBA)f (mo)q(de\))f(or)h(a)f(color)332 1402 y(index)k(\(in)f(color)f(index)i (mo)q(de\),)e(or)g(the)h Fy(s)p FC(,)f Fy(t)p FC(,)g(or)g Fy(r)i FC(texture)e(co)q(ordinate)h(\(the)f(depth)332 1458 y(v)m(alue,)h(windo)o(w)g Fy(z)r FC(,)e(m)o(ust)h(b)q(e)h(found)f (using)h(equation)g(3.3,)e(b)q(elo)o(w\),)h(is)h(found)f(as)807 1573 y Fy(f)j FC(=)907 1542 y(\(1)9 b FB(\000)i Fy(t)p FC(\))p Fy(f)1059 1549 y Fu(a)1080 1542 y Fy(=w)1136 1549 y Fu(a)1166 1542 y FC(+)f Fy(tf)1249 1549 y Fu(b)1267 1542 y Fy(=w)1323 1549 y Fu(b)p 900 1562 447 2 v 900 1604 a FC(\(1)f FB(\000)i Fy(t)p FC(\))p Fy(\013)1059 1611 y Fu(a)1080 1604 y Fy(=w)1136 1611 y Fu(a)1166 1604 y FC(+)f Fy(t\013)1256 1611 y Fu(b)1274 1604 y Fy(=w)1330 1611 y Fu(b)1733 1573 y FC(\(3.2\))332 1686 y(where)17 b Fy(f)487 1693 y Fu(a)524 1686 y FC(and)g Fy(f)636 1693 y Fu(b)669 1686 y FC(are)g(the)f(data)g(asso)q(ciated)g(with)h(the)g (starting)e(and)i(ending)h(end-)332 1742 y(p)q(oin)o(ts)d(of)f(the)g (segmen)o(t,)g(resp)q(ectiv)o(ely;)i Fy(w)1077 1749 y Fu(a)1112 1742 y FC(and)e Fy(w)1232 1749 y Fu(b)1263 1742 y FC(are)g(the)h(clip)h Fy(w)f FC(co)q(ordinates)g(of)332 1798 y(the)c(starting)g(and)g(ending)h(endp)q(oin)o(ts)g(of)f(the)g (segmen)o(ts,)g(resp)q(ectiv)o(ely)l(.)20 b Fy(\013)1615 1805 y Fu(a)1649 1798 y FC(=)13 b Fy(\013)1726 1805 y Fu(b)1756 1798 y FC(=)g(1)332 1855 y(for)j(all)i(data)d(except)i (texture)g(co)q(ordinates,)g(in)g(whic)o(h)h(case)e Fy(\013)1444 1862 y Fu(a)1480 1855 y FC(=)f Fy(q)1550 1862 y Fu(a)1588 1855 y FC(and)i Fy(\013)1707 1862 y Fu(b)1739 1855 y FC(=)e Fy(q)1809 1862 y Fu(b)332 1911 y FC(\()p Fy(q)370 1918 y Fu(a)404 1911 y FC(and)d Fy(q)509 1918 y Fu(b)540 1911 y FC(are)g(the)h(homogeneous)f(texture)h(co)q(ordinates)g(at)f (the)h(starting)f(and)h(end-)332 1968 y(ing)k(endp)q(oin)o(ts)g(of)f (the)g(segmen)o(t;)g(results)g(are)g(unde\014ned)i(if)e(either)h(of)f (these)g(is)h(less)332 2024 y(than)e(or)g(equal)h(to)e(0\).)20 b(Note)14 b(that)h(linear)h(in)o(terp)q(olation)h(w)o(ould)e(use)816 2115 y Fy(f)j FC(=)13 b(\(1)c FB(\000)i Fy(t)p FC(\))p Fy(f)1056 2122 y Fu(a)1077 2115 y Fy(=\013)1129 2122 y Fu(a)1160 2115 y FC(+)f Fy(tf)1243 2122 y Fu(b)1261 2115 y Fy(=\013)1313 2122 y Fu(b)1330 2115 y Fy(:)390 b FC(\(3.3\))332 2206 y(The)21 b(reason)g(that)f(this)h(form)o(ula)f (is)i(incorrect)f(\(except)g(for)f(the)h(depth)g(v)m(alue\))h(is)332 2262 y(that)c(it)g(in)o(terp)q(olates)h(a)f(datum)g(in)h(windo)o(w)g (space,)g(whic)o(h)g(ma)o(y)e(b)q(e)i(distorted)g(b)o(y)332 2319 y(p)q(ersp)q(ectiv)o(e.)h(What)10 b(is)i(actually)f(desired)h(is)g (to)e(\014nd)h(the)g(corresp)q(onding)h(v)m(alue)g(when)332 2375 y(in)o(terp)q(olated)18 b(in)h(ey)o(e)e(space,)h(whic)o(h)g (equation)g(3.2)e(do)q(es.)27 b(A)18 b(GL)f(implemen)o(tation)332 2432 y(ma)o(y)11 b(c)o(ho)q(ose)g(to)g(appro)o(ximate)g(equation)h(3.2) e(with)i(3.3,)f(but)h(this)g(will)h(normally)f(lead)332 2488 y(to)j(unacceptable)h(distortion)g(e\013ects)f(when)g(in)o(terp)q (olating)i(texture)e(co)q(ordinates.)p eop %%Page: 63 72 63 71 bop 120 137 a Fx(3.4.)34 b(LINE)16 b(SEGMENTS)961 b FC(63)120 286 y Fl(3.4.2)56 b(Other)18 b(Line)f(Segmen)n(t)g(F)-5 b(eatures)120 373 y FC(W)l(e)21 b(ha)o(v)o(e)f(just)g(describ)q(ed)j (the)d(rasterization)h(of)f(non-an)o(tialiased)i(line)g(segmen)o(ts)120 430 y(of)d(width)h(one)f(using)h(the)g(default)f(line)i(stipple)g(of)e Fy(F)6 b(F)g(F)g(F)1189 437 y Fq(16)1228 430 y FC(.)32 b(W)l(e)19 b(no)o(w)g(describ)q(e)120 486 y(the)k(rasterization)g(of)f (line)j(segmen)o(ts)d(for)g(general)i(v)m(alues)f(of)g(the)g(line)h (segmen)o(t)120 542 y(rasterization)16 b(parameters.)120 665 y Fz(Line)j(Stipple)120 751 y FC(The)d(command)234 847 y Fw(void)30 b Fz(LineStipple)p FC(\()i Fw(int)15 b Fv(factor)p Fw(,)g(ushort)g Fv(p)n(attern)g FC(\))g Fw(;)120 942 y FC(de\014nes)f(a)e Fv(line)g(stipple)p FC(.)19 b Fv(p)n(attern)12 b FC(is)h(an)f(unsigned)i(short)e(in)o (teger.)19 b(The)13 b Fv(line)f(stipple)g FC(is)120 999 y(tak)o(en)g(from)f(the)h(lo)o(w)o(est)f(order)h(16)f(bits)h(of)g Fv(p)n(attern)p FC(.)19 b(It)11 b(determines)i(those)f(fragmen)o(ts)120 1055 y(that)17 b(are)h(to)f(b)q(e)h(dra)o(wn)f(when)i(the)e(line)j(is)e (rasterized.)28 b Fv(factor)18 b FC(is)g(a)g(coun)o(t)f(that)g(is)120 1112 y(used)d(to)f(mo)q(dify)h(the)f(e\013ectiv)o(e)h(line)h(stipple)g (b)o(y)e(causing)h(eac)o(h)g(bit)g(in)g Fv(line)f(stipple)g FC(to)120 1168 y(b)q(e)i(used)f Fv(factor)h FC(times.)20 b Fy(f)5 b(actor)14 b FC(is)h(clamp)q(ed)g(to)e(the)h(range)g([1)p Fy(;)8 b FC(256].)16 b(Line)g(stippling)120 1225 y(ma)o(y)k(b)q(e)h (enabled)g(or)f(disabled)i(using)f Fz(Enable)h FC(or)d Fz(Disable)j FC(with)e(the)h(constan)o(t)120 1281 y Fr(LINE)p 211 1281 14 2 v 15 w(STIPPLE)p FC(.)12 b(When)i(disabled,)h(it)f(is)f (as)h(if)f(the)h(line)h(stipple)g(has)e(its)h(default)g(v)m(alue.)191 1338 y(Line)k(stippling)i(masks)c(certain)i(fragmen)o(ts)d(that)i(are)g (pro)q(duced)h(b)o(y)f(rasteriza-)120 1394 y(tion)k(so)f(that)f(they)i (are)e(not)h(sen)o(t)g(to)g(the)g(p)q(er-fragmen)o(t)g(stage)f(of)h (the)h(GL.)e(The)120 1451 y(masking)g(is)g(ac)o(hiev)o(ed)h(using)f (three)g(parameters:)26 b(the)19 b(16-bit)g(line)h(stipple)h Fy(p)p FC(,)e(the)120 1507 y(line)e(rep)q(eat)f(coun)o(t)f Fy(r)q FC(,)f(and)h(an)h(in)o(teger)f(stipple)i(coun)o(ter)e Fy(s)p FC(.)20 b(Let)689 1611 y Fy(b)12 b FC(=)h FB(b)p Fy(s=r)q FB(c)g FC(mo)q(d)g(16)p Fy(;)120 1714 y FC(Then)22 b(a)f(fragmen)o(t)g(is)h(pro)q(duced)g(if)g(the)g Fy(b)p FC(th)e(bit)i(of)f Fy(p)h FC(is)g(1,)g(and)g(not)f(pro)q(duced)120 1771 y(otherwise.)f(The)13 b(bits)h(of)f Fy(p)g FC(are)h(n)o(um)o(b)q (ered)g(with)f(0)h(b)q(eing)g(the)g(least)f(signi\014can)o(t)i(and)120 1827 y(15)e(b)q(eing)i(the)f(most)f(signi\014can)o(t.)20 b(The)14 b(initial)i(v)m(alue)f(of)e Fy(s)h FC(is)g(zero;)f Fy(s)h FC(is)g(incremen)o(ted)120 1884 y(after)e(pro)q(duction)i(of)e (eac)o(h)h(fragmen)o(t)e(of)h(a)h(line)h(segmen)o(t)e(\(fragmen)o(ts)f (are)i(pro)q(duced)120 1940 y(in)20 b(order,)f(b)q(eginning)i(at)d(the) h(starting)f(p)q(oin)o(t)h(and)g(w)o(orking)g(to)o(w)o(ards)e(the)h (ending)120 1996 y(p)q(oin)o(t\).)41 b Fy(s)22 b FC(is)h(reset)e(to)h (0)f(whenev)o(er)i(a)e Fz(Begin)i FC(o)q(ccurs,)h(and)e(b)q(efore)g(ev) o(ery)g(line)120 2053 y(segmen)o(t)d(in)h(a)f(group)g(of)g(indep)q (enden)o(t)i(segmen)o(ts)e(\(as)f(sp)q(eci\014ed)k(when)d Fz(Begin)h FC(is)120 2109 y(in)o(v)o(ok)o(ed)c(with)f Fr(LINES)p FC(\).)191 2166 y(If)e(the)g(line)h(segmen)o(t)e(has)h(b)q (een)h(clipp)q(ed,)h(then)e(the)g(v)m(alue)h(of)e Fy(s)h FC(at)f(the)h(b)q(eginning)120 2223 y(of)i(the)g(line)i(segmen)o(t)e (is)h(indeterminate.)120 2345 y Fz(Wide)i(Lines)120 2432 y FC(The)32 b(actual)f(width)g(of)g(non-an)o(tialiased)h(lines)h(is)f (determined)g(b)o(y)f(rounding)120 2488 y(the)i(supplied)h(width)f(to)f (the)g(nearest)g(in)o(teger,)k(then)d(clamping)h(it)e(to)g(the)p eop %%Page: 64 73 64 72 bop 332 137 a FC(64)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 350 242 1459 2 v 350 1244 2 1002 v 449 317 a 19892389 9946190 1052508 14011514 50520391 39008583 startTexFig 449 317 a %%BeginDocument: pics/wideline.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /pmask16 { <00006666666600000000999999990000 00006666666600000000999999990000> } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 48 /patchar16 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar16 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask16 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 16 576 M 384 576 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 32 592 M 32 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 80 592 M 80 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 128 592 M 128 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 176 592 M 176 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 592 M 224 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 272 592 M 272 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 320 592 M 320 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 368 592 M 368 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 16 528 M 384 528 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 16 480 M 384 480 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 16 432 M 384 432 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 16 384 M 384 384 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 16 336 M 384 336 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 16 288 M 384 288 L stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 32 384 M 368 480 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 32 360 M 368 456 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 72 392 M 88 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 72 376 M 88 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 120 392 M 136 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 120 376 M 136 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 24 392 M 40 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 24 376 M 40 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 72 440 M 88 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 72 424 M 88 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 120 440 M 136 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 120 424 M 136 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 168 392 M 184 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 168 376 M 184 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 168 440 M 184 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 168 424 M 184 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 216 440 M 232 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 216 424 M 232 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 216 488 M 232 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 216 472 M 232 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 264 440 M 280 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 264 424 M 280 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 264 488 M 280 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 264 472 M 280 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 312 440 M 328 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 312 424 M 328 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 312 488 M 328 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 312 472 M 328 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 360 440 M 376 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 360 424 M 376 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 360 488 M 376 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 360 472 M 376 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 24 440 M 40 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 24 424 M 40 440 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 400 576 M 768 576 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 416 592 M 416 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 464 592 M 464 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 512 592 M 512 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 560 592 M 560 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 608 592 M 608 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 656 592 M 656 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 704 592 M 704 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 752 592 M 752 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 400 528 M 768 528 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 400 480 M 768 480 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 400 432 M 768 432 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 400 384 M 768 384 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 400 336 M 768 336 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 400 288 M 768 288 L stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 416 384 M 752 480 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 416 336 M 752 432 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 456 392 M 472 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 456 376 M 472 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 504 392 M 520 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 504 376 M 520 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 408 392 M 424 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 408 376 M 424 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 456 440 M 472 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 456 424 M 472 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 504 440 M 520 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 504 424 M 520 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 552 392 M 568 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 552 376 M 568 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 552 440 M 568 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 552 424 M 568 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 600 440 M 616 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 600 424 M 616 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 600 488 M 616 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 600 472 M 616 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 648 440 M 664 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 648 424 M 664 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 648 488 M 664 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 648 472 M 664 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 696 440 M 712 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 696 424 M 712 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 696 488 M 712 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 696 472 M 712 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 744 440 M 760 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 744 424 M 760 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 744 488 M 760 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 744 472 M 760 488 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 408 440 M 424 424 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 408 424 M 424 440 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 408 344 M 424 328 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 408 328 M 424 344 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 456 344 M 472 328 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 456 328 M 472 344 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 552 487 M 568 471 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 552 471 M 568 487 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 600 392 M 616 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 600 376 M 616 392 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 648 392 M 664 376 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 648 376 M 664 392 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 159 213] concat newpath 0 0 M 0 24 L 79.526 24 L 79.526 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 157 211 M 157 239 L 240.526 239 L 240.526 211 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 159 213] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (width = 2) 77.526 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 547 213] concat newpath 0 0 M 0 24 L 79.526 24 L 79.526 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 545 211 M 545 239 L 628.526 239 L 628.526 211 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 547 213] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (width = 3) 77.526 S setmatrix grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 744 535 M 760 519 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 744 519 M 760 535 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 696 535 M 712 519 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 696 519 M 712 535 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 504 488 M 520 472 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 504 472 M 520 488 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1065 a Fm(Figure)10 b(3.5.)16 b(Rasterization)10 b(of)f(non-an)o(tialiased)g(wide)h(lines.)17 b(x-ma)r(jor)8 b(line)h(segmen)o(ts)389 1115 y(are)15 b(sho)o(wn.)j(The)d(hea)o(vy)f (line)f(segmen)o(t)h(is)g(the)h(one)f(sp)q(eci\014ed)i(to)e(b)q(e)g (rasterized;)i(the)389 1165 y(ligh)o(t)f(segmen)o(t)g(is)h(the)g (o\013set)g(segmen)o(t)g(used)g(for)g(rasterization.)23 b(x)16 b(marks)e(indicate)389 1215 y(the)h(fragmen)o(t)d(cen)o(ters)k (pro)q(duced)f(b)o(y)f(rasterization.)p 1807 1244 2 1002 v 350 1246 1459 2 v 332 1456 a FC(implemen)o(tation-dep)q(endent)23 b(maxim)o(um)d(non-an)o(tialiased)i(line)g(width.)36 b(Though)332 1513 y(this)26 b(implemen)o(tation-dep)q(enden)o(t)i(v)m (alue)e(cannot)f(b)q(e)h(queried,)j(it)c(m)o(ust)g(b)q(e)h(no)332 1569 y(less)20 b(than)g(the)g(implemen)o(tation-dep)q(enden)o(t)i (maxim)o(um)e(an)o(tialiased)h(line)g(width,)332 1625 y(rounded)f(to)e(the)h(nearest)g(in)o(teger)g(v)m(alue,)h(and)f(in)h (an)o(y)f(ev)o(en)o(t)f(no)h(less)h(than)f(1.)30 b(If)332 1682 y(rounding)16 b(the)f(sp)q(eci\014ed)i(width)e(results)h(in)f(the) g(v)m(alue)h(0,)f(then)g(it)g(is)g(as)g(if)g(the)g(v)m(alue)332 1738 y(w)o(ere)g(1.)403 1811 y(Non-an)o(tialiased)23 b(line)h(segmen)o(ts)e(of)g(width)h(other)f(than)g(one)g(are)g (rasterized)332 1867 y(b)o(y)d(o\013setting)f(them)h(in)h(the)f(minor)h (direction)g(\(for)e(an)h Fy(x)p FC(-ma)s(jor)f(line,)j(the)e(minor)332 1924 y(direction)12 b(is)f Fy(y)r FC(,)h(and)e(for)h(a)f Fy(y)r FC(-ma)s(jor)f(line,)k(the)e(minor)g(direction)h(is)f Fy(x)p FC(\))g(and)g(replicating)332 1980 y(fragmen)o(ts)17 b(in)j(the)e(minor)h(direction)g(\(see)g(Figure)f(3.5\).)88 b(Let)19 b Fy(w)g FC(b)q(e)g(the)g(width)332 2037 y(rounded)e(to)e(the) h(nearest)g(in)o(teger)g(\(if)g Fy(w)f FC(=)f(0,)h(then)i(it)f(is)g(as) g(if)g Fy(w)f FC(=)f(1\).)22 b(If)16 b(the)g(line)332 2093 y(segmen)o(t)d(has)h(endp)q(oin)o(ts)h(giv)o(en)f(b)o(y)g(\()p Fy(x)1015 2100 y Fq(0)1034 2093 y Fy(;)8 b(y)1077 2100 y Fq(0)1097 2093 y FC(\))13 b(and)h(\()p Fy(x)1259 2100 y Fq(1)1278 2093 y Fy(;)8 b(y)1321 2100 y Fq(1)1340 2093 y FC(\))14 b(in)g(windo)o(w)g(co)q(ordinates,)332 2149 y(the)h(segmen)o(t)g(with)g(endp)q(oin)o(ts)h(\()p Fy(x)940 2156 y Fq(0)960 2149 y Fy(;)8 b(y)1003 2156 y Fq(0)1032 2149 y FB(\000)i FC(\()p Fy(w)g FB(\000)h FC(1\))p Fy(=)p FC(2\))i(and)i(\()p Fy(x)1434 2156 y Fq(1)1454 2149 y Fy(;)8 b(y)1497 2156 y Fq(1)1526 2149 y FB(\000)i FC(\()p Fy(w)g FB(\000)g FC(1\))p Fy(=)p FC(2\))k(is)332 2206 y(rasterized,)g(but)g(instead)g(of)f(a)g(single)i(fragmen)o(t,)d(a)h (column)i(of)e(fragmen)o(ts)f(of)h(heigh)o(t)332 2262 y Fy(w)19 b FC(\(a)f(ro)o(w)f(of)h(fragmen)o(ts)f(of)h(length)h Fy(w)g FC(for)f(a)g Fy(y)r FC(-ma)s(jor)f(segmen)o(t\))h(is)h(pro)q (duced)g(at)332 2319 y(eac)o(h)d Fy(x)g FC(\()p Fy(y)i FC(for)e Fy(y)r FC(-ma)s(jor\))e(lo)q(cation.)23 b(The)17 b(lo)o(w)o(est)e(fragmen)o(t)g(of)h(this)h(column)g(is)f(the)332 2375 y(fragmen)o(t)k(that)h(w)o(ould)h(b)q(e)g(pro)q(duced)g(b)o(y)g (rasterizing)f(the)h(segmen)o(t)f(of)g(width)h(1)332 2432 y(with)e(the)g(mo)q(di\014ed)h(co)q(ordinates.)33 b(The)20 b(whole)g(column)g(is)g(not)g(pro)q(duced)g(if)g(the)332 2488 y(stipple)d(bit)f(for)f(the)h(column's)g Fy(x)f FC(lo)q(cation)i(is)f(zero;)f(otherwise,)h(the)f(whole)i(column)p eop %%Page: 65 74 65 73 bop 120 137 a Fx(3.4.)34 b(LINE)16 b(SEGMENTS)961 b FC(65)p 139 242 1459 2 v 139 1066 2 824 v 568 317 a 9472573 8714763 6315048 16840130 29470228 38219202 startTexFig 568 317 a %%BeginDocument: pics/aaline.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /pmask16 { <00006666666600000000999999990000 00006666666600000000999999990000> } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 48 /patchar16 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar16 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask16 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 560 M 448 560 L 448 560 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 112 580.211 M 112 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 144 576 M 144 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 176 576 M 176 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 208 576 M 208 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 240 576 M 240 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 272 576 M 272 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 304 576 M 304 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 336 576 M 336 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 368 576 M 368 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 400 576 M 400 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 432 576 M 432 256 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 528 M 448 528 L 448 528 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 496 M 448 496 L 448 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 464 M 448 464 L 448 464 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 432 M 448 432 L 448 432 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 400 M 448 400 L 448 400 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 368 M 448 368 L 448 368 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 336 M 448 336 L 448 336 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 304 M 448 304 L 448 304 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 96 272 M 448 272 L 448 272 L stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 120 312 M 408 488 L stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth [4] 0 setdash newpath 129 302 M 416 477 L stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth [4] 0 setdash newpath 113 322 M 401 498 L stroke grestore gsave 0 0 0 setrgbcolor /PatternFont findfont 16.08 scalefont setfont newpath 128 300 M 416 476 L 401 499 L 112 323 L closepath eoclip 272 16.08 512 { 80 exch M (0000000000000000000000) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 128 300 M 416 476 L 401 499 L 112 323 L closepath stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 987 a Fm(Figure)10 b(3.6.)16 b(The)11 b(region)g(used)g(in)g (rasterizing)g(and)f(\014nding)g(corresp)q(onding)i(co)o(v)o(erage)178 1037 y(v)n(alues)h(for)h(an)f(an)o(tialiased)g(line)g(segmen)o(t)h (\(an)g(x-ma)r(jor)e(line)h(segmen)o(t)h(is)f(sho)o(wn\).)p 1595 1066 2 824 v 139 1068 1459 2 v 120 1250 a FC(is)j(pro)q(duced.)120 1381 y Fz(An)o(tialiasing)120 1470 y FC(Rasterized)27 b(an)o(tialiased)f(line)h(segmen)o(ts)e(pro)q(duce)h(fragmen)o(ts)f (whose)g(fragmen)o(t)120 1527 y(squares)13 b(in)o(tersect)h(a)f (rectangle)g(cen)o(tered)h(on)f(the)g(line)i(segmen)o(t.)k(Tw)o(o)12 b(of)h(the)g(edges)120 1583 y(are)18 b(parallel)i(to)d(the)h(sp)q (eci\014ed)i(line)g(segmen)o(t;)e(eac)o(h)g(is)h(at)e(a)h(distance)g (of)g(one-half)120 1640 y(the)c(curren)o(t)f(width)h(from)e(that)h (segmen)o(t:)19 b(one)13 b(ab)q(o)o(v)o(e)g(the)g(segmen)o(t)g(and)h (one)f(b)q(elo)o(w)120 1696 y(it.)32 b(The)19 b(other)g(t)o(w)o(o)f (edges)h(pass)g(through)f(the)h(line)i(endp)q(oin)o(ts)f(and)f(are)g(p) q(erp)q(en-)120 1752 y(dicular)h(to)d(the)h(direction)h(of)f(the)f(sp)q (eci\014ed)k(line)e(segmen)o(t.)28 b(Co)o(v)o(erage)16 b(v)m(alues)j(are)120 1809 y(computed)h(for)f(eac)o(h)g(fragmen)o(t)f (b)o(y)i(computing)g(the)f(area)g(of)g(the)g(in)o(tersection)h(of)120 1865 y(the)14 b(rectangle)g(with)f(the)h(fragmen)o(t)e(square)i(\(see)f (Figure)h(3.6;)e(see)i(also)f(section)h(3.2\).)161 1922 y(Equation)i(3.2)e(is)i(used)g(to)f(compute)g(asso)q(ciated)h(data)e(v) m(alues)j(just)e(as)g(with)g(non-)120 1978 y(an)o(tialiased)f(lines;)h (equation)f(3.1)e(is)h(used)h(to)e(\014nd)i(the)f(v)m(alue)h(of)e Fy(t)i FC(for)e(eac)o(h)h(fragmen)o(t)120 2035 y(whose)j(square)g(is)h (in)o(tersected)g(b)o(y)f(the)g(line)i(segmen)o(t's)d(rectangle.)24 b(Not)15 b(all)i(widths)120 2091 y(need)i(b)q(e)g(supp)q(orted)g(for)f (line)i(segmen)o(t)d(an)o(tialiasing,)j(but)f(width)f(1)p Fy(:)p FC(0)g(an)o(tialiased)120 2148 y(segmen)o(ts)h(m)o(ust)f(b)q(e)i (pro)o(vided.)31 b(As)19 b(with)h(the)f(p)q(oin)o(t)g(width,)h(a)f(GL)g (implemen)o(ta-)120 2204 y(tion)i(ma)o(y)e(b)q(e)h(queried)i(for)d(the) h(range)f(and)i(n)o(um)o(b)q(er)f(of)f(gradations)h(of)f(a)o(v)m (ailable)120 2261 y(an)o(tialiased)e(line)g(widths.)191 2319 y(F)l(or)11 b(purp)q(oses)h(of)f(an)o(tialiasing,)i(a)e(stippled)i (line)g(is)f(considered)h(to)d(b)q(e)i(a)g(sequence)120 2375 y(of)18 b(con)o(tiguous)f(rectangles)h(cen)o(tered)g(on)g(the)g (line)h(segmen)o(t.)26 b(Eac)o(h)18 b(rectangle)g(has)120 2432 y(width)c(equal)f(to)f(the)h(curren)o(t)g(line)h(width)f(and)g (length)h(equal)f(to)f(1)g(pixel)j(\(except)e(the)120 2488 y(last,)19 b(whic)o(h)g(ma)o(y)f(b)q(e)h(shorter\).)28 b(These)18 b(rectangles)h(are)f(n)o(um)o(b)q(ered)h(from)e(0)h(to)g Fy(n)p FC(,)p eop %%Page: 66 75 66 74 bop 332 137 a FC(66)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y FC(starting)12 b(with)h(the)g(rectangle)g (inciden)o(t)h(on)f(the)f(starting)g(endp)q(oin)o(t)i(of)f(the)f (segmen)o(t.)332 343 y(Eac)o(h)17 b(of)h(these)f(rectangles)h(is)h (either)f(eliminated)h(or)f(pro)q(duced)g(according)g(to)f(the)332 399 y(pro)q(cedure)g(giv)o(en)g(under)g Fz(Line)j(Stipple)p FC(,)d(ab)q(o)o(v)o(e,)f(where)h(\\fragmen)o(t")d(is)j(replaced)332 456 y(with)g(\\rectangle.")25 b(Eac)o(h)16 b(rectangle)h(so)g(pro)q (duced)h(is)f(rasterized)g(as)g(if)g(it)g(w)o(ere)g(an)332 512 y(an)o(tialiased)22 b(p)q(olygon,)h(describ)q(ed)f(b)q(elo)o(w)g (\(but)f(culling,)j(non-default)e(settings)f(of)332 569 y Fz(P)o(olygonMo)q(de)p FC(,)15 b(and)g(p)q(olygon)h(stippling)h(are)e (not)g(applied\).)332 688 y Fl(3.4.3)55 b(Line)18 b(Rasterization)f (State)332 774 y FC(The)j(state)e(required)j(for)d(line)j (rasterization)f(consists)f(of)g(the)h(\015oating-p)q(oin)o(t)g(line) 332 830 y(width,)g(a)e(16-bit)h(line)h(stipple,)h(the)e(line)h(stipple) g(rep)q(eat)f(coun)o(t,)g(a)f(bit)i(indicating)332 887 y(whether)d(stippling)i(is)f(enabled)g(or)f(disabled,)i(and)e(a)g(bit)h (indicating)h(whether)e(line)332 943 y(an)o(tialiasing)f(is)f(on)f(or)g (o\013.)19 b(In)c(addition,)g(during)h(rasterization,)e(an)g(in)o (teger)h(stipple)332 1000 y(coun)o(ter)i(m)o(ust)g(b)q(e)h(main)o (tained)g(to)e(implemen)o(t)j(line)g(stippling.)27 b(The)18 b(initial)h(v)m(alue)332 1056 y(of)e(the)h(line)i(width)e(is)g(1)p Fy(:)p FC(0.)27 b(The)18 b(initial)i(v)m(alue)f(of)e(the)h(line)i (stipple)f(is)f Fv(0xFFFF)f FC(\(a)332 1113 y(stipple)g(of)e(all)h (ones\).)j(The)d(initial)h(v)m(alue)f(of)f(the)g(line)i(stipple)g(rep)q (eat)e(coun)o(t)g(is)h(one.)332 1169 y(The)c(initial)i(state)d(of)h (line)h(stippling)h(is)e(disabled.)21 b(The)12 b(initial)i(state)d(of)g (line)j(segmen)o(t)332 1226 y(an)o(tialiasing)j(is)e(disabled.)332 1366 y Fs(3.5)66 b(P)n(olygons)332 1468 y FC(A)18 b(p)q(olygon)g (results)g(from)e(a)h(p)q(olygon)i Fz(Begin)p FC(/)p Fz(End)f FC(ob)s(ject,)f(a)g(triangle)h(resulting)332 1524 y(from)12 b(a)g(triangle)h(strip,)f(triangle)h(fan,)f(or)g(series) h(of)f(separate)g(triangles,)h(or)f(a)g(quadri-)332 1581 y(lateral)h(arising)h(from)e(a)h(quadrilateral)h(strip,)f(series)h(of)e (separate)h(quadrilaterals,)h(or)332 1637 y(a)j Fz(Rect)h FC(command.)27 b(Lik)o(e)19 b(p)q(oin)o(ts)e(and)h(line)h(segmen)o(ts,) e(p)q(olygon)h(rasterization)g(is)332 1694 y(con)o(trolled)f(b)o(y)f (sev)o(eral)g(v)m(ariables.)23 b(P)o(olygon)15 b(an)o(tialiasing)i(is)g (con)o(trolled)f(with)h Fz(En-)332 1750 y(able)h FC(and)e Fz(Disable)i FC(with)f(the)f(sym)o(b)q(olic)i(constan)o(t)e Fr(POLYGON)p 1432 1750 14 2 v 14 w(SMOOTH)p FC(.)f(The)i(analog)332 1807 y(to)c(line)j(segmen)o(t)d(stippling)j(for)d(p)q(olygons)h(is)h(p) q(olygon)f(stippling,)h(describ)q(ed)h(b)q(elo)o(w.)332 1926 y Fl(3.5.1)55 b(Basic)19 b(P)n(olygon)f(Rasterization)332 2012 y FC(The)23 b(\014rst)f(step)h(of)f(p)q(olygon)h(rasterization)f (is)i(to)d(determine)j(if)f(the)g(p)q(olygon)g(is)332 2068 y Fv(b)n(ack)18 b(facing)g FC(or)f Fv(fr)n(ont)i(facing)p FC(.)27 b(This)18 b(determination)h(is)g(made)e(b)o(y)h(examining)h (the)332 2125 y(sign)f(of)f(the)h(area)f(computed)h(b)o(y)f(equation)h (2.6)f(of)g(section)h(2.13.1)d(\(including)20 b(the)332 2181 y(p)q(ossible)d(rev)o(ersal)e(of)f(this)i(sign)f(as)g(indicated)h (b)o(y)f(the)g(last)g(call)h(to)f Fz(F)l(ron)o(tF)l(ace)p FC(\).)j(If)332 2238 y(this)e(sign)g(is)h(p)q(ositiv)o(e,)f(the)g(p)q (olygon)g(is)g(fron)o(tfacing;)f(otherwise,)h(it)g(is)g(bac)o(k)f (facing.)332 2294 y(This)e(determination)g(is)g(used)g(in)h (conjunction)f(with)g(the)f Fz(CullF)l(ace)i FC(enable)f(bit)g(and)332 2350 y(mo)q(de)h(v)m(alue)h(to)d(decide)k(whether)d(or)g(not)g(a)g (particular)i(p)q(olygon)f(is)g(rasterized.)19 b(The)332 2407 y Fz(CullF)l(ace)d FC(mo)q(de)g(is)f(set)g(b)o(y)g(calling)446 2488 y Fw(void)29 b Fz(CullF)l(ace)p FC(\()i Fw(enum)15 b Fv(mo)n(de)g FC(\))g Fw(;)p eop %%Page: 67 76 67 75 bop 120 137 a Fx(3.5.)34 b(POL)l(YGONS)1089 b FC(67)120 286 y Fv(mo)n(de)17 b FC(is)f(a)g(sym)o(b)q(olic)h(constan)o(t:)k(one) 16 b(of)f Fr(FRONT)p FC(,)g Fr(BACK)g FC(or)g Fr(FRONT)p 1262 286 14 2 v 15 w(AND)p 1343 286 V 15 w(BACK)p FC(.)g(Culling)120 343 y(is)f(enabled)h(or)e(disabled)j(with)e Fz(Enable)g FC(or)f Fz(Disable)i FC(using)f(the)g(sym)o(b)q(olic)h(constan)o(t)120 399 y Fr(CULL)p 211 399 V 15 w(FACE)p FC(.)c(F)l(ron)o(t)g(facing)i(p)q (olygons)g(are)f(rasterized)g(if)h(either)g(culling)h(is)f(disabled)h (or)120 456 y(the)g Fz(CullF)l(ace)g FC(mo)q(de)f(is)h Fr(BACK)f FC(while)h(bac)o(k)g(facing)f(p)q(olygons)h(are)f(rasterized) g(only)h(if)120 512 y(either)h(culling)i(is)d(disabled)i(or)e(the)g Fz(CullF)l(ace)h FC(mo)q(de)f(is)h Fr(FRONT)p FC(.)d(The)j(initial)h (setting)120 569 y(of)f(the)g Fz(CullF)l(ace)i FC(mo)q(de)e(is)h Fr(BACK)p FC(.)e(Initially)l(,)j(culling)h(is)d(disabled.)191 625 y(The)g(rule)g(for)f(determining)i(whic)o(h)g(fragmen)o(ts)d(are)i (pro)q(duced)g(b)o(y)g(p)q(olygon)g(ras-)120 682 y(terization)e(is)f (called)i Fv(p)n(oint)f(sampling)p FC(.)k(The)c(t)o(w)o(o-dimensional)f (pro)s(jection)g(obtained)120 738 y(b)o(y)f(taking)g(the)g Fy(x)g FC(and)g Fy(y)i FC(windo)o(w)e(co)q(ordinates)g(of)g(the)g(p)q (olygon's)g(v)o(ertices)g(is)g(formed.)120 795 y(F)l(ragmen)o(t)16 b(cen)o(ters)g(that)g(lie)i(inside)g(of)f(this)f(p)q(olygon)i(are)e (pro)q(duced)h(b)o(y)g(rasteriza-)120 851 y(tion.)i(Sp)q(ecial)c (treatmen)o(t)c(is)h(giv)o(en)h(to)e(a)h(fragmen)o(t)f(whose)h(cen)o (ter)g(lies)h(on)f(a)g(p)q(olygon)120 907 y(b)q(oundary)k(edge.)21 b(In)16 b(suc)o(h)f(a)g(case)h(w)o(e)f(require)h(that)e(if)i(t)o(w)o(o) e(p)q(olygons)i(lie)h(on)e(either)120 964 y(side)h(of)e(a)h(common)f (edge)h(\(with)g(iden)o(tical)i(endp)q(oin)o(ts\))f(on)e(whic)o(h)i(a)e (fragmen)o(t)g(cen-)120 1020 y(ter)19 b(lies,)h(then)g(exactly)f(one)g (of)f(the)h(p)q(olygons)g(results)g(in)h(the)f(pro)q(duction)g(of)g (the)120 1077 y(fragmen)o(t)14 b(during)i(rasterization.)191 1133 y(As)e(for)f(the)h(data)f(asso)q(ciated)h(with)g(eac)o(h)g (fragmen)o(t)e(pro)q(duced)j(b)o(y)f(rasterizing)g(a)120 1190 y(p)q(olygon,)f(w)o(e)e(b)q(egin)i(b)o(y)f(sp)q(ecifying)h(ho)o(w) e(these)h(v)m(alues)h(are)e(pro)q(duced)i(for)e(fragmen)o(ts)120 1246 y(in)23 b(a)f(triangle.)41 b(De\014ne)22 b Fv(b)n(aryc)n(entric)g (c)n(o)n(or)n(dinates)f FC(for)h(a)f(triangle.)41 b(Barycen)o(tric)120 1303 y(co)q(ordinates)16 b(are)g(a)f(set)h(of)f(three)h(n)o(um)o(b)q (ers,)f Fy(a)p FC(,)h Fy(b)p FC(,)f(and)h Fy(c)p FC(,)f(eac)o(h)h(in)g (the)g(range)f([0)p Fy(;)8 b FC(1],)120 1359 y(with)17 b Fy(a)11 b FC(+)h Fy(b)e FC(+)i Fy(c)i FC(=)i(1.)23 b(These)17 b(co)q(ordinates)g(uniquely)i(sp)q(ecify)f(an)o(y)e(p)q(oin) o(t)h Fy(p)g FC(within)120 1416 y(the)f(triangle)f(or)g(on)g(the)h (triangle's)f(b)q(oundary)h(as)670 1518 y Fy(p)d FC(=)g Fy(ap)801 1525 y Fu(a)832 1518 y FC(+)d Fy(bp)920 1525 y Fu(b)947 1518 y FC(+)g Fy(cp)1035 1525 y Fu(c)1052 1518 y Fy(;)120 1620 y FC(where)k Fy(p)273 1627 y Fu(a)293 1620 y FC(,)f Fy(p)342 1627 y Fu(b)359 1620 y FC(,)h(and)f Fy(p)495 1627 y Fu(c)525 1620 y FC(are)g(the)g(v)o(ertices)g(of)g(the)g (triangle.)20 b Fy(a)p FC(,)13 b Fy(b)p FC(,)g(and)g Fy(c)f FC(can)i(b)q(e)f(found)120 1676 y(as)368 1745 y Fy(a)g FC(=)468 1715 y(A\()p Fy(pp)566 1722 y Fu(b)583 1715 y Fy(p)606 1722 y Fu(c)623 1715 y FC(\))p 458 1735 194 2 v 458 1777 a(A\()p Fy(p)533 1784 y Fu(a)553 1777 y Fy(p)576 1784 y Fu(b)593 1777 y Fy(p)616 1784 y Fu(c)633 1777 y FC(\))656 1745 y Fy(;)53 b(b)12 b FC(=)815 1715 y(A\()p Fy(pp)913 1722 y Fu(a)934 1715 y Fy(p)957 1722 y Fu(c)974 1715 y FC(\))p 807 1735 V 807 1777 a(A\()p Fy(p)882 1784 y Fu(a)902 1777 y Fy(p)925 1784 y Fu(b)942 1777 y Fy(p)965 1784 y Fu(c)983 1777 y FC(\))1005 1745 y Fy(;)53 b(c)12 b FC(=)1165 1715 y(A\()p Fy(pp)1263 1722 y Fu(a)1283 1715 y Fy(p)1306 1722 y Fu(b)1323 1715 y FC(\))p 1156 1735 V 1156 1777 a(A\()p Fy(p)1231 1784 y Fu(a)1252 1777 y Fy(p)1275 1784 y Fu(b)1292 1777 y Fy(p)1315 1784 y Fu(c)1332 1777 y FC(\))1354 1745 y Fy(;)120 1853 y FC(where)17 b(A\()p Fy(l)q(mn)p FC(\))e(denotes)h(the)g(area)g (in)h(windo)o(w)f(co)q(ordinates)h(of)e(the)i(triangle)f(with)120 1910 y(v)o(ertices)g Fy(l)q FC(,)e Fy(m)p FC(,)h(and)g Fy(n)p FC(.)191 1966 y(Denote)h(a)g(datum)g(at)g Fy(p)612 1973 y Fu(a)632 1966 y FC(,)g Fy(p)684 1973 y Fu(b)701 1966 y FC(,)h(or)e Fy(p)810 1973 y Fu(c)844 1966 y FC(as)h Fy(f)923 1973 y Fu(a)944 1966 y FC(,)g Fy(f)995 1973 y Fu(b)1012 1966 y FC(,)g(or)g Fy(f)1120 1973 y Fu(c)1138 1966 y FC(,)g(resp)q(ectiv)o(ely)l(.)25 b(Then)17 b(the)120 2023 y(v)m(alue)e Fy(f)k FC(of)13 b(a)g(datum)h(at)f(a)g(fragmen)o(t)f (pro)q(duced)j(b)o(y)f(rasterizing)g(a)f(triangle)h(is)g(giv)o(en)120 2079 y(b)o(y)550 2157 y Fy(f)j FC(=)653 2126 y Fy(af)699 2133 y Fu(a)720 2126 y Fy(=w)776 2133 y Fu(a)806 2126 y FC(+)10 b Fy(bf)893 2133 y Fu(b)910 2126 y Fy(=w)966 2133 y Fu(b)993 2126 y FC(+)g Fy(cf)1080 2133 y Fu(c)1098 2126 y Fy(=w)1154 2133 y Fu(c)p 642 2146 539 2 v 642 2188 a Fy(a\013)695 2195 y Fu(a)716 2188 y Fy(=w)772 2195 y Fu(a)803 2188 y FC(+)g Fy(b\013)897 2195 y Fu(b)914 2188 y Fy(=w)970 2195 y Fu(b)996 2188 y FC(+)h Fy(c\013)1091 2195 y Fu(c)1108 2188 y Fy(=w)1164 2195 y Fu(c)1521 2157 y FC(\(3.4\))120 2262 y(where)h Fy(w)281 2269 y Fu(a)301 2262 y FC(,)g Fy(w)359 2269 y Fu(b)387 2262 y FC(and)f Fy(w)504 2269 y Fu(c)532 2262 y FC(are)g(the)h(clip)h Fy(w)f FC(co)q(ordinates)f(of)g Fy(p)1114 2269 y Fu(a)1135 2262 y FC(,)g Fy(p)1182 2269 y Fu(b)1199 2262 y FC(,)h(and)f Fy(p)1331 2269 y Fu(c)1349 2262 y FC(,)g(resp)q(ectiv)o(ely)l(.)120 2319 y Fy(a)p FC(,)h Fy(b)p FC(,)g(and)f Fy(c)h FC(are)f(the)g(barycen) o(tric)h(co)q(ordinates)g(of)f(the)h(fragmen)o(t)e(for)h(whic)o(h)i (the)e(data)120 2375 y(are)16 b(pro)q(duced.)23 b Fy(\013)444 2382 y Fu(a)478 2375 y FC(=)14 b Fy(\013)556 2382 y Fu(b)587 2375 y FC(=)g Fy(\013)665 2382 y Fu(c)696 2375 y FC(=)f(1)j(except)g (for)f(texture)h Fy(s)p FC(,)f Fy(t)p FC(,)h(and)g Fy(r)h FC(co)q(ordinates,)120 2432 y(for)i(whic)o(h)i Fy(\013)358 2439 y Fu(a)399 2432 y FC(=)f Fy(q)474 2439 y Fu(a)495 2432 y FC(,)h Fy(\013)558 2439 y Fu(b)595 2432 y FC(=)f Fy(q)670 2439 y Fu(b)688 2432 y FC(,)g(and)g Fy(\013)843 2439 y Fu(c)880 2432 y FC(=)h Fy(q)956 2439 y Fu(c)993 2432 y FC(\(if)f(an)o(y)f(of)g Fy(q)1223 2439 y Fu(a)1244 2432 y FC(,)i Fy(q)1298 2439 y Fu(b)1315 2432 y FC(,)f(or)g Fy(q)1429 2439 y Fu(c)1466 2432 y FC(are)f(less)120 2488 y(than)f(or)e(equal)j(to)d(zero,)i(results)f(are)h(unde\014ned\).)27 b Fy(a)p FC(,)18 b Fy(b)p FC(,)f(and)h Fy(c)f FC(m)o(ust)f(corresp)q (ond)p eop %%Page: 68 77 68 76 bop 332 137 a FC(68)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y FC(precisely)13 b(to)d(the)h(exact)g(co)q (ordinates)h(of)e(the)h(cen)o(ter)g(of)g(the)g(fragmen)o(t.)17 b(Another)11 b(w)o(a)o(y)332 343 y(of)k(sa)o(ying)g(this)h(is)g(that)f (the)g(data)g(asso)q(ciated)h(with)f(a)g(fragmen)o(t)g(m)o(ust)g(b)q(e) h(sampled)332 399 y(at)f(the)g(fragmen)o(t's)f(cen)o(ter.)403 456 y(Just)19 b(as)g(with)h(line)i(segmen)o(t)d(rasterization,)h (equation)g(3.4)e(ma)o(y)h(b)q(e)h(appro)o(xi-)332 512 y(mated)15 b(b)o(y)776 569 y Fy(f)i FC(=)c Fy(af)909 576 y Fu(a)930 569 y Fy(=\013)982 576 y Fu(a)1013 569 y FC(+)e Fy(bf)1101 576 y Fu(b)1117 569 y Fy(=\013)1169 576 y Fu(b)1197 569 y FC(+)f Fy(cf)1284 576 y Fu(c)1301 569 y Fy(=\013)1353 576 y Fu(c)1370 569 y FC(;)332 651 y(this)15 b(ma)o(y)f(yield)i(acceptable)g(results)f(for)f(color)g(v)m (alues)i(\(it)f Fv(must)f FC(b)q(e)i(used)f(for)f(depth)332 707 y(v)m(alues\),)i(but)f(will)i(normally)e(lead)h(to)f(unacceptable)i (distortion)e(e\013ects)g(if)g(used)h(for)332 764 y(texture)f(co)q (ordinates.)403 820 y(F)l(or)d(a)g(p)q(olygon)i(with)f(more)f(than)h (three)g(edges,)g(w)o(e)f(require)i(only)f(that)f(a)h(con)o(v)o(ex)332 877 y(com)o(bination)g(of)f(the)g(v)m(alues)i(of)d(the)i(datum)f(at)f (the)i(p)q(olygon's)f(v)o(ertices)h(can)f(b)q(e)h(used)332 933 y(to)g(obtain)h(the)g(v)m(alue)h(assigned)f(to)g(eac)o(h)f(fragmen) o(t)g(pro)q(duced)i(b)o(y)f(the)g(rasterization)332 990 y(algorithm.)20 b(That)15 b(is,)g(it)g(m)o(ust)g(b)q(e)h(the)f(case)g (that)g(at)f(ev)o(ery)h(fragmen)o(t)964 1117 y Fy(f)j FC(=)1071 1064 y Fu(n)1052 1077 y Fi(X)1054 1168 y Fu(i)p Fq(=1)1120 1117 y Fy(a)1144 1124 y Fu(i)1158 1117 y Fy(f)1180 1124 y Fu(i)332 1251 y FC(where)d Fy(n)g FC(is)g(the)g(n)o(um)o(b)q(er) h(of)e(v)o(ertices)h(in)h(the)f(p)q(olygon,)g Fy(f)1346 1258 y Fu(i)1375 1251 y FC(is)g(the)g(v)m(alue)h(of)e(the)h Fy(f)20 b FC(at)332 1307 y(v)o(ertex)c Fy(i)p FC(;)h(for)g(eac)o(h)g Fy(i)f FC(0)f FB(\024)h Fy(a)838 1314 y Fu(i)867 1307 y FB(\024)g FC(1)h(and)1048 1275 y Fi(P)1091 1288 y Fu(n)1091 1319 y(i)p Fq(=1)1158 1307 y Fy(a)1182 1314 y Fu(i)1212 1307 y FC(=)e(1.)25 b(The)17 b(v)m(alues)h(of)e(the)h Fy(a)1712 1314 y Fu(i)1743 1307 y FC(ma)o(y)332 1364 y(di\013er)f(from)e(fragmen)o(t)g(to)h(fragmen)o(t,)e(but)j(at)e(v)o (ertex)h Fy(i)p FC(,)f Fy(a)1353 1371 y Fu(j)1384 1364 y FC(=)f(0)p Fy(;)8 b(j)14 b FB(6)p FC(=)f Fy(i)i FC(and)g Fy(a)1700 1371 y Fu(i)1727 1364 y FC(=)e(1.)403 1420 y(One)20 b(algorithm)g(that)g(ac)o(hiev)o(es)g(the)g(required)h(b)q (eha)o(vior)g(is)f(to)g(triangulate)g(a)332 1477 y(p)q(olygon)15 b(\(without)f(adding)i(an)o(y)e(v)o(ertices\))h(and)f(then)h(treat)f (eac)o(h)h(triangle)g(individ-)332 1533 y(ually)j(as)f(already)g (discussed.)27 b(A)17 b(scan-line)i(rasterizer)e(that)f(linearly)j(in)o (terp)q(olates)332 1590 y(data)f(along)h(eac)o(h)g(edge)g(and)g(then)g (linearly)i(in)o(terp)q(olates)e(data)g(across)f(eac)o(h)h(hor-)332 1646 y(izon)o(tal)h(span)f(from)f(edge)h(to)f(edge)i(also)e (satis\014es)i(the)f(restrictions)g(\(in)g(this)h(case,)332 1702 y(the)14 b(n)o(umerator)f(and)g(denominator)h(of)f(equation)h(3.4) f(should)i(b)q(e)f(iterated)g(indep)q(en-)332 1759 y(den)o(tly)i(and)f (a)g(division)i(p)q(erformed)f(for)e(eac)o(h)i(fragmen)o(t\).)332 1880 y Fl(3.5.2)55 b(Stippling)332 1966 y FC(P)o(olygon)16 b(stippling)i(w)o(orks)e(m)o(uc)o(h)g(the)g(same)g(w)o(a)o(y)f(as)h (line)i(stippling,)g(masking)f(out)332 2022 y(certain)d(fragmen)o(ts)f (pro)q(duced)h(b)o(y)g(rasterization)g(so)f(that)g(they)g(are)h(not)f (sen)o(t)g(to)g(the)332 2079 y(next)20 b(stage)g(of)f(the)i(GL.)f(This) g(is)h(the)f(case)g(regardless)h(of)f(the)g(state)f(of)h(p)q(olygon)332 2135 y(an)o(tialiasing.)h(Stippling)d(is)d(con)o(trolled)h(with)446 2227 y Fw(void)29 b Fz(P)o(olygonStipple)p FC(\()j Fw(ubyte)14 b Fv(*p)n(attern)i FC(\))e Fw(;)332 2319 y Fv(p)n(attern)22 b FC(is)h(a)e(p)q(oin)o(ter)i(to)e(memory)h(in)o(to)g(whic)o(h)g(a)g (32)14 b FB(\002)h FC(32)22 b(pattern)f(is)i(pac)o(k)o(ed.)332 2375 y(The)e(pattern)g(is)g(unpac)o(k)o(ed)g(from)f(memory)h(according) g(to)f(the)h(pro)q(cedure)h(giv)o(en)332 2432 y(in)c(section)g(3.6.3)e (for)g Fz(Dra)o(wPixels)p FC(;)h(it)h(is)g(as)f(if)g(the)h Fv(height)f FC(and)h Fv(width)g FC(passed)f(to)332 2488 y(that)d(command)h(w)o(ere)f(b)q(oth)h(equal)g(to)f(32,)g(the)h Fv(typ)n(e)g FC(w)o(ere)f Fr(BITMAP)p FC(,)f(and)i(the)g Fv(format)p eop %%Page: 69 78 69 77 bop 120 137 a Fx(3.5.)34 b(POL)l(YGONS)1089 b FC(69)120 286 y(w)o(ere)13 b Fr(COLOR)p 336 286 14 2 v 14 w(INDEX)p FC(.)f(The)g(unpac)o(k)o(ed)i(v)m(alues)f(\(b)q(efore)g(an)o(y)f(con)o (v)o(ersion)h(or)f(arithmetic)120 343 y(w)o(ould)17 b(ha)o(v)o(e)f(b)q (een)i(p)q(erformed\))e(are)g(bit)o(wise)h(ANDed)g(with)g(1)f(to)g (obtain)g(a)g(stipple)120 399 y(pattern)f(of)g(zeros)g(and)g(ones.)191 456 y(If)j Fy(x)265 463 y Fu(w)311 456 y FC(and)g Fy(y)424 463 y Fu(w)471 456 y FC(are)f(the)h(windo)o(w)g(co)q(ordinates)h(of)e (a)h(rasterized)g(p)q(olygon)g(frag-)120 513 y(men)o(t,)e(then)g(that)g (fragmen)o(t)f(is)h(sen)o(t)g(to)f(the)i(next)f(stage)f(of)h(the)g(GL)g (if)g(and)h(only)f(if)120 569 y(the)g(bit)f(of)g(the)g(pattern)g(\()p Fy(x)605 576 y Fu(w)646 569 y FC(mo)q(d)d(32)p Fy(;)c(y)834 576 y Fu(w)874 569 y FC(mo)q(d)13 b(32\))h(is)i(1.)191 627 y(P)o(olygon)f(stippling)j(ma)o(y)c(b)q(e)j(enabled)g(or)e (disabled)i(with)f Fz(Enable)h FC(or)e Fz(Disable)120 683 y FC(using)20 b(the)g(constan)o(t)e Fr(POLYGON)p 670 683 V 14 w(STIPPLE)p FC(.)f(When)j(disabled,)h(it)f(is)g(as)e(if)i (the)f(stipple)120 739 y(pattern)c(w)o(ere)g(all)h(ones.)120 865 y Fl(3.5.3)56 b(An)n(tialiasing)120 952 y FC(P)o(olygon)14 b(an)o(tialiasing)g(rasterizes)g(a)f(p)q(olygon)h(b)o(y)f(pro)q(ducing) i(a)e(fragmen)o(t)g(wherev)o(er)120 1009 y(the)20 b(in)o(terior)g(of)f (the)h(p)q(olygon)g(in)o(tersects)g(that)f(fragmen)o(t's)f(square.)33 b(A)20 b(co)o(v)o(erage)120 1065 y(v)m(alue)12 b(is)f(computed)f(at)g (eac)o(h)g(suc)o(h)h(fragmen)o(t,)f(and)g(this)h(v)m(alue)h(is)e(sa)o (v)o(ed)g(to)g(b)q(e)h(applied)120 1122 y(as)j(describ)q(ed)i(in)f (section)g(3.10.)j(An)d(asso)q(ciated)f(datum)g(is)h(assigned)g(to)e(a) h(fragmen)o(t)120 1178 y(b)o(y)k(in)o(tegrating)f(the)h(datum's)f(v)m (alue)i(o)o(v)o(er)e(the)g(region)h(of)f(the)h(in)o(tersection)g(of)g (the)120 1235 y(fragmen)o(t)j(square)h(with)g(the)g(p)q(olygon's)h(in)o (terior)f(and)g(dividing)i(this)f(in)o(tegrated)120 1291 y(v)m(alue)c(b)o(y)e(the)g(area)g(of)g(the)g(in)o(tersection.)27 b(F)l(or)17 b(a)g(fragmen)o(t)f(square)h(lying)i(en)o(tirely)120 1348 y(within)g(the)e(p)q(olygon,)g(the)g(v)m(alue)i(of)d(a)h(datum)g (at)f(the)h(fragmen)o(t's)f(cen)o(ter)h(ma)o(y)f(b)q(e)120 1404 y(used)g(instead)g(of)f(in)o(tegrating)g(the)g(v)m(alue)i(across)d (the)h(fragmen)o(t.)191 1461 y(P)o(olygon)d(stippling)i(op)q(erates)d (in)i(the)f(same)g(w)o(a)o(y)f(whether)h(p)q(olygon)h(an)o(tialiasing) 120 1518 y(is)j(enabled)g(or)e(not.)19 b(The)c(p)q(olygon)g(p)q(oin)o (t)g(sampling)h(rule)f(de\014ned)h(in)g(section)f(3.5.1,)120 1574 y(ho)o(w)o(ev)o(er,)f(is)i(not)f(enforced)h(for)e(an)o(tialiased)i (p)q(olygons.)120 1700 y Fl(3.5.4)56 b(Options)18 b(Con)n(trolling)g(P) n(olygon)h(Rasterization)120 1787 y FC(The)d(in)o(terpretation)f(of)g (p)q(olygons)h(for)e(rasterization)h(is)h(con)o(trolled)g(using)234 1883 y Fw(void)30 b Fz(P)o(olygonMo)q(de)p FC(\()g Fw(enum)14 b Fv(fac)n(e)p Fw(,)h(enum)g Fv(mo)n(de)g FC(\))g Fw(;)120 1980 y Fv(fac)n(e)g FC(is)g(one)g(of)g Fr(FRONT)p FC(,)f Fr(BACK)p FC(,)f(or)i Fr(FRONT)p 812 1980 V 14 w(AND)p 892 1980 V 15 w(BACK)p FC(,)f(indicating)j(that)d(the)h(rasterizing)120 2037 y(metho)q(d)i(describ)q(ed)h(b)o(y)e Fv(mo)n(de)h FC(replaces)g(the)f(rasterizing)h(metho)q(d)f(for)g(fron)o(t)f(facing) 120 2093 y(p)q(olygons,)23 b(bac)o(k)e(facing)h(p)q(olygons,)g(or)f(b)q (oth)g(fron)o(t)g(and)g(bac)o(k)g(facing)h(p)q(olygons,)120 2149 y(resp)q(ectiv)o(ely)l(.)36 b Fv(mo)n(de)20 b FC(is)g(one)g(of)f (the)h(sym)o(b)q(olic)h(constan)o(ts)e Fr(POINT)p FC(,)f Fr(LINE)p FC(,)h(or)g Fr(FILL)p FC(.)120 2206 y(Calling)g Fz(P)o(olygonMo)q(de)f FC(with)g Fr(POINT)e FC(causes)i(certain)g(v)o (ertices)g(of)f(a)g(p)q(olygon)h(to)120 2262 y(b)q(e)h(treated,)e(for)g (rasterization)h(purp)q(oses,)g(just)g(as)f(if)h(they)g(w)o(ere)f (enclosed)j(within)120 2319 y(a)15 b Fz(Begin)p FC(\()p Fr(POINT)p FC(\))g(and)g Fz(End)h FC(pair.)21 b(The)15 b(v)o(ertices)h(selected)g(for)f(this)h(treatmen)o(t)e(are)120 2375 y(those)i(that)f(ha)o(v)o(e)g(b)q(een)i(tagged)e(as)g(ha)o(ving)h (a)f(p)q(olygon)h(b)q(oundary)h(edge)f(b)q(eginning)120 2432 y(on)f(them)g(\(see)h(section)f(2.6.2\).)j Fr(LINE)c FC(causes)i(edges)f(that)f(are)h(tagged)g(as)f(b)q(oundary)120 2488 y(to)j(b)q(e)i(rasterized)f(as)f(line)i(segmen)o(ts.)27 b(\(The)17 b(line)j(stipple)f(coun)o(ter)e(is)h(reset)g(at)f(the)p eop %%Page: 70 79 70 78 bop 332 137 a FC(70)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y FC(b)q(eginning)16 b(of)e(the)g(\014rst)f (rasterized)i(edge)f(of)f(the)h(p)q(olygon,)h(but)f(not)f(for)h (subsequen)o(t)332 343 y(edges.\))21 b Fr(FILL)15 b FC(is)h(the)f (default)h(mo)q(de)g(of)f(p)q(olygon)h(rasterization,)g(corresp)q (onding)g(to)332 399 y(the)j(description)i(in)f(sections)g(3.5.1,)e (3.5.2,)g(and)h(3.5.3.)31 b(Note)18 b(that)h(these)g(mo)q(des)332 456 y(a\013ect)i(only)h(the)f(\014nal)i(rasterization)e(of)g(p)q (olygons:)33 b(in)22 b(particular,)h(a)e(p)q(olygon's)332 512 y(v)o(ertices)16 b(are)g(lit,)h(and)f(the)g(p)q(olygon)g(is)h (clipp)q(ed)h(and)e(p)q(ossibly)i(culled)g(b)q(efore)e(these)332 569 y(mo)q(des)f(are)g(applied.)403 627 y(P)o(olygon)j(an)o(tialiasing) i(applies)g(only)f(to)f(the)g Fr(FILL)g FC(state)g(of)g Fz(P)o(olygonMo)q(de)p FC(.)332 683 y(F)l(or)h Fr(POINT)g FC(or)h Fr(LINE)p FC(,)e(p)q(oin)o(t)j(an)o(tialiasing)g(or)e(line)j (segmen)o(t)e(an)o(tialiasing,)h(resp)q(ec-)332 740 y(tiv)o(ely)l(,)16 b(apply)l(.)332 871 y Fl(3.5.5)55 b(Depth)19 b(O\013set)332 960 y FC(The)12 b(depth)g(v)m(alues)g(of)f(all)h(fragmen)o(ts)f (generated)g(b)o(y)g(the)h(rasterization)f(of)g(a)g(p)q(olygon)332 1016 y(ma)o(y)20 b(b)q(e)h(o\013set)f(b)o(y)g(a)g(single)i(v)m(alue)g (that)d(is)i(computed)g(for)f(that)g(p)q(olygon.)36 b(The)332 1073 y(function)16 b(that)f(determines)h(this)f(v)m(alue)i(is)f(sp)q (eci\014ed)h(b)o(y)e(calling)446 1173 y Fw(void)29 b Fz(P)o(olygonO\013set)p FC(\()h Fw(float)14 b Fv(factor)p Fw(,)i(float)e Fv(units)h FC(\))g Fw(;)332 1274 y Fv(factor)i FC(scales)g(the)f(maxim)o(um)g(depth)h(slop)q(e)g(of)f(the)g(p)q (olygon,)h(and)f Fv(units)g FC(scales)h(an)332 1330 y(implemen)o (tation)g(dep)q(enden)o(t)g(constan)o(t)e(that)g(relates)h(to)f(the)h (usable)g(resolution)h(of)332 1387 y(the)f(depth)g(bu\013er.)21 b(The)16 b(resulting)g(v)m(alues)h(are)e(summed)h(to)f(pro)q(duce)h (the)g(p)q(olygon)332 1443 y(o\013set)e(v)m(alue.)21 b(Both)15 b Fv(factor)h FC(and)g Fv(units)e FC(ma)o(y)h(b)q(e)h(either) g(p)q(ositiv)o(e)g(or)e(negativ)o(e.)403 1501 y(The)h(maxim)o(um)g (depth)h(slop)q(e)g Fy(m)f FC(of)g(a)g(triangle)h(is)811 1648 y Fy(m)c FC(=)911 1568 y Fi(s)p 953 1568 396 2 v 21 x(\022)991 1617 y Fy(@)s(z)1039 1624 y Fu(w)p 988 1638 81 2 v 988 1679 a Fy(@)s(x)1041 1686 y Fu(w)1074 1589 y Fi(\023)1105 1599 y Fq(2)1134 1648 y FC(+)1180 1589 y Fi(\022)1216 1617 y Fy(@)s(z)1264 1624 y Fu(w)p 1215 1638 78 2 v 1215 1679 a Fy(@)s(y)1264 1686 y Fu(w)1298 1589 y Fi(\023)1328 1599 y Fq(2)1733 1648 y FC(\(3.5\))332 1780 y(where)k(\()p Fy(x)508 1787 y Fu(w)535 1780 y Fy(;)8 b(y)578 1787 y Fu(w)606 1780 y Fy(;)g(z)648 1787 y Fu(w)676 1780 y FC(\))15 b(is)g(a)g(p)q(oin)o(t)h(on)f(the)g(triangle.)21 b Fy(m)15 b FC(ma)o(y)f(b)q(e)i(appro)o(ximated)f(as)811 1908 y Fy(m)e FC(=)g(max)1004 1849 y Fi(\032)1035 1847 y(\014)1035 1872 y(\014)1035 1897 y(\014)1035 1922 y(\014)1056 1878 y Fy(@)s(z)1104 1885 y Fu(w)p 1054 1898 81 2 v 1054 1940 a Fy(@)s(x)1107 1947 y Fu(w)1140 1847 y Fi(\014)1140 1872 y(\014)1140 1897 y(\014)1140 1922 y(\014)1161 1908 y Fy(;)1182 1847 y Fi(\014)1181 1872 y(\014)1181 1897 y(\014)1181 1922 y(\014)1201 1878 y Fy(@)s(z)1249 1885 y Fu(w)p 1200 1898 78 2 v 1200 1940 a Fy(@)s(y)1249 1947 y Fu(w)1282 1847 y Fi(\014)1282 1872 y(\014)1282 1897 y(\014)1282 1922 y(\014)1296 1849 y(\033)1335 1908 y Fy(:)385 b FC(\(3.6\))332 2035 y(If)13 b(the)g(p)q(olygon)g(has)g(more) f(than)h(three)g(v)o(ertices,)g(one)g(or)f(more)h(v)m(alues)h(of)e Fy(m)h FC(ma)o(y)f(b)q(e)332 2091 y(used)h(during)h(rasterization.)19 b(Eac)o(h)12 b(ma)o(y)g(tak)o(e)g(an)o(y)h(v)m(alue)h(in)f(the)g(range) f([)p Fy(min)p FC(,)p Fy(max)p FC(],)332 2148 y(where)h Fy(min)f FC(and)g Fy(max)g FC(are)g(the)g(smallest)h(and)f(largest)g(v) m(alues)i(obtained)f(b)o(y)f(ev)m(aluat-)332 2204 y(ing)i(Equation)f (3.5)f(or)g(Equation)h(3.6)f(for)h(the)g(triangles)g(formed)g(b)o(y)g (all)h(three-v)o(ertex)332 2261 y(com)o(binations.)403 2319 y(The)i(minim)o(um)h(resolv)m(able)h(di\013erence)f Fy(r)g FC(is)f(an)g(implemen)o(tation)i(constan)o(t.)j(It)332 2375 y(is)c(the)g(smallest)g(di\013erence)g(in)h(windo)o(w)e(co)q (ordinate)h Fy(z)i FC(v)m(alues)e(that)f(is)h(guaran)o(teed)332 2432 y(to)12 b(remain)h(distinct)h(throughout)e(p)q(olygon)h (rasterization)g(and)f(in)i(the)f(depth)g(bu\013er.)332 2488 y(All)18 b(pairs)g(of)e(fragmen)o(ts)g(generated)h(b)o(y)g(the)g (rasterization)g(of)f(t)o(w)o(o)g(p)q(olygons)h(with)p eop %%Page: 71 80 71 79 bop 120 137 a Fx(3.6.)34 b(PIXEL)16 b(RECT)l(ANGLES)873 b FC(71)120 286 y(otherwise)14 b(iden)o(tical)h(v)o(ertices,)f(but)g Fy(z)781 293 y Fu(w)823 286 y FC(v)m(alues)g(that)f(di\013er)h(b)o(y)f Fy(r)q FC(,)g(will)i(ha)o(v)o(e)f(distinct)120 343 y(depth)i(v)m (alues.)191 400 y(The)f(o\013set)g(v)m(alue)h Fy(o)f FC(for)g(a)g(p)q(olygon)g(is)600 505 y Fy(o)d FC(=)h Fy(m)d FB(\003)g Fy(f)5 b(actor)11 b FC(+)g Fy(r)f FB(\003)g Fy(units)q(:)385 b FC(\(3.7\))120 610 y Fy(m)12 b FC(is)h(computed)g (as)e(describ)q(ed)j(ab)q(o)o(v)o(e,)e(as)g(a)g(function)h(of)f(depth)h (v)m(alues)g(in)g(the)f(range)120 666 y([0,1],)h(and)j Fy(o)f FC(is)h(applied)h(to)d(depth)i(v)m(alues)h(in)f(the)f(same)g (range.)191 723 y(Bo)q(olean)25 b(state)f(v)m(alues)i Fr(POLYGON)p 798 723 14 2 v 15 w(OFFSET)p 945 723 V 14 w(POINT)p FC(,)d Fr(POLYGON)p 1259 723 V 15 w(OFFSET)p 1406 723 V 14 w(LINE)p FC(,)h(and)120 780 y Fr(POLYGON)p 277 780 V 15 w(OFFSET)p 424 780 V 14 w(FILL)c FC(determine)h(whether)g Fy(o)f FC(is)h(applied)h(during)f(the)g(rasteriza-)120 836 y(tion)c(of)g(p)q(olygons)g(in)h Fr(POINT)p FC(,)d Fr(LINE)p FC(,)g(and)i Fr(FILL)f FC(mo)q(des.)25 b(These)17 b(b)q(o)q(olean)h(state)e(v)m(al-)120 893 y(ues)g(are)e(enabled)j(and)e (disabled)i(as)e(argumen)o(t)f(v)m(alues)i(to)f(the)g(commands)f Fz(Enable)120 949 y FC(and)k Fz(Disable)p FC(.)28 b(If)18 b Fr(POLYGON)p 624 949 V 14 w(OFFSET)p 770 949 V 15 w(POINT)e FC(is)i(enabled,)i Fy(o)d FC(is)h(added)h(to)d(the)i(depth)120 1006 y(v)m(alue)f(of)e(eac)o(h)h(fragmen)o(t)e(pro)q(duced)j(b)o(y)f (the)f(rasterization)h(of)f(a)g(p)q(olygon)h(in)h Fr(POINT)120 1062 y FC(mo)q(de.)j(Lik)o(ewise,)14 b(if)f Fr(POLYGON)p 649 1062 V 14 w(OFFSET)p 795 1062 V 14 w(LINE)f FC(or)g Fr(POLYGON)p 1116 1062 V 14 w(OFFSET)p 1262 1062 V 14 w(FILL)g FC(is)h(enabled,)h Fy(o)120 1119 y FC(is)i(added)g(to)f(the)g (depth)h(v)m(alue)g(of)f(eac)o(h)h(fragmen)o(t)e(pro)q(duced)i(b)o(y)f (the)h(rasterization)120 1175 y(of)f(a)g(p)q(olygon)h(in)g Fr(LINE)e FC(or)h Fr(FILL)f FC(mo)q(des,)h(resp)q(ectiv)o(ely)l(.)191 1232 y(F)l(ragmen)o(t)i(depth)i(v)m(alues)g(are)f(alw)o(a)o(ys)g (limited)i(to)e(the)g(range)g([0,1],)f(either)i(b)o(y)120 1289 y(clamping)f(after)e(o\013set)f(addition)i(is)g(p)q(erformed)g (\(preferred\),)f(or)g(b)o(y)g(clamping)i(the)120 1345 y(v)o(ertex)d(v)m(alues)h(used)g(in)g(the)g(rasterization)f(of)f(the)i (p)q(olygon.)120 1472 y Fl(3.5.6)56 b(P)n(olygon)18 b(Rasterization)g (State)120 1559 y FC(The)11 b(state)f(required)i(for)e(p)q(olygon)h (rasterization)g(consists)g(of)f(a)h(p)q(olygon)g(stipple)h(pat-)120 1616 y(tern,)k(whether)h(stippling)h(is)e(enabled)i(or)d(disabled,)j (the)e(curren)o(t)g(state)g(of)f(p)q(olygon)120 1672 y(an)o(tialiasing)h(\(enabled)f(or)e(disabled\),)j(the)e(curren)o(t)g (v)m(alues)h(of)f(the)g Fz(P)o(olygonMo)q(de)120 1729 y FC(setting)i(for)f(eac)o(h)g(of)g(fron)o(t)g(and)h(bac)o(k)f(facing)h (p)q(olygons,)f(whether)h(p)q(oin)o(t,)g(line,)h(and)120 1785 y(\014ll)k(mo)q(de)e(p)q(olygon)g(o\013sets)f(are)h(enabled)h(or)e (disabled,)j(and)e(the)g(factor)f(and)h(bias)120 1842 y(v)m(alues)d(of)e(the)h(p)q(olygon)g(o\013set)f(equation.)20 b(The)15 b(initial)h(stipple)g(pattern)e(is)i(all)f(ones;)120 1898 y(initially)21 b(stippling)e(is)g(disabled.)29 b(The)17 b(initial)j(setting)e(of)f(p)q(olygon)h(an)o(tialiasing)h(is)120 1955 y(disabled.)35 b(The)20 b(initial)h(state)e(for)g Fz(P)o(olygonMo)q(de)g FC(is)h Fr(FILL)f FC(for)f(b)q(oth)i(fron)o(t)f (and)120 2011 y(bac)o(k)e(facing)h(p)q(olygons.)25 b(The)18 b(initial)h(p)q(olygon)e(o\013set)f(factor)g(and)h(bias)h(v)m(alues)g (are)120 2068 y(b)q(oth)e(0;)e(initially)k(p)q(olygon)e(o\013set)e(is)i (disabled)h(for)d(all)i(mo)q(des.)120 2216 y Fs(3.6)67 b(Pixel)23 b(Rectangles)120 2319 y FC(Rectangles)e(of)e(color,)h (depth,)g(and)g(certain)g(other)f(v)m(alues)h(ma)o(y)f(b)q(e)h(con)o(v) o(erted)f(to)120 2375 y(fragmen)o(ts)e(using)h(the)g Fz(Dra)o(wPixels)f FC(command.)27 b(Some)18 b(of)f(the)h(parameters)f (and)120 2432 y(op)q(erations)j(go)o(v)o(erning)g(the)f(op)q(eration)h (of)f Fz(Dra)o(wPixels)g FC(are)g(shared)h(b)o(y)g Fz(Read-)120 2488 y(Pixels)14 b FC(\(used)h(to)e(obtain)h(pixel)i(v)m(alues)f(from)e (the)h(framebu\013er\))g(and)g Fz(Cop)o(yPixels)p eop %%Page: 72 81 72 80 bop 332 137 a FC(72)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 468 242 1223 2 v 467 299 2 57 v 515 282 a FC(P)o(arameter)13 b(Name)p 897 299 V 98 w(T)o(yp)q(e)p 1101 299 V 76 w(Initial)k(V)l(alue)p 1397 299 V 51 w(V)l(alid)f(Range)p 1690 299 V 468 301 1223 2 v 468 309 V 467 365 2 57 v 504 348 a Fr(UNPACK)p 639 348 14 2 v 14 w(SWAP)p 741 348 V 15 w(BYTES)p 897 365 2 57 v 60 w FC(b)q(o)q(olean)p 1101 365 V 119 w Fr(FALSE)p 1397 365 V 130 w(TRUE)p FC(/)p Fr(FALSE)p 1690 365 V 468 367 1223 2 v 467 423 2 57 v 515 406 a(UNPACK)p 650 406 14 2 v 14 w(LSB)p 730 406 V 15 w(FIRST)p 897 423 2 57 v 71 w FC(b)q(o)q(olean)p 1101 423 V 119 w Fr(FALSE)p 1397 423 V 130 w(TRUE)p FC(/)p Fr(FALSE)p 1690 423 V 468 425 1223 2 v 467 482 2 57 v 504 465 a(UNPACK)p 639 465 14 2 v 14 w(ROW)p 719 465 V 15 w(LENGTH)p 897 482 2 57 v 69 w FC(in)o(teger)p 1101 482 V 171 w(0)p 1397 482 V 224 w([0)p Fy(;)8 b FB(1)p FC(\))p 1690 482 V 468 483 1223 2 v 467 540 2 57 v 515 523 a Fr(UNPACK)p 650 523 14 2 v 14 w(SKIP)p 752 523 V 15 w(ROWS)p 897 540 2 57 v 80 w FC(in)o(teger)p 1101 540 V 171 w(0)p 1397 540 V 224 w([0)p Fy(;)g FB(1)p FC(\))p 1690 540 V 468 541 1223 2 v 467 598 2 57 v 493 581 a Fr(UNPACK)p 628 581 14 2 v 14 w(SKIP)p 730 581 V 15 w(PIXELS)p 897 598 2 57 v 58 w FC(in)o(teger)p 1101 598 V 171 w(0)p 1397 598 V 224 w([0)p Fy(;)g FB(1)p FC(\))p 1690 598 V 468 599 1223 2 v 467 656 2 57 v 512 639 a Fr(UNPACK)p 647 639 14 2 v 14 w(ALIGNMENT)p 897 656 2 57 v 76 w FC(in)o(teger)p 1101 656 V 171 w(4)p 1397 656 V 219 w(1,2,4,8)p 1690 656 V 468 658 1223 2 v 454 735 a(T)l(able)16 b(3.1:)j Fz(PixelStore)c FC(parameters)g(p)q(ertaining)h(to)f Fz(Dra)o(wPixels)p FC(.)332 918 y(\(used)i(to)e(cop)o(y)h(pixels)i (from)e(one)g(framebu\013er)g(lo)q(cation)h(to)e(another\);)h(the)g (discus-)332 975 y(sion)f(of)f Fz(ReadPixels)h FC(and)f Fz(Cop)o(yPixels)p FC(,)f(ho)o(w)o(ev)o(er,)h(is)g(deferred)h(un)o(til) h(Chapter)e(4)332 1031 y(after)19 b(the)h(framebu\013er)f(has)h(b)q (een)h(discussed)g(in)f(detail.)35 b(Nev)o(ertheless,)21 b(w)o(e)f(note)332 1088 y(in)e(this)g(section)g(when)g(parameters)e (and)i(state)e(p)q(ertaining)j(to)e Fz(Dra)o(wPixels)f FC(also)332 1144 y(p)q(ertain)g(to)f Fz(ReadPixels)g FC(or)g Fz(Cop)o(yPixels)p FC(.)403 1200 y(A)j(n)o(um)o(b)q(er)h(of)e (parameters)h(con)o(trol)g(the)g(enco)q(ding)i(of)e(pixels)i(in)f (clien)o(t)g(mem-)332 1257 y(ory)i(\(for)f(reading)i(and)g(writing\))g (and)f(ho)o(w)g(pixels)i(are)e(pro)q(cessed)h(b)q(efore)g(b)q(eing)332 1313 y(placed)15 b(in)f(or)f(after)g(b)q(eing)i(read)e(from)g(the)h (framebu\013er)f(\(for)f(reading,)i(writing,)g(and)332 1370 y(cop)o(ying\).)38 b(These)22 b(parameters)e(are)h(set)g(with)h (three)f(commands:)32 b Fz(PixelStore)p FC(,)332 1426 y Fz(PixelT)l(ransfer)p FC(,)14 b(and)i Fz(PixelMap)p FC(.)332 1547 y Fl(3.6.1)55 b(Pixel)18 b(Storage)g(Mo)r(des)332 1633 y FC(Pixel)f(storage)e(mo)q(des)h(a\013ect)g(the)g(op)q(eration)g (of)g Fz(Dra)o(wPixels)f FC(and)h Fz(ReadPixels)332 1689 y FC(\(as)i(w)o(ell)i(as)e(other)g(commands;)i(see)f(sections)g(3.5.2,) f(3.7,)g(and)h(3.8\))e(when)i(one)g(of)332 1746 y(these)14 b(commands)f(is)g(issued.)21 b(This)13 b(ma)o(y)g(di\013er)g(from)g (the)g(time)h(that)e(the)i(command)332 1802 y(is)g(executed)g(if)g(the) f(command)g(is)h(placed)g(in)g(a)f(displa)o(y)h(list)g(\(see)f(section) h(5.4\).)k(Pixel)332 1859 y(storage)c(mo)q(des)h(are)g(set)g(with)446 1948 y Fw(void)29 b Fz(PixelStore)p FB(f)p Fz(if)p FB(g)p FC(\()i Fw(enum)14 b Fv(pname)p Fw(,)h(T)g Fv(p)n(ar)n(am)h FC(\))f Fw(;)332 2037 y Fv(pname)i FC(is)g(a)f(sym)o(b)q(olic)h (constan)o(t)f(indicating)i(a)f(parameter)e(to)h(b)q(e)h(set,)f(and)h Fv(p)n(ar)n(am)332 2093 y FC(is)e(the)f(v)m(alue)h(to)f(set)f(it)i(to.) k(T)l(able)14 b(3.1)g(summarizes)g(the)g(pixel)i(storage)d(parameters,) 332 2149 y(their)g(t)o(yp)q(es,)g(their)g(initial)i(v)m(alues,)f(and)f (their)g(allo)o(w)o(able)h(ranges.)k(Setting)c(a)e(param-)332 2206 y(eter)18 b(to)g(a)g(v)m(alue)i(outside)e(the)h(giv)o(en)g(range)f (results)g(in)i(the)e(error)g Fr(INVALID)p 1694 2206 14 2 v 14 w(VALUE)p FC(.)403 2319 y(The)k(v)o(ersion)h(of)f Fz(PixelStore)h FC(that)f(tak)o(es)g(a)g(\015oating-p)q(oin)o(t)h(v)m (alue)h(ma)o(y)e(b)q(e)332 2375 y(used)h(to)e(set)h(an)o(y)g(t)o(yp)q (e)g(of)g(parameter;)i(if)f(the)f(parameter)g(is)g(b)q(o)q(olean,)j (then)d(it)332 2432 y(is)e(set)g(to)f Fr(FALSE)f FC(if)i(the)g(passed)g (v)m(alue)h(is)f(0)p Fy(:)p FC(0)f(and)h Fr(TRUE)e FC(otherwise,)j (while)g(if)f(the)332 2488 y(parameter)g(is)h(an)f(in)o(teger,)h(then)g (the)f(passed)h(v)m(alue)h(is)e(rounded)i(to)d(the)i(nearest)p eop %%Page: 73 82 73 81 bop 120 137 a Fx(3.6.)34 b(PIXEL)16 b(RECT)l(ANGLES)873 b FC(73)p 278 242 1180 2 v 277 299 2 57 v 303 282 a(P)o(arameter)14 b(Name)p 664 299 V 75 w(T)o(yp)q(e)p 868 299 V 76 w(Initial)j(V)l(alue) p 1164 299 V 51 w(V)l(alid)g(Range)p 1456 299 V 278 301 1180 2 v 278 309 V 277 365 2 57 v 376 348 a Fr(MAP)p 445 348 14 2 v 15 w(COLOR)p 664 365 2 57 v 122 w FC(b)q(o)q(olean)p 868 365 V 120 w Fr(FALSE)p 1164 365 V 129 w(TRUE)p FC(/)p Fr(FALSE)p 1456 365 V 278 367 1180 2 v 277 423 2 57 v 354 406 a(MAP)p 423 406 14 2 v 15 w(STENCIL)p 664 423 2 57 v 100 w FC(b)q(o)q(olean)p 868 423 V 120 w Fr(FALSE)p 1164 423 V 129 w(TRUE)p FC(/)p Fr(FALSE)p 1456 423 V 278 425 1180 2 v 277 482 2 57 v 354 465 a(INDEX)p 467 465 14 2 v 15 w(SHIFT)p 664 482 2 57 v 110 w FC(in)o(teger)p 868 482 V 171 w(0)p 1164 482 V 192 w(\()p FB(\0001)p Fy(;)8 b FB(1)p FC(\))p 1456 482 V 278 483 1180 2 v 277 540 2 57 v 343 523 a Fr(INDEX)p 456 523 14 2 v 15 w(OFFSET)p 664 540 2 57 v 99 w FC(in)o(teger)p 868 540 V 171 w(0)p 1164 540 V 192 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 540 V 278 541 1180 2 v 277 598 2 57 v 376 581 a Fr(RED)p 445 581 14 2 v 15 w(SCALE)p 664 598 2 57 v 155 w FC(\015oat)p 868 598 V 176 w(1.0)p 1164 598 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 598 V 278 599 1180 2 v 277 656 2 57 v 354 639 a Fr(GREEN)p 467 639 14 2 v 15 w(SCALE)p 664 656 2 57 v 133 w FC(\015oat)p 868 656 V 176 w(1.0)p 1164 656 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 656 V 278 658 1180 2 v 277 714 2 57 v 365 697 a Fr(BLUE)p 456 697 14 2 v 15 w(SCALE)p 664 714 2 57 v 144 w FC(\015oat)p 868 714 V 176 w(1.0)p 1164 714 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 714 V 278 716 1180 2 v 277 772 2 57 v 354 755 a Fr(ALPHA)p 467 755 14 2 v 15 w(SCALE)p 664 772 2 57 v 133 w FC(\015oat)p 868 772 V 176 w(1.0)p 1164 772 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 772 V 278 774 1180 2 v 277 830 2 57 v 354 813 a Fr(DEPTH)p 467 813 14 2 v 15 w(SCALE)p 664 830 2 57 v 133 w FC(\015oat)p 868 830 V 176 w(1.0)p 1164 830 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 830 V 278 832 1180 2 v 277 888 2 57 v 387 871 a Fr(RED)p 456 871 14 2 v 15 w(BIAS)p 664 888 2 57 v 166 w FC(\015oat)p 868 888 V 176 w(0.0)p 1164 888 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 888 V 278 890 1180 2 v 277 946 2 57 v 365 930 a Fr(GREEN)p 478 930 14 2 v 15 w(BIAS)p 664 946 2 57 v 144 w FC(\015oat)p 868 946 V 176 w(0.0)p 1164 946 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 946 V 278 948 1180 2 v 277 1005 2 57 v 376 988 a Fr(BLUE)p 467 988 14 2 v 15 w(BIAS)p 664 1005 2 57 v 155 w FC(\015oat)p 868 1005 V 176 w(0.0)p 1164 1005 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 1005 V 278 1006 1180 2 v 277 1063 2 57 v 365 1046 a Fr(ALPHA)p 478 1046 14 2 v 15 w(BIAS)p 664 1063 2 57 v 144 w FC(\015oat)p 868 1063 V 176 w(0.0)p 1164 1063 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 1063 V 278 1064 1180 2 v 277 1121 2 57 v 365 1104 a Fr(DEPTH)p 478 1104 14 2 v 15 w(BIAS)p 664 1121 2 57 v 144 w FC(\015oat)p 868 1121 V 176 w(0.0)p 1164 1121 V 174 w(\()p FB(\0001)p Fy(;)g FB(1)p FC(\))p 1456 1121 V 278 1122 1180 2 v 482 1200 a(T)l(able)16 b(3.2:)j Fz(PixelT)l(ransfer)c FC(parameters.)120 1390 y(in)o(teger.)28 b(The)18 b(in)o(teger)g(v)o(ersion)g(of)f(the)h (command)g(ma)o(y)f(also)h(b)q(e)g(used)g(to)g(set)f(an)o(y)120 1447 y(t)o(yp)q(e)e(of)g(parameter;)f(if)h(the)g(parameter)f(is)h(b)q (o)q(olean,)h(then)f(it)g(is)h(set)e(to)h Fr(FALSE)e FC(if)j(the)120 1503 y(passed)j(v)m(alue)g(is)g(0)f(and)g Fr(TRUE)f FC(otherwise,)i(while)h(if)e(the)h(parameter)e(is)i(a)f (\015oating-)120 1560 y(p)q(oin)o(t)e(v)m(alue,)g(then)g(the)f(passed)g (v)m(alue)i(is)f(con)o(v)o(erted)e(to)h(\015oating-p)q(oin)o(t.)120 1691 y Fl(3.6.2)56 b(Pixel)17 b(T)-5 b(ransfer)19 b(Mo)r(des)120 1780 y FC(Pixel)13 b(transfer)e(mo)q(des)h(a\013ect)g(the)f(op)q (eration)h(of)g Fz(Dra)o(wPixels)p FC(,)f Fz(ReadPixels)p FC(,)i(and)120 1836 y Fz(Cop)o(yPixels)k FC(at)g(the)g(time)h(when)g (one)f(of)g(these)h(commands)f(is)h(executed)g(\(whic)o(h)120 1892 y(ma)o(y)12 b(di\013er)g(from)f(the)h(time)h(the)f(command)g(is)g (issued\).)20 b(Some)12 b(pixel)h(transfer)f(mo)q(des)120 1949 y(are)j(set)g(with)234 2049 y Fw(void)30 b Fz(PixelT)l(ransfer)p FB(f)p Fz(if)p FB(g)p FC(\()f Fw(enum)15 b Fv(p)n(ar)n(am)p Fw(,)g(T)g Fv(value)g FC(\))g Fw(;)120 2149 y Fv(p)n(ar)n(am)h FC(is)f(a)g(sym)o(b)q(olic)i(constan)o(t)d(indicating)j(a)e(parameter)f (to)g(b)q(e)i(set,)f(and)g Fv(value)g FC(is)120 2206 y(the)j(v)m(alue)h(to)e(set)g(it)h(to.)26 b(T)l(able)18 b(3.2)f(summarizes)h(the)g(pixel)h(transfer)e(parameters)120 2262 y(that)e(are)g(set)g(with)g Fz(PixelT)l(ransfer)p FC(,)f(their)i(t)o(yp)q(es,)f(their)h(initial)h(v)m(alues,)f(and)f (their)120 2319 y(allo)o(w)o(able)20 b(ranges.)32 b(Setting)20 b(a)f(parameter)f(to)h(a)g(v)m(alue)h(outside)g(the)f(giv)o(en)h(range) 120 2375 y(results)15 b(in)h(the)e(error)g Fr(INVALID)p 662 2375 14 2 v 14 w(VALUE)p FC(.)f(The)i(same)f(v)o(ersions)h(of)f (the)h(command)f(exist)120 2432 y(as)19 b(for)e Fz(PixelStore)p FC(,)j(and)e(the)h(same)f(rules)i(apply)f(to)f(accepting)h(and)g(con)o (v)o(erting)120 2488 y(passed)d(v)m(alues)g(to)f(set)g(parameters.)p eop %%Page: 74 83 74 82 bop 332 137 a FC(74)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 385 242 1388 2 v 384 299 2 57 v 463 282 a FC(Map)14 b(Name)p 759 299 V 768 299 V 133 w(Address)p 1020 299 V 119 w(V)l(alue)p 1274 299 V 97 w(Init.)21 b(Size)p 1507 299 V 51 w(Init.)g(V)l(alue)p 1772 299 V 385 301 1388 2 v 385 309 V 384 365 2 57 v 410 348 a Fr(PIXEL)p 523 348 14 2 v 15 w(MAP)p 604 348 V 15 w(I)p 641 348 V 16 w(TO)p 701 348 V 15 w(I)p 759 365 2 57 v 768 365 V 73 w FC(color)15 b(idx)p 1020 365 V 81 w(color)h(idx)p 1274 365 V 146 w(1)p 1507 365 V 226 w(0)p 1772 365 V 385 367 1388 2 v 384 423 2 57 v 410 406 a Fr(PIXEL)p 523 406 14 2 v 15 w(MAP)p 604 406 V 15 w(S)p 641 406 V 16 w(TO)p 701 406 V 15 w(S)p 759 423 2 57 v 768 423 V 58 w FC(stencil)g(idx)p 1020 423 V 51 w(stencil)h(idx)p 1274 423 V 131 w(1)p 1507 423 V 226 w(0)p 1772 423 V 385 425 1388 2 v 384 482 2 57 v 410 465 a Fr(PIXEL)p 523 465 14 2 v 15 w(MAP)p 604 465 V 15 w(I)p 641 465 V 16 w(TO)p 701 465 V 15 w(R)p 759 482 2 57 v 768 482 V 73 w FC(color)e(idx)p 1020 482 V 151 w(R)p 1274 482 V 216 w(1)p 1507 482 V 208 w(0.0)p 1772 482 V 385 483 1388 2 v 384 540 2 57 v 410 523 a Fr(PIXEL)p 523 523 14 2 v 15 w(MAP)p 604 523 V 15 w(I)p 641 523 V 16 w(TO)p 701 523 V 15 w(G)p 759 540 2 57 v 768 540 V 73 w FC(color)g(idx)p 1020 540 V 150 w(G)p 1274 540 V 214 w(1)p 1507 540 V 208 w(0.0)p 1772 540 V 385 541 1388 2 v 384 598 2 57 v 410 581 a Fr(PIXEL)p 523 581 14 2 v 15 w(MAP)p 604 581 V 15 w(I)p 641 581 V 16 w(TO)p 701 581 V 15 w(B)p 759 598 2 57 v 768 598 V 73 w FC(color)g(idx)p 1020 598 V 152 w(B)p 1274 598 V 216 w(1)p 1507 598 V 208 w(0.0)p 1772 598 V 385 599 1388 2 v 384 656 2 57 v 410 639 a Fr(PIXEL)p 523 639 14 2 v 15 w(MAP)p 604 639 V 15 w(I)p 641 639 V 16 w(TO)p 701 639 V 15 w(A)p 759 656 2 57 v 768 656 V 73 w FC(color)g(idx)p 1020 656 V 151 w(A)p 1274 656 V 215 w(1)p 1507 656 V 208 w(0.0)p 1772 656 V 385 658 1388 2 v 384 714 2 57 v 410 697 a Fr(PIXEL)p 523 697 14 2 v 15 w(MAP)p 604 697 V 15 w(R)p 641 697 V 16 w(TO)p 701 697 V 15 w(R)p 759 714 2 57 v 768 714 V 143 w FC(R)p 1020 714 V 220 w(R)p 1274 714 V 216 w(1)p 1507 714 V 208 w(0.0)p 1772 714 V 385 716 1388 2 v 384 772 2 57 v 410 755 a Fr(PIXEL)p 523 755 14 2 v 15 w(MAP)p 604 755 V 15 w(G)p 641 755 V 16 w(TO)p 701 755 V 15 w(G)p 759 772 2 57 v 768 772 V 142 w FC(G)p 1020 772 V 217 w(G)p 1274 772 V 214 w(1)p 1507 772 V 208 w(0.0)p 1772 772 V 385 774 1388 2 v 384 830 2 57 v 410 813 a Fr(PIXEL)p 523 813 14 2 v 15 w(MAP)p 604 813 V 15 w(B)p 641 813 V 16 w(TO)p 701 813 V 15 w(B)p 759 830 2 57 v 768 830 V 143 w FC(B)p 1020 830 V 222 w(B)p 1274 830 V 216 w(1)p 1507 830 V 208 w(0.0)p 1772 830 V 385 832 1388 2 v 384 888 2 57 v 410 871 a Fr(PIXEL)p 523 871 14 2 v 15 w(MAP)p 604 871 V 15 w(A)p 641 871 V 16 w(TO)p 701 871 V 15 w(A)p 759 888 2 57 v 768 888 V 142 w FC(A)p 1020 888 V 220 w(A)p 1274 888 V 215 w(1)p 1507 888 V 208 w(0.0)p 1772 888 V 385 890 1388 2 v 737 967 a(T)l(able)h(3.3:)j Fz(PixelMap)d FC(parameters.)403 1188 y(The)k(other)f(pixel)j(transfer)d(mo)q(des)h(are)f(the)h(v)m (arious)g(lo)q(okup)h(tables)f(used)h(b)o(y)332 1245 y Fz(Dra)o(wPixels)p FC(,)14 b Fz(ReadPixels)p FC(,)h(and)h Fz(Cop)o(yPixels)p FC(.)j(These)c(are)g(set)g(with)446 1406 y Fw(void)37 b Fz(PixelMap)p FB(f)p Fz(ui)22 b(us)f(f)p FB(g)p Fz(v)p FC(\()37 b Fw(enum)18 b Fv(map)p Fw(,)i(sizei)e Fv(size)p Fw(,)h(T)g Fv(*val-)514 1463 y(ues)c FC(\))g Fw(;)332 1624 y Fv(map)i FC(is)g(a)g(sym)o(b)q(olic)g(map)g(name,)f (indicating)j(the)d(map)h(to)f(set,)g Fv(size)f FC(indicates)j(the)332 1681 y(size)e(of)f(the)g(map,)g(and)g Fv(values)g FC(is)h(a)f(p)q(oin)o (ter)g(to)g(an)g(arra)o(y)f(of)h Fv(size)f FC(map)h(v)m(alues.)403 1754 y(The)g(en)o(tries)h(of)f(a)g(table)h(ma)o(y)f(b)q(e)h(sp)q (eci\014ed)h(using)g(one)e(of)g(three)h(t)o(yp)q(es:)k(single-)332 1811 y(precision)13 b(\015oating-p)q(oin)o(t,)g(unsigned)g(short)e(in)o (teger,)h(or)f(unsigned)i(in)o(teger,)g(dep)q(end-)332 1867 y(ing)k(on)f(whic)o(h)h(of)f(the)g(three)g(v)o(ersions)g(of)g Fz(PixelMap)g FC(is)h(called.)24 b(A)17 b(table)f(en)o(try)g(is)332 1924 y(con)o(v)o(erted)i(to)g(the)h(appropriate)f(t)o(yp)q(e)g(when)h (it)g(is)g(sp)q(eci\014ed.)32 b(An)18 b(en)o(try)g(giving)i(a)332 1980 y(color)15 b(comp)q(onen)o(t)f(v)m(alue)i(is)f(con)o(v)o(erted)f (according)h(to)f(T)l(able)h(2.6.)k(An)14 b(en)o(try)h(giving)332 2037 y(a)g(color)g(index)h(v)m(alue)g(is)f(con)o(v)o(erted)g(from)f(an) h(unsigned)h(short)f(in)o(teger)g(or)f(unsigned)332 2093 y(in)o(teger)j(to)e(\015oating-p)q(oin)o(t.)24 b(An)16 b(en)o(try)g(giving)h(a)f(stencil)i(index)f(is)g(con)o(v)o(erted)f (from)332 2149 y(single-precision)f(\015oating-p)q(oin)o(t)e(to)e(an)h (in)o(teger)g(b)o(y)g(rounding)h(to)f(nearest.)18 b(The)12 b(v)m(ar-)332 2206 y(ious)18 b(tables)g(and)f(their)h(initial)h(sizes)f (and)g(en)o(tries)g(are)f(summarized)h(in)g(T)l(able)g(3.3.)332 2262 y(A)d(table)h(that)e(tak)o(es)h(an)g(index)h(as)f(an)g(address)g (m)o(ust)f(ha)o(v)o(e)h Fy(siz)r(e)e FC(=)g(2)1558 2246 y Fu(n)1596 2262 y FC(or)i(the)g(error)332 2319 y Fr(INVALID)p 489 2319 14 2 v 14 w(VALUE)h FC(results.)23 b(The)17 b(maxim)o(um)f(allo)o(w)o(able)h Fv(size)e FC(of)h(eac)o(h)g(table)h (is)g(imple-)332 2375 y(men)o(tation)h(dep)q(enden)o(t,)i(but)f(m)o (ust)f(b)q(e)h(at)e(least)i(32)e(\(a)h(single)i(maxim)o(um)e(applies) 332 2432 y(to)c(all)i(tables\).)j(The)c(error)f Fr(INVALID)p 977 2432 V 15 w(VALUE)f FC(is)i(generated)g(if)g(a)g Fv(size)e FC(larger)i(than)f(the)332 2488 y(implemen)o(ted)j(maxim)o (um,)e(or)f(less)i(than)f(one,)g(is)h(giv)o(en)g(to)e Fz(PixelMap)p FC(.)p eop %%Page: 75 84 75 83 bop 120 137 a Fx(3.6.)34 b(PIXEL)16 b(RECT)l(ANGLES)873 b FC(75)120 286 y Fl(3.6.3)56 b(Rasterization)17 b(of)i(Pixel)e (Rectangles)120 375 y FC(The)j(pro)q(cess)f(of)g(dra)o(wing)g(pixels)i (enco)q(ded)f(in)g(host)f(memory)f(is)i(diagrammed)f(in)120 431 y(Figure)14 b(3.7.)k(W)l(e)13 b(describ)q(e)i(the)f(stages)e(of)h (this)h(pro)q(cess)f(in)h(the)f(order)g(in)i(whic)o(h)f(they)120 488 y(o)q(ccur.)191 546 y(Pixels)i(are)f(dra)o(wn)g(using)234 645 y Fw(void)29 b Fz(Dra)o(wPixels)p FC(\()g Fw(sizei)14 b Fv(width)p Fw(,)h(sizei)f Fv(height)p Fw(,)h(enum)f Fv(format)p Fw(,)302 702 y(enum)h Fv(typ)n(e)p Fw(,)g(void)f Fv(*data)j FC(\))d Fw(;)120 801 y Fv(format)j FC(is)f(a)g(sym)o(b)q (olic)h(constan)o(t)e(indicating)j(what)d(the)h(v)m(alues)h(in)g (memory)e(repre-)120 857 y(sen)o(t.)28 b Fv(width)18 b FC(and)g Fv(height)g FC(are)f(the)h(width)h(and)f(heigh)o(t,)g(resp)q (ectiv)o(ely)l(,)i(of)d(the)h(pixel)120 914 y(rectangle)h(to)f(b)q(e)h (dra)o(wn.)30 b Fv(data)19 b FC(is)g(a)f(p)q(oin)o(ter)h(to)f(the)h (data)f(to)g(b)q(e)h(dra)o(wn.)29 b(These)120 970 y(data)20 b(are)g(represen)o(ted)g(with)g(one)h(of)e(sev)o(en)i(GL)f(data)f(t)o (yp)q(es,)i(sp)q(eci\014ed)h(b)o(y)e Fv(typ)n(e)p FC(.)120 1027 y(The)f(corresp)q(ondence)g(b)q(et)o(w)o(een)f(the)g(eigh)o(t)g Fv(typ)n(e)g FC(tok)o(en)f(v)m(alues)i(and)f(the)g(GL)g(data)120 1083 y(t)o(yp)q(es)f(they)g(indicate)h(is)f(giv)o(en)g(in)h(T)l(able)f (3.4.)23 b(If)17 b(the)g(GL)f(is)h(in)h(color)f(index)g(mo)q(de)120 1140 y(and)j Fv(format)h FC(is)f(not)g(one)g(of)f Fr(COLOR)p 758 1140 14 2 v 15 w(INDEX)p FC(,)f Fr(STENCIL)p 1068 1140 V 15 w(INDEX)p FC(,)g(or)h Fr(DEPTH)p 1394 1140 V 15 w(COMPONENT)p FC(,)120 1196 y(then)c(the)f(error)f Fr(INVALID)p 567 1196 V 14 w(OPERATION)f FC(o)q(ccurs.)20 b(If)14 b Fv(typ)n(e)g FC(is)g Fr(BITMAP)f FC(and)h Fv(format)h FC(is)f(not)120 1253 y Fr(COLOR)p 233 1253 V 15 w(INDEX)g FC(or)h Fr(STENCIL)p 582 1253 V 14 w(INDEX)f FC(then)i(the)f(error)g Fr(INVALID)p 1168 1253 V 14 w(ENUM)f FC(o)q(ccurs.)120 1381 y Fz(Unpac)o(king)120 1469 y FC(Data)f(are)g(tak)o(en)g(from)g (host)g(memory)g(as)g(a)g(sequence)i(of)e(signed)h(or)f(unsigned)i(b)o (ytes)120 1526 y(\(GL)d(data)e(t)o(yp)q(es)i Fw(byte)f FC(and)g Fw(ubyte)p FC(\),)g(signed)h(or)f(unsigned)i(short)e(in)o (tegers)g(\(GL)g(data)120 1582 y(t)o(yp)q(es)17 b Fw(short)f FC(and)h Fw(ushort)p FC(\),)f(signed)h(or)g(unsigned)h(in)o(tegers)f (\(GL)f(data)g(t)o(yp)q(es)h Fw(int)120 1639 y FC(and)g Fw(uint)p FC(\),)e(or)h(\015oating)h(p)q(oin)o(t)g(v)m(alues)g(\(GL)f (data)g(t)o(yp)q(e)h Fw(float)p FC(\).)22 b(These)17 b(elemen)o(ts)120 1695 y(are)h(group)q(ed)h(in)o(to)f(sets)g(of)g(one,) h(t)o(w)o(o,)e(three,)i(or)f(four)g(v)m(alues,)i(dep)q(ending)g(on)f (the)120 1751 y Fv(format)p FC(,)13 b(to)f(form)f(groups.)18 b(T)l(able)13 b(3.5)e(summarizes)h(the)g(format)f(of)g(groups)h (obtained)120 1808 y(from)18 b(memory;)h(it)g(also)g(indicates)h(those) e(formats)f(that)h(yield)i(indices)g(and)f(those)120 1864 y(that)c(yield)i(comp)q(onen)o(ts.)191 1922 y(By)12 b(default)h(the)g(v)m(alues)g(of)f(eac)o(h)g(GL)g(data)g(t)o(yp)q(e)g (are)g(in)o(terpreted)h(as)f(they)g(w)o(ould)120 1979 y(b)q(e)i(sp)q(eci\014ed)i(in)e(the)f(language)h(of)f(the)g(clien)o (t's)h(GL)g(binding.)21 b(If)13 b Fr(UNPACK)p 1391 1979 V 15 w(SWAP)p 1494 1979 V 15 w(BYTES)120 2035 y FC(is)18 b(enabled,)g(ho)o(w)o(ev)o(er,)f(then)g(the)g(v)m(alues)h(are)f(in)o (terpreted)h(with)f(the)g(bit)g(orderings)120 2092 y(mo)q(di\014ed)e (as)d(p)q(er)i(T)l(able)g(3.6.)k(The)13 b(mo)q(di\014ed)i(bit)e (orderings)g(are)g(de\014ned)i(only)e(if)h(the)120 2148 y(GL)h(data)e(t)o(yp)q(e)i Fw(ubyte)f FC(has)g(eigh)o(t)g(bits,)h(and)f (then)h(for)f(eac)o(h)g(sp)q(eci\014c)j(GL)d(data)g(t)o(yp)q(e)120 2204 y(only)i(if)g(that)e(t)o(yp)q(e)i(is)f(represen)o(ted)h(with)f(8,) g(16,)f(or)h(32)f(bits.)191 2262 y(The)e(groups)g(in)g(memory)g(are)f (treated)h(as)f(b)q(eing)i(arranged)f(in)g(a)g(rectangle.)19 b(This)120 2319 y(rectangle)14 b(consists)f(of)g(a)g(series)g(of)g Fv(r)n(ows)p FC(,)g(with)h(the)f(\014rst)g(elemen)o(t)g(of)g(the)g (\014rst)g(group)120 2375 y(of)19 b(the)h(\014rst)f(ro)o(w)g(p)q(oin)o (ted)h(to)f(b)o(y)g(the)h(p)q(oin)o(ter)g(passed)f(to)g Fz(Dra)o(wPixels)p FC(.)32 b(If)20 b(the)120 2432 y(v)m(alue)i(of)e Fr(UNPACK)p 435 2432 V 15 w(ROW)p 516 2432 V 15 w(LENGTH)f FC(is)i(not)f(p)q(ositiv)o(e,)j(then)e(the)g(n)o(um)o(b)q(er)g(of)f (groups)g(in)120 2488 y(a)f(ro)o(w)f(is)h Fv(width)p FC(;)i(otherwise)e(the)g(n)o(um)o(b)q(er)g(of)f(groups)h(is)g Fr(UNPACK)p 1288 2488 V 15 w(ROW)p 1369 2488 V 15 w(LENGTH)p FC(.)e(If)i Fy(p)p eop %%Page: 76 85 76 84 bop 332 137 a FC(76)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 350 533 1459 2 v 350 2146 2 1614 v 404 607 a 21313290 19608225 4144250 855162 46507704 39995310 startTexFig 404 607 a %%BeginDocument: pics/pixwrite.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /pmask34 { } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 66 /patchar34 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar34 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask34 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave matrix currentmatrix [486 0 0 -207 117 324] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 96 16.08 336 { 96 exch M (BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) show } for grestore gsave matrix currentmatrix [486 0 0 -207 117 567] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 336 16.08 576 { 96 exch M (BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) show } for grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 522 513 M 522 112.5 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 198 513 M 198 108 L stroke grestore gsave matrix currentmatrix [432 0 0 -45 144 558] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 513] concat newpath 0 0 M 0 31.5 L 432 31.5 L 432 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 510 M 141 547.5 L 579 547.5 L 579 510 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 513] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 191.493 19.9706 M (unpack) 49.014 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 486] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 432] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 429 M 141 480 L 255 480 L 255 429 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 432] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 28.716 33.4706 M (convert) 50.568 S 31.054 19.4706 M (to [0,1]) 45.892 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 414] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 360] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 357 M 141 408 L 255 408 L 255 357 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 360] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 28.716 33.4706 M (convert) 50.568 S 23.669 19.4706 M (L to RGB) 60.662 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 288] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 234] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 231 M 141 282 L 255 282 L 255 231 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 234] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 36.486 33.4706 M (scale) 35.028 S 25.601 19.4706 M (and bias) 56.798 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 198] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 135 144] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 132 141 M 132 192 L 264 192 L 264 141 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 135 144] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 11.284 33.4706 M (RGBA to RGBA ) 107.324 S 40.054 19.4706 M (lookup) 45.892 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 108] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 135 54] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 132 51 M 132 102 L 264 102 L 264 51 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 135 54] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 42.77 33.4706 M (clamp) 40.46 S 40.054 19.4706 M (to [0,1]) 45.892 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 193.5 504 M 198 486 L 202.5 504 L 198 501 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 504 M 198 486 L 202.5 504 L 198 501 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 432 M 198 414 L 202.5 432 L 198 429 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 432 M 198 414 L 202.5 432 L 198 429 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 306 M 198 288 L 202.5 306 L 198 303 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 306 M 198 288 L 202.5 306 L 198 303 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 216 M 198 198 L 202.5 216 L 198 213 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 216 M 198 198 L 202.5 216 L 198 213 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 126 M 198 108 L 202.5 126 L 198 123 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 126 M 198 108 L 202.5 126 L 198 123 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 355.5 576 M 360 558 L 364.5 576 L 360 573 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 355.5 576 M 360 558 L 364.5 576 L 360 573 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 215 492.531] concat newpath 0 0 M 0 14 L 59.554 14 L 59.554 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 212.5 490.031 M 212.5 509.031 L 277.054 509.031 L 277.054 490.031 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 215 492.531] concat 1 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 2.47059 M (RGBA, L) 57.554 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 468 288] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 468 234] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 465 231 M 465 282 L 579 282 L 579 231 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 468 234] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 39.223 33.4706 M (shift) 29.554 S 20.554 19.4706 M (and offset) 66.892 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 517.5 306 M 522 288 L 526.5 306 L 522 303 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 306 M 522 288 L 526.5 306 L 522 303 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 468 198] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 459 144] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 456 141 M 456 192 L 588 192 L 588 141 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 459 144] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 15.932 33.4706 M (index to index ) 98.028 S 40.054 19.4706 M (look) 28.784 S 68.838 19.4706 M (up) 17.108 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 517.5 216 M 522 198 L 526.5 216 L 522 213 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 216 M 522 198 L 526.5 216 L 522 213 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 306 198] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 297 144] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 294 141 M 294 192 L 426 192 L 426 141 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 297 144] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 13.608 33.4706 M (index to RGBA ) 102.676 S 40.054 19.4706 M (looku) 37.338 S 77.392 19.4706 M (p) 8.554 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 355.5 216 M 360 198 L 364.5 216 L 360 213 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 355.5 216 M 360 198 L 364.5 216 L 360 213 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 468 108] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 459 58.5] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 456 55.5 M 456 106.5 L 588 106.5 L 588 55.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 459 58.5] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 36.547 33.4706 M (mask to) 52.906 S 38.297 13.8706 M (\(2) 12.446 S 50.743 19.4706 M (n) 8.554 S 59.297 13.8706 M ( - 1\)) 28.406 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 153 M 360 135 L 198 135 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 522 225 M 360 225 L 360 198 L stroke grestore gsave 0 0 0 setrgbcolor newpath 517.5 126 M 522 108 L 526.5 126 L 522 123 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 126 M 522 108 L 526.5 126 L 522 123 L closepath stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 306 594 M 360 594 L 360 558 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 522 63 M 522 36 L 576 36 L stroke grestore gsave 0 0 0 setrgbcolor newpath 558 31.5 M 576 36 L 558 40.5 L 561 36 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 558 31.5 M 576 36 L 558 40.5 L 561 36 L closepath stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 198 63 M 198 36 L 252 36 L stroke grestore gsave 0 0 0 setrgbcolor newpath 234 31.5 M 252 36 L 234 40.5 L 237 36 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 234 31.5 M 252 36 L 234 40.5 L 237 36 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 261 414] concat newpath 0 0 M 0 54 L 198 54 L 198 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 258.5 411.5 M 258.5 471.913 L 461.5 471.913 L 461.5 411.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 261 414] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 41.976 39.913 M (Pixel Storage) 114.048 S 51.489 21.913 M (Operations) 95.022 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 288 256.5] concat newpath 0 0 M 0 49.5 L 144 49.5 L 144 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 285.5 254 M 285.5 309.913 L 434.5 309.913 L 434.5 254 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 288 256.5] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 12.474 35.413 M (Pixel Transfer) 119.052 S 24.489 17.413 M (Operations) 95.022 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 63 576] concat newpath 0 0 M 0 31.5 L 234 31.5 L 234 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 60.5 573.5 M 60.5 610 L 299.5 610 L 299.5 573.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 63 576] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 23.256 19.9706 M (byte, short, int, o) 112.798 S 136.054 19.9706 M (r float pixel) 74.69 S 4.202 5.97059 M (data stream \(index ) 127.596 S 131.798 5.97059 M (or component\)) 98 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 261 13.5] concat newpath 0 0 M 0 36 L 126 36 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 258.5 11 M 258.5 52 L 389.5 52 L 389.5 11 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 261 13.5] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 24.493 24.4706 M (RGBA pixel) 77.014 S 35.777 10.4706 M (data out) 54.446 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 580.5 13.5] concat newpath 0 0 M 0 36 L 126 36 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 578 11 M 578 52 L 709 52 L 709 11 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 580.5 13.5] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 7.756 24.4706 M (color index pixel) 110.488 S 35.777 10.4706 M (data out) 54.446 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 531 477.531] concat newpath 0 0 M 0 28 L 38.568 28 L 38.568 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 529 475.531 M 529 508.002 L 571.568 508.002 L 571.568 475.531 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 531 477.531] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 16.4706 M (color) 34.23 S 0 2.47059 M (index) 36.568 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1968 a Fm(Figure)17 b(3.7.)26 b(Op)q(eration)17 b(of)f Fk(Dra)o(wPixels)p Fm(.)25 b(Output)17 b(is)g(R)o(GBA)f(pixels)g (if)g(the)i(GL)389 2017 y(is)h(in)f(R)o(GBA)f(mo)q(de,)h(color)h(index) f(pixels)g(otherwise.)33 b(\(Depth)19 b(and)f(stencil)h(pixel)389 2067 y(paths)e(are)f(not)g(illustrated.\))25 b(R)o(GBA-to-R)o(GBA)15 b(and)h(index-to-index)g(lo)q(okup)f(are)389 2117 y(optional.)p 1807 2146 2 1614 v 350 2148 1459 2 v eop %%Page: 77 86 77 85 bop 120 137 a Fx(3.6.)34 b(PIXEL)16 b(RECT)l(ANGLES)873 b FC(77)p 235 376 1265 2 v 234 432 2 57 v 260 415 a Fv(typ)n(e)15 b FC(P)o(arameter)f(T)l(ok)o(en)h(Name)p 850 432 V 50 w(Corresp)q(onding)h(GL)f(Data)f(T)o(yp)q(e)p 1499 432 V 235 434 1265 2 v 235 442 V 234 498 2 57 v 404 482 a Fr(UNSIGNED)p 583 482 14 2 v 14 w(BYTE)p 850 498 2 57 v 438 w FC(ub)o(yte)p 1499 498 V 235 500 1265 2 v 234 557 2 57 v 478 540 a Fr(BITMAP)p 850 557 V 510 w FC(ub)o(yte)p 1499 557 V 235 558 1265 2 v 234 615 2 57 v 499 598 a Fr(BYTE)p 850 615 V 546 w FC(b)o(yte)p 1499 615 V 235 616 1265 2 v 234 673 2 57 v 394 656 a Fr(UNSIGNED)p 573 656 14 2 v 14 w(SHORT)p 850 673 2 57 v 418 w FC(ushort)p 1499 673 V 235 674 1265 2 v 234 731 2 57 v 489 714 a Fr(SHORT)p 850 731 V 526 w FC(short)p 1499 731 V 235 733 1265 2 v 234 789 2 57 v 415 772 a Fr(UNSIGNED)p 594 772 14 2 v 14 w(INT)p 850 789 2 57 v 465 w FC(uin)o(t)p 1499 789 V 235 791 1265 2 v 234 847 2 57 v 510 830 a Fr(INT)p 850 847 V 466 w FC(32-bit)i(in)o(teger)p 1499 847 V 235 849 1265 2 v 234 905 2 57 v 489 888 a Fr(FLOAT)p 850 905 V 532 w FC(\015oat)p 1499 905 V 235 907 1265 2 v 120 984 a(T)l(able)21 b(3.4:)28 b Fz(Dra)o(wPixels)19 b FC(and)h Fz(ReadPixels)h Fv(typ)n(e)f FC(parameter)f(v)m(alues)i(and) f(the)120 1041 y(corresp)q(onding)d(GL)f(data)f(t)o(yp)q(es.)22 b(Refer)17 b(to)e(table)h(2.2)f(for)g(de\014nitions)j(of)d(GL)h(data) 120 1097 y(t)o(yp)q(es.)p 210 1457 1315 2 v 209 1513 2 57 v 258 1496 a(F)l(ormat)e(Name)p 580 1513 V 589 1513 V 81 w(Elemen)o(t)i(Meaning)f(and)h(Order)p 1207 1513 V 50 w(T)l(arget)e(Bu\013er)p 1524 1513 V 210 1515 1315 2 v 210 1523 V 209 1580 2 57 v 279 1563 a Fr(COLOR)p 392 1563 14 2 v 14 w(INDEX)p 580 1580 2 57 v 589 1580 V 268 w FC(Color)h(Index)p 1207 1580 V 297 w(Color)p 1524 1580 V 210 1582 1315 2 v 209 1638 2 57 v 257 1621 a Fr(STENCIL)p 414 1621 14 2 v 14 w(INDEX)p 580 1638 2 57 v 589 1638 V 233 w FC(Stencil)i(Index)p 1207 1638 V 273 w(Stencil)p 1524 1638 V 210 1640 1315 2 v 209 1696 2 57 v 235 1679 a Fr(DEPTH)p 348 1679 14 2 v 15 w(COMPONENT)p 580 1696 2 57 v 589 1696 V 156 w FC(Depth)f(Comp)q(onen)o(t)p 1207 1696 V 222 w(Depth)p 1524 1696 V 210 1698 1315 2 v 209 1754 2 57 v 363 1737 a Fr(RED)p 580 1754 V 589 1754 V 330 w FC(R)g(Comp)q(onen)o(t)p 1207 1754 V 274 w(Color)p 1524 1754 V 210 1756 1315 2 v 209 1812 2 57 v 341 1795 a Fr(GREEN)p 580 1812 V 589 1812 V 307 w FC(G)f(Comp)q(onen) o(t)p 1207 1812 V 273 w(Color)p 1524 1812 V 210 1814 1315 2 v 209 1870 2 57 v 352 1853 a Fr(BLUE)p 580 1870 V 589 1870 V 320 w FC(B)g(Comp)q(onen)o(t)p 1207 1870 V 275 w(Color)p 1524 1870 V 210 1872 1315 2 v 209 1929 2 57 v 341 1912 a Fr(ALPHA)p 580 1929 V 589 1929 V 308 w FC(A)g(Comp)q(onen)o(t)p 1207 1929 V 274 w(Color)p 1524 1929 V 210 1930 1315 2 v 209 1987 2 57 v 363 1970 a Fr(RGB)p 580 1987 V 589 1987 V 260 w FC(R,)g(G,)f(B)i(Comp)q(onen)o (ts)p 1207 1987 V 203 w(Color)p 1524 1987 V 210 1988 1315 2 v 209 2045 2 57 v 352 2028 a Fr(RGBA)p 580 2045 V 589 2045 V 218 w FC(R,)f(G,)f(B,)h(A)h(Comp)q(onen)o(ts)p 1207 2045 V 172 w(Color)p 1524 2045 V 210 2046 1315 2 v 209 2103 2 57 v 297 2086 a Fr(LUMINANCE)p 580 2103 V 589 2103 V 172 w FC(Luminance)h(Comp)q(onen)o(t)p 1207 2103 V 182 w(Color)p 1524 2103 V 210 2105 1315 2 v 209 2161 2 57 v 235 2144 a Fr(LUMINANCE)p 436 2144 14 2 v 14 w(ALPHA)p 580 2161 2 57 v 589 2161 V 77 w FC(Luminance,)f(A)f(comp)q (onen)o(ts)p 1207 2161 V 149 w(Color)p 1524 2161 V 210 2163 1315 2 v 120 2240 a(T)l(able)d(3.5:)17 b Fz(Dra)o(wPixels)10 b FC(and)h Fz(ReadPixels)g FC(formats.)17 b(The)11 b(second)h(column)g (giv)o(es)120 2296 y(a)j(description)i(of)e(and)g(the)g(n)o(um)o(b)q (er)h(and)f(order)g(of)g(elemen)o(ts)h(in)g(a)f(group.)p eop %%Page: 78 87 78 86 bop 332 137 a FC(78)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 419 242 1321 2 v 418 299 2 57 v 444 282 a FC(Elemen)o(t)15 b(Size)p 725 299 V 52 w(Default)g(Bit)g (Ordering)p 1192 299 V 51 w(Mo)q(di\014ed)i(Bit)e(Ordering)p 1739 299 V 419 301 1321 2 v 418 357 2 57 v 526 340 a(8)f(bit)p 725 357 V 133 w([7)p Fy(::)p FC(0])p 1192 357 V 368 w([7)p Fy(::)p FC(0])p 1739 357 V 419 359 1321 2 v 418 415 2 57 v 514 398 a(16)h(bit)p 725 415 V 121 w([15)p Fy(::)p FC(0])p 1192 415 V 345 w([7)p Fy(::)p FC(0][15)p Fy(::)p FC(8)o(])p 1739 415 V 419 417 1321 2 v 418 473 2 57 v 514 456 a(32)g(bit)p 725 473 V 121 w([31)p Fy(::)p FC(0])p 1192 473 V 345 w([7)p Fy(::)p FC(0][15)p Fy(::)p FC(8)o(][2)o(3)p Fy(::)o FC(16])o([31)o Fy(::)p FC(2)o(4])p 1739 473 V 419 475 1321 2 v 332 552 a(T)l(able)h(3.6:)j(Bit)d(ordering)f(mo)q (di\014cation)h(of)f(elemen)o(ts)h(when)g Fr(UNPACK)p 1558 552 14 2 v 14 w(SWAP)p 1660 552 V 15 w(BYTES)e FC(is)332 609 y(enabled.)23 b(These)16 b(reorderings)g(are)f(de\014ned)j(only)e (when)g(GL)g(data)f(t)o(yp)q(e)h Fw(ubyte)f FC(has)332 665 y(8)h(bits,)g(and)g(then)h(only)f(for)g(GL)g(data)f(t)o(yp)q(es)h (with)g(8,)g(16,)f(or)h(32)f(bits.)23 b(Bit)16 b(0)g(is)g(the)332 721 y(least)f(signi\014can)o(t.)332 906 y(indicates)j(the)f(lo)q (cation)h(in)f(memory)g(of)f(the)h(\014rst)f(elemen)o(t)i(of)e(the)h (\014rst)f(ro)o(w,)g(then)332 962 y(the)f(\014rst)g(elemen)o(t)h(of)f (the)g Fy(N)5 b FC(th)15 b(ro)o(w)f(is)i(indicated)h(b)o(y)1007 1060 y Fy(p)10 b FC(+)g Fy(N)5 b(k)582 b FC(\(3.8\))332 1157 y(where)16 b Fy(N)j FC(is)d(the)f(ro)o(w)f(n)o(um)o(b)q(er)i (\(coun)o(ting)f(from)g(zero\))f(and)i(k)f(is)h(de\014ned)g(as)804 1288 y Fy(k)d FC(=)889 1216 y Fi(\()943 1259 y Fy(nl)227 b(s)13 b FB(\025)g Fy(a;)943 1316 y(a=s)8 b FB(d)p Fy(snl)q(=a)p FB(e)42 b Fy(s)13 b(<)g(a)1733 1288 y FC(\(3.9\))332 1416 y(where)j Fy(n)g FC(is)g(the)f(n)o(um)o(b)q(er)h(of)f(elemen)o(ts) h(in)h(a)e(group,)g Fy(l)h FC(is)g(the)f(n)o(um)o(b)q(er)h(of)f(groups) h(in)332 1472 y(the)e(ro)o(w,)f Fy(a)h FC(is)h(the)f(v)m(alue)i(of)d Fr(UNPACK)p 970 1472 V 15 w(ALIGNMENT)p FC(,)f(and)i Fy(s)g FC(is)h(the)f(size,)h(in)g(units)g(of)e(GL)332 1528 y Fw(ubyte)p FC(s,)h(of)g(an)h(elemen)o(t.)21 b(If)15 b(the)g(n)o(um)o(b)q(er)g(of)f(bits)i(p)q(er)f(elemen)o(t)h(is)f(not)g (1,)f(2,)g(4,)g(or)h(8)332 1585 y(times)h(the)f(n)o(um)o(b)q(er)g(of)g (bits)h(in)g(a)f(GL)g Fw(ubyte)p FC(,)f(then)i Fy(k)d FC(=)g Fy(nl)j FC(for)f(all)h(v)m(alues)g(of)f Fy(a)p FC(.)403 1641 y(There)22 b(is)h(a)e(mec)o(hanism)i(for)f(selecting)h(a) f(sub-rectangle)h(of)f(groups)f(from)h(a)332 1698 y(larger)16 b(con)o(taining)g(rectangle.)22 b(This)17 b(mec)o(hanism)f(relies)h(on) f(three)g(in)o(teger)g(param-)332 1754 y(eters:)j Fr(UNPACK)p 593 1754 V 15 w(ROW)p 674 1754 V 15 w(LENGTH)p FC(,)12 b Fr(UNPACK)p 978 1754 V 14 w(SKIP)p 1080 1754 V 15 w(ROWS)p FC(,)h(and)h Fr(UNPACK)p 1428 1754 V 14 w(SKIP)p 1530 1754 V 15 w(PIXELS)p FC(.)e(Before)332 1811 y(obtaining)h(the)f (\014rst)g(group)g(from)f(memory)l(,)h(the)g(p)q(oin)o(ter)g(supplied)j (to)c Fz(Dra)o(wPixels)332 1867 y FC(is)k(e\013ectiv)o(ely)h(adv)m (anced)g(b)o(y)f(\()p Fr(UNPACK)p 1003 1867 V 14 w(SKIP)p 1105 1867 V 15 w(PIXELS)o FC(\))p Fy(n)9 b FC(+)h(\()p Fr(UNPACK)p 1500 1867 V 14 w(SKIP)p 1602 1867 V 15 w(ROWS)o FC(\))p Fy(k)15 b FC(ele-)332 1924 y(men)o(ts.)j(Then)12 b Fv(width)g FC(groups)e(are)h(obtained)h(from)e(con)o(tiguous)h (elemen)o(ts)h(in)g(memory)332 1980 y(\(without)17 b(adv)m(ancing)i (the)e(p)q(oin)o(ter\),)h(after)e(whic)o(h)j(the)e(p)q(oin)o(ter)h(is)g (adv)m(anced)g(b)o(y)f Fy(k)332 2037 y FC(elemen)o(ts.)28 b Fv(height)18 b FC(sets)f(of)h Fv(width)g FC(groups)f(of)h(v)m(alues)g (are)g(obtained)g(this)g(w)o(a)o(y)l(.)27 b(See)332 2093 y(Figure)16 b(3.8.)403 2149 y(Calling)f Fz(Dra)o(wPixels)e FC(with)i(a)e Fv(typ)n(e)h FC(of)g Fr(BITMAP)f FC(is)h(a)g(sp)q(ecial)i (case)e(in)g(whic)o(h)h(the)332 2206 y(data)e(are)h(a)f(series)i(of)e (GL)h Fw(ubyte)f FC(v)m(alues.)20 b(Eac)o(h)14 b Fw(ubyte)f FC(v)m(alue)i(sp)q(eci\014es)h(8)d(1-bit)h(ele-)332 2262 y(men)o(ts)g(with)g(its)g(8)g(least-signi\014can)o(t)i(bits.)k(The)14 b(8)g(single-bit)i(elemen)o(ts)e(are)g(ordered)332 2319 y(from)h(most)h(signi\014can)o(t)h(to)e(least)i(signi\014can)o(t)g(if)f (the)g(v)m(alue)i(of)d Fr(UNPACK)p 1578 2319 V 15 w(LSB)p 1659 2319 V 15 w(FIRST)g FC(is)332 2375 y Fr(FALSE)p FC(;)i(otherwise,)h(the)g(ordering)h(is)f(from)f(least)h(signi\014can)o (t)h(to)f(most)f(signi\014can)o(t.)332 2432 y(The)h(v)m(alues)g(of)f (bits)h(other)f(than)g(the)h(8)f(least)g(signi\014can)o(t)h(in)h(eac)o (h)e Fw(ubyte)g FC(are)g(not)332 2488 y(signi\014can)o(t.)p eop %%Page: 79 88 79 87 bop 120 137 a Fx(3.6.)34 b(PIXEL)16 b(RECT)l(ANGLES)873 b FC(79)p 139 242 1459 2 v 139 1104 2 862 v 418 317 a 14208860 8525316 6315048 27365212 35785277 45257850 startTexFig 418 317 a %%BeginDocument: pics/subimage.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Courier-Bold-SHOWISO exch definefont pop /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-SHOWISO exch definefont pop /pmask34 { } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 66 /patchar34 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar34 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask34 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave matrix currentmatrix [448 0 0 -272 96 688] concat B setmatrix 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [160 0 0 -112 224 624] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 640 { 192 exch M (BBBBBBBBBBBBB) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 224 415 translate -90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 224 513 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth newpath 224 434 M 224 494 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 231 451] concat newpath 0 0 M 0 21 L 99.2 21 L 99.2 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 229 449 M 229 474 L 332.2 474 L 332.2 449 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 231 451] concat /Courier-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 4.5 M (SKIP_ROWS) 97.2 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 99 515] concat newpath 0 0 M 0 21 L 120.8 21 L 120.8 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 97 513 M 97 538 L 221.8 538 L 221.8 513 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 99 515] concat /Courier-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 4.5 M (SKIP_PIXELS) 118.8 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 95 512 translate 180 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 225 512 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth newpath 114 512 M 206 512 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 95 668 translate 180 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 545 668 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth newpath 114 668 M 526 668 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 275 639] concat newpath 0 0 M 0 21 L 110 21 L 110 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 273 637 M 273 662 L 387 662 L 387 637 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 275 639] concat /Courier-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 4.5 M (ROW_LENGTH) 108 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 267 557] concat newpath 0 0 M 0 24 L 80.03 24 L 80.03 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 265 555 M 265 583 L 349.03 583 L 349.03 555 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 267 557] concat /Helvetica-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.27273 M (subimage) 78.03 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 975 a Fm(Figure)20 b(3.8.)36 b(Selecting)20 b(a)g(subimage)f(from) f(an)i(image.)35 b(The)20 b(indicated)g(param-)178 1025 y(eter)k(names)f(are)h(pre\014xed)g(b)o(y)f Fr(UNPACK)p 855 1025 14 2 v 38 w Fm(for)g Fk(Dra)o(wPixels)e Fm(and)j(b)o(y)f Fr(PACK)p 1473 1025 V 38 w Fm(for)178 1075 y Fk(ReadPixels)p Fm(.)p 1595 1104 2 862 v 139 1106 1459 2 v 191 1301 a FC(The)14 b(\014rst)f(elemen)o(t)i(of)e(the)h(\014rst)f(ro)o(w)g(is)h (the)g(\014rst)f(bit)h(\(as)f(de\014ned)i(ab)q(o)o(v)o(e\))e(of)h(the) 120 1357 y Fw(ubyte)i FC(p)q(oin)o(ted)g(to)g(b)o(y)f(the)h(p)q(oin)o (ter)h(passed)f(to)f Fz(Dra)o(wPixels)p FC(.)21 b(The)16 b(\014rst)g(elemen)o(t)120 1414 y(of)i(the)g(second)g(ro)o(w)f(is)h (the)g(\014rst)g(bit)g(\(again)f(as)h(de\014ned)h(ab)q(o)o(v)o(e\))e (of)g(the)h Fw(ubyte)f FC(at)120 1470 y(lo)q(cation)f Fy(p)10 b FC(+)h Fy(k)q FC(,)k(where)g Fy(k)h FC(is)g(computed)g(as)756 1616 y Fy(k)e FC(=)f Fy(a)874 1556 y Fi(\030)905 1585 y Fy(nl)p 903 1605 47 2 v 903 1647 a FC(8)p Fy(a)955 1556 y Fi(\031)1499 1616 y FC(\(3.10\))191 1768 y(There)23 b(is)g(a)f(mec)o(hanism)i(for)e(selecting)i(a)e(sub-rectangle)i(of)e (elemen)o(ts)h(from)120 1825 y(a)h Fr(BITMAP)e FC(image)i(as)f(w)o (ell.)47 b(Before)24 b(obtaining)g(the)g(\014rst)f(elemen)o(t)i(from)e (mem-)120 1881 y(ory)l(,)36 b(the)c(p)q(oin)o(ter)h(supplied)h(to)e Fz(Dra)o(wPixels)f FC(is)i(e\013ectiv)o(ely)g(adv)m(anced)g(b)o(y)120 1937 y(\()p Fr(UNPACK)p 273 1937 14 2 v 15 w(SKIP)p 376 1937 V 14 w(ROWS)p FC(\))p Fy(k)21 b Fw(ubyte)p FC(s.)35 b(Then)21 b Fr(UNPACK)p 983 1937 V 15 w(SKIP)p 1086 1937 V 15 w(PIXELS)e FC(1-bit)i(elemen)o(ts)g(are)120 1994 y(ignored,)16 b(and)f(the)g(subsequen)o(t)g Fv(width)h FC(1-bit)f(elemen)o(ts)h(are)e(obtained,)i(without)f(ad-)120 2050 y(v)m(ancing)g(the)e Fw(ubyte)g FC(p)q(oin)o(ter,)h(after)e(whic)o (h)i(the)g(p)q(oin)o(ter)f(is)h(adv)m(anced)g(b)o(y)g Fy(k)g Fw(ubyte)p FC(s.)120 2107 y Fv(height)i FC(sets)f(of)g Fv(width)g FC(elemen)o(ts)h(are)f(obtained)h(this)g(w)o(a)o(y)l(.)120 2274 y Fz(Con)o(v)o(ersion)g(to)i(\015oating-p)q(oin)o(t)120 2375 y FC(This)k(step)f(applies)h(only)g(to)e(groups)g(of)h(comp)q (onen)o(ts.)37 b(It)21 b(is)g(not)g(p)q(erformed)g(on)120 2432 y(indices.)45 b(Eac)o(h)22 b(elemen)o(t)h(in)h(a)e(group)g(is)i (con)o(v)o(erted)e(to)g(a)g(\015oating-p)q(oin)o(t)i(v)m(alue)120 2488 y(according)16 b(to)f(the)g(appropriate)g(form)o(ula)g(in)h(T)l (able)g(2.6)e(\(section)i(2.13\).)p eop %%Page: 80 89 80 88 bop 332 137 a FC(80)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y Fz(Con)o(v)o(ersion)16 b(to)i(R)o(GB)332 383 y FC(This)g(step)g(is)h(applied)g(only)g(if)f(the)g Fv(format)g FC(is)h Fr(LUMINANCE)d FC(or)h Fr(LUMINANCE)p 1646 383 14 2 v 14 w(ALPHA)p FC(.)f(If)332 439 y(the)i Fv(format)g FC(is)g Fr(LUMINANCE)p FC(,)e(then)i(eac)o(h)f(group)h(of)f (one)h(elemen)o(t)g(is)g(con)o(v)o(erted)g(to)f(a)332 495 y(group)12 b(of)g(R,)h(G,)e(and)i(B)g(\(three\))f(elemen)o(ts)h(b)o (y)f(cop)o(ying)h(the)f(original)i(single)g(elemen)o(t)332 552 y(in)o(to)h(eac)o(h)h(of)f(the)h(three)f(new)h(elemen)o(ts.)21 b(If)16 b(the)f Fv(format)h FC(is)g Fr(LUMINANCE)p 1590 552 V 14 w(ALPHA)p FC(,)e(then)332 608 y(eac)o(h)g(group)f(of)h(t)o(w)o (o)e(elemen)o(ts)i(is)h(con)o(v)o(erted)e(to)g(a)h(group)f(of)g(R,)h (G,)f(B,)h(and)g(A)f(\(four\))332 665 y(elemen)o(ts)21 b(b)o(y)e(cop)o(ying)h(the)g(\014rst)g(original)h(elemen)o(t)f(in)o(to) g(eac)o(h)g(of)f(the)h(\014rst)f(three)332 721 y(new)i(elemen)o(ts)h (and)f(cop)o(ying)g(the)g(second)g(original)h(elemen)o(t)g(to)e(the)h (A)g(\(fourth\))332 778 y(new)16 b(elemen)o(t.)332 928 y Fz(Final)j(Expansion)f(to)g(R)o(GBA)332 1024 y FC(This)g(step)f(is)g (p)q(erformed)g(only)h(for)e(non-depth)i(comp)q(onen)o(t)f(groups.)25 b(Eac)o(h)17 b(group)332 1081 y(is)e(con)o(v)o(erted)f(to)f(a)h(group)g (of)g(4)g(elemen)o(ts)g(as)g(follo)o(ws:)20 b(if)14 b(a)g(group)g(do)q (es)g(not)g(con)o(tain)332 1137 y(an)f(A)g(elemen)o(t,)h(then)f(A)g(is) h(added)f(and)g(set)g(to)g(1.0.)18 b(If)13 b(an)o(y)g(of)f(R,)h(G,)f (or)h(B)g(is)h(missing)332 1194 y(from)h(the)g(group,)f(eac)o(h)i (missing)g(elemen)o(t)g(is)f(added)h(and)g(assigned)f(a)g(v)m(alue)i (of)d(0.0.)332 1344 y Fz(Pixel)k(T)l(ransfer)e(Op)q(erations)332 1440 y FC(This)h(step)f(is)g(actually)h(a)e(sequence)i(of)f(steps.)22 b(Because)17 b(the)f(pixel)h(transfer)e(op)q(era-)332 1497 y(tions)d(are)f(p)q(erformed)g(equiv)m(alen)o(tly)j(during)e(the)g (dra)o(wing,)f(cop)o(ying,)h(and)g(reading)g(of)332 1553 y(pixels,)h(and)e(during)h(the)f(sp)q(eci\014cation)i(of)e(texture)g (images)g(\(either)g(from)f(memory)h(or)332 1610 y(from)k(the)h (framebu\013er\),)e(they)i(are)f(describ)q(ed)j(separately)e(in)g (section)g(3.6.4.)k(After)332 1666 y(the)c(pro)q(cessing)h(describ)q (ed)g(in)g(that)e(section)h(is)g(completed,)h(groups)e(are)h(pro)q (cessed)332 1723 y(as)f(describ)q(ed)i(in)f(the)f(follo)o(wing)h (sections.)332 1873 y Fz(Final)j(Con)o(v)o(ersion)332 1969 y FC(F)l(or)c(a)g(color)h(index,)g(\014nal)h(con)o(v)o(ersion)e (consists)h(of)f(masking)h(the)f(bits)h(of)g(the)f(index)332 2026 y(to)e(the)h(left)g(of)f(the)h(binary)g(p)q(oin)o(t)h(b)o(y)e(2) 1011 2009 y Fu(n)1042 2026 y FB(\000)7 b FC(1,)13 b(where)h Fy(n)g FC(is)h(the)e(n)o(um)o(b)q(er)i(of)e(bits)h(in)h(an)332 2082 y(index)f(bu\013er.)19 b(F)l(or)12 b(R)o(GBA)h(comp)q(onen)o(ts,)g (eac)o(h)g(elemen)o(t)g(is)g(clamp)q(ed)h(to)e([0)p Fy(;)c FC(1].)17 b(The)332 2139 y(resulting)g(v)m(alues)f(are)f(con)o(v)o (erted)g(to)g(\014xed-p)q(oin)o(t)i(according)e(to)g(the)h(rules)g(giv) o(en)g(in)332 2195 y(section)g(2.13.9)d(\(Final)j(Color)f(Pro)q (cessing\).)403 2257 y(F)l(or)j(a)g(depth)h(comp)q(onen)o(t,)g(an)g (elemen)o(t)g(is)g(\014rst)f(clamp)q(ed)i(to)e([0)p Fy(;)8 b FC(1])16 b(and)j(then)332 2313 y(con)o(v)o(erted)e(to)g(\014xed-p)q (oin)o(t)h(as)f(if)h(it)f(w)o(ere)g(a)g(windo)o(w)g Fy(z)i FC(v)m(alue)g(\(see)e(section)h(2.10.1,)332 2370 y(Con)o(trolling)e (the)f(Viewp)q(ort\).)403 2432 y(Stencil)k(indices)g(are)e(mask)o(ed)g (b)o(y)g(2)1035 2415 y Fu(n)1070 2432 y FB(\000)12 b FC(1,)17 b(where)h Fy(n)f FC(is)h(the)f(n)o(um)o(b)q(er)h(of)f(bits)h (in)332 2488 y(the)d(stencil)i(bu\013er.)p eop %%Page: 81 90 81 89 bop 120 137 a Fx(3.6.)34 b(PIXEL)16 b(RECT)l(ANGLES)873 b FC(81)120 286 y Fz(Con)o(v)o(ersion)16 b(to)i(F)l(ragmen)o(ts)120 372 y FC(The)e(con)o(v)o(ersion)f(of)g(a)g(group)g(to)f(fragmen)o(ts)g (is)i(con)o(trolled)g(with)234 463 y Fw(void)30 b Fz(PixelZo)q(om)p FC(\()g Fw(float)15 b Fy(z)809 470 y Fu(x)831 463 y Fw(,)g(float)f Fy(z)1025 470 y Fu(y)1061 463 y FC(\))h Fw(;)120 553 y FC(Let)j(\()p Fy(x)248 560 y Fu(r)q(p)285 553 y Fy(;)8 b(y)328 560 y Fu(r)q(p)364 553 y FC(\))18 b(b)q(e)g(the)g(curren)o(t)g (raster)f(p)q(osition)i(\(section)f(2.12\).)26 b(\(If)18 b(the)g(curren)o(t)120 610 y(raster)k(p)q(osition)h(is)g(in)o(v)m (alid,)j(then)d Fz(Dra)o(wPixels)e FC(is)i(ignored.\))41 b(If)23 b(a)f(particular)120 666 y(group)d(\(index)g(or)f(comp)q(onen)o (ts\))g(is)h(the)g Fy(n)p FC(th)f(in)i(a)e(ro)o(w)f(and)i(b)q(elongs)h (to)d(the)i Fy(m)p FC(th)120 723 y(ro)o(w,)g(consider)g(the)g(region)g (in)h(windo)o(w)f(co)q(ordinates)g(b)q(ounded)h(b)o(y)f(the)f (rectangle)120 779 y(with)e(corners)186 877 y(\()p Fy(x)230 884 y Fu(r)q(p)276 877 y FC(+)11 b Fy(z)343 884 y Fu(x)365 877 y Fy(n;)d(y)435 884 y Fu(r)q(p)482 877 y FC(+)i Fy(z)548 884 y Fu(y)569 877 y Fy(m)p FC(\))90 b(and)h(\()p Fy(x)925 884 y Fu(r)q(p)972 877 y FC(+)10 b Fy(z)1038 884 y Fu(x)1060 877 y FC(\()p Fy(n)h FC(+)f(1\))p Fy(;)e(y)1245 884 y Fu(r)q(p)1291 877 y FC(+)i Fy(z)1357 884 y Fu(y)1378 877 y FC(\()p Fy(m)g FC(+)g(1\)\))120 976 y(\(either)18 b Fy(z)290 983 y Fu(x)330 976 y FC(or)f Fy(z)409 983 y Fu(y)447 976 y FC(ma)o(y)g(b)q(e)h(negativ)o(e\).)27 b(An)o(y)18 b(fragmen)o(ts)e(whose)h(cen)o(ters)h(lie)h(inside)120 1032 y(of)d(this)h(rectangle)f(\(or)f(on)h(its)h(b)q(ottom)e(or)g(left) i(b)q(oundaries\))g(are)f(pro)q(duced)h(in)g(cor-)120 1089 y(resp)q(ondence)g(with)f(this)f(particular)h(group)f(of)g(elemen) o(ts.)191 1145 y(A)k(fragmen)o(t)e(arising)j(from)e(a)g(group)g (consisting)i(of)e(color)h(data)f(tak)o(es)g(on)h(the)120 1202 y(color)14 b(index)h(or)e(color)g(comp)q(onen)o(ts)h(of)f(the)h (group;)f(the)h(depth)g(and)g(texture)f(co)q(ordi-)120 1258 y(nates)k(are)f(tak)o(en)h(from)e(the)i(curren)o(t)g(raster)f(p)q (osition's)h(asso)q(ciated)g(data.)24 b(A)16 b(frag-)120 1314 y(men)o(t)i(arising)g(from)f(a)g(depth)i(comp)q(onen)o(t)f(tak)o (es)e(the)i(comp)q(onen)o(t's)g(depth)g(v)m(alue;)120 1371 y(the)j(color)f(and)h(texture)f(co)q(ordinates)h(are)f(giv)o(en)h (b)o(y)f(those)g(asso)q(ciated)h(with)g(the)120 1427 y(curren)o(t)15 b(raster)e(p)q(osition.)21 b(In)15 b(b)q(oth)f(cases)h (texture)f(co)q(ordinates)h Fy(s)p FC(,)f Fy(t)p FC(,)h(and)f Fy(r)i FC(are)e(re-)120 1484 y(placed)h(with)g Fy(s=q)r FC(,)e Fy(t=q)r FC(,)h(and)g Fy(r)q(=q)r FC(,)f(resp)q(ectiv)o(ely)l(.) 22 b(If)14 b Fy(q)i FC(is)e(less)h(then)f(or)f(equal)i(to)e(zero,)120 1540 y(the)j(results)h(are)e(unde\014ned.)24 b(Groups)15 b(arising)i(from)e Fz(Dra)o(wPixels)g FC(with)h(a)g Fv(format)120 1597 y FC(of)f Fr(STENCIL)p 329 1597 14 2 v 14 w(INDEX)g FC(are)f(treated)h(sp)q(ecially)j(and)d(are)g(describ)q(ed)i(in)f (section)g(4.3.1.)120 1718 y Fl(3.6.4)56 b(Pixel)17 b(T)-5 b(ransfer)19 b(Op)r(erations)120 1804 y FC(The)d(GL)f(de\014nes)h(four) f(kinds)h(of)f(pixel)i(groups:)176 1894 y(1.)22 b Fv(R)o(GBA)15 b(c)n(omp)n(onent:)j FC(Eac)o(h)13 b(group)g(comprises)h(four)f(color)h (comp)q(onen)o(ts:)19 b(red,)234 1951 y(green,)c(blue,)h(and)f(alpha.) 176 2043 y(2.)22 b Fv(Depth)17 b(c)n(omp)n(onent:)i FC(Eac)o(h)c(group) g(comprises)h(a)f(single)h(depth)g(comp)q(onen)o(t.)176 2136 y(3.)22 b Fv(Color)16 b(index:)k FC(Eac)o(h)15 b(group)g (comprises)h(a)e(single)j(color)e(index.)176 2228 y(4.)22 b Fv(Stencil)15 b(index:)20 b FC(Eac)o(h)15 b(group)g(comprises)g(a)g (single)i(stencil)f(index.)120 2319 y(Eac)o(h)d(op)q(eration)h(describ) q(ed)h(in)f(this)f(section)h(is)f(applied)j(sequen)o(tially)e(to)f(eac) o(h)g(pixel)120 2375 y(group)20 b(in)h(an)f(image.)35 b(Man)o(y)19 b(op)q(erations)h(are)g(applied)i(only)e(to)g(pixel)h (groups)f(of)120 2432 y(certain)12 b(kinds;)i(if)e(an)f(op)q(eration)h (is)g(not)f(applicable)k(to)10 b(a)i(giv)o(en)g(group,)f(it)h(is)g (skipp)q(ed.)120 2488 y(F)l(uture)k(v)o(ersions)f(of)g(GL)g(ma)o(y)f (de\014ne)j(additional)f(pixel)h(transfer)e(op)q(erations.)p eop %%Page: 82 91 82 90 bop 332 137 a FC(82)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y Fz(Arithmetic)18 b(on)g(Comp)q(onen)o(ts) 332 376 y FC(This)f(step)f(applies)i(only)f(to)f(R)o(GBA)h(comp)q(onen) o(t)f(and)h(depth)g(comp)q(onen)o(t)f(groups.)332 433 y(Eac)o(h)31 b(comp)q(onen)o(t)g(is)g(m)o(ultiplied)i(b)o(y)e(an)g (appropriate)g(signed)g(scale)h(factor:)332 489 y Fr(RED)p 401 489 14 2 v 15 w(SCALE)14 b FC(for)h(an)g(R)g(comp)q(onen)o(t,)g Fr(GREEN)p 1076 489 V 15 w(SCALE)f FC(for)g(a)h(G)g(comp)q(onen)o(t,)g Fr(BLUE)p 1706 489 V 15 w(SCALE)332 546 y FC(for)d(a)h(B)g(comp)q(onen) o(t,)g(and)g Fr(ALPHA)p 922 546 V 14 w(SCALE)f FC(for)g(an)h(A)f(comp)q (onen)o(t,)h(or)g Fr(DEPTH)p 1639 546 V 14 w(SCALE)f FC(for)332 602 y(a)i(depth)i(comp)q(onen)o(t.)j(Then)c(the)g(result)g (is)g(added)h(to)e(the)g(the)h(appropriate)f(signed)332 658 y(bias:)20 b Fr(RED)p 512 658 V 16 w(BIAS)p FC(,)13 b Fr(GREEN)p 752 658 V 15 w(BIAS)p FC(,)h Fr(BLUE)p 970 658 V 15 w(BIAS)p FC(,)g Fr(ALPHA)p 1210 658 V 15 w(BIAS)p FC(,)f(or)i Fr(DEPTH)p 1505 658 V 15 w(BIAS)p FC(.)332 790 y Fz(Arithmetic)j(on)g(Indices)332 880 y FC(This)e(step)g(applies)h (only)f(to)f(color)h(index)g(and)g(stencil)h(index)g(groups.)k(If)16 b(the)f(index)332 936 y(is)i(a)g(\015oating-p)q(oin)o(t)g(v)m(alue,)h (it)g(is)f(con)o(v)o(erted)f(to)h(\014xed-p)q(oin)o(t,)h(with)f(an)g (unsp)q(eci\014ed)332 993 y(n)o(um)o(b)q(er)j(of)f(bits)h(to)e(the)i (righ)o(t)f(of)g(the)g(binary)h(p)q(oin)o(t.)33 b(Indices)21 b(that)e(are)g(already)332 1049 y(in)o(tegers)g(remain)g(so;)g(an)o(y)f (fraction)h(bits)g(in)g(the)g(resulting)g(\014xed-p)q(oin)o(t)h(v)m (alue)g(are)332 1106 y(zero.)403 1164 y(The)29 b(\014xed-p)q(oin)o(t)g (index)h(is)g(then)f(shifted)g(b)o(y)f FB(j)p Fr(INDEX)p 1427 1164 V 15 w(SHIFT)o FB(j)g FC(bits,)k(left)d(if)332 1221 y Fr(INDEX)p 445 1221 V 15 w(SHIFT)15 b Fy(>)h FC(0)h(and)g(righ)o (t)g(otherwise.)26 b(In)18 b(either)g(case)f(the)h(shift)f(is)h (zero-\014lled.)332 1277 y(Then,)d(the)h(signed)g(in)o(teger)f (o\013set)f Fr(INDEX)p 1064 1277 V 15 w(OFFSET)g FC(is)i(added)g(to)e (the)h(index.)332 1409 y Fz(R)o(GBA)i(to)h(R)o(GBA)f(Lo)q(okup)332 1498 y FC(This)26 b(step)g(applies)i(only)e(to)f(R)o(GBA)h(comp)q(onen) o(t)g(groups,)h(and)f(is)g(skipp)q(ed)i(if)332 1555 y Fr(MAP)p 401 1555 V 15 w(COLOR)20 b FC(is)h Fr(FALSE)p FC(.)e(First,)i(eac)o(h)g(comp)q(onen)o(t)g(is)g(clamp)q(ed)h(to)e(the) h(range)f([0)p Fy(;)8 b FC(1].)332 1611 y(There)21 b(is)g(a)f(table)h (asso)q(ciated)g(with)f(eac)o(h)h(of)f(the)h(R,)f(G,)g(B,)g(and)h(A)f (comp)q(onen)o(t)332 1668 y(elemen)o(ts:)27 b Fr(PIXEL)p 655 1668 V 14 w(MAP)p 735 1668 V 15 w(R)p 772 1668 V 16 w(TO)p 832 1668 V 15 w(R)18 b FC(for)g(R,)g Fr(PIXEL)p 1134 1668 V 14 w(MAP)p 1214 1668 V 16 w(G)p 1252 1668 V 15 w(TO)p 1311 1668 V 15 w(G)g FC(for)g(G,)f Fr(PIXEL)p 1615 1668 V 15 w(MAP)p 1696 1668 V 15 w(B)p 1733 1668 V 15 w(TO)p 1792 1668 V 16 w(B)332 1724 y FC(for)e(B,)g(and)g Fr(PIXEL)p 663 1724 V 15 w(MAP)p 744 1724 V 15 w(A)p 781 1724 V 16 w(TO)p 841 1724 V 15 w(A)g FC(for)g(A.)g(Eac)o(h)g (elemen)o(t)h(is)g(m)o(ultiplied)i(b)o(y)d(an)g(in)o(teger)332 1781 y(one)h(less)g(than)g(the)g(size)g(of)f(the)h(corresp)q(onding)h (table,)f(and,)f(for)h(eac)o(h)f(elemen)o(t,)i(an)332 1837 y(address)d(is)h(found)f(b)o(y)g(rounding)h(this)g(v)m(alue)g(to)f (the)g(nearest)g(in)o(teger.)20 b(F)l(or)13 b(eac)o(h)h(ele-)332 1894 y(men)o(t,)h(the)g(addressed)h(v)m(alue)g(in)g(the)f(corresp)q (onding)i(table)e(replaces)h(the)g(elemen)o(t.)332 2025 y Fz(Color)i(Index)e(Lo)q(okup)332 2115 y FC(This)23 b(step)f(applies)h(only)g(to)e(color)h(index)i(groups.)40 b(If)22 b(the)g(GL)g(command)g(that)332 2171 y(in)o(v)o(ok)o(es)d(the)f (pixel)i(transfer)e(op)q(eration)h(requires)g(that)f(R)o(GBA)h(comp)q (onen)o(t)g(pixel)332 2228 y(groups)g(b)q(e)g(generated,)g(then)g(a)g (con)o(v)o(ersion)g(is)g(p)q(erformed)g(at)f(this)i(step.)30 b(R)o(GBA)332 2284 y(comp)q(onen)o(t)15 b(pixel)i(groups)e(are)g (required)h(if)388 2386 y(1.)22 b(The)15 b(groups)g(will)i(b)q(e)f (rasterized,)f(and)g(the)h(GL)f(is)h(in)g(R)o(GBA)f(mo)q(de,)g(or)388 2488 y(2.)22 b(The)15 b(groups)g(will)i(b)q(e)f(loaded)g(as)e(an)i (image)f(in)o(to)g(texture)g(memory)l(,)g(or)p eop %%Page: 83 92 83 91 bop 120 137 a Fx(3.7.)34 b(BITMAPS)1130 b FC(83)176 286 y(3.)22 b(The)12 b(groups)f(will)i(b)q(e)f(returned)g(to)f(clien)o (t)i(memory)e(with)g(a)h(format)e(other)h(than)234 343 y Fr(COLOR)p 347 343 14 2 v 15 w(INDEX)p FC(.)120 452 y(If)19 b(R)o(GBA)g(comp)q(onen)o(t)f(groups)g(are)g(required,)i(then)f (the)g(in)o(teger)f(part)g(of)g(the)h(in-)120 508 y(dex)k(is)g(used)f (to)g(reference)h(4)f(tables)g(of)g(color)g(comp)q(onen)o(ts:)34 b Fr(PIXEL)p 1391 508 V 15 w(MAP)p 1472 508 V 15 w(I)p 1509 508 V 15 w(TO)p 1568 508 V 15 w(R)p FC(,)120 565 y Fr(PIXEL)p 233 565 V 15 w(MAP)p 314 565 V 15 w(I)p 351 565 V 16 w(TO)p 411 565 V 15 w(G)p FC(,)16 b Fr(PIXEL)p 587 565 V 15 w(MAP)p 668 565 V 15 w(I)p 705 565 V 16 w(TO)p 765 565 V 15 w(B)p FC(,)g(and)h Fr(PIXEL)p 1031 565 V 15 w(MAP)p 1112 565 V 15 w(I)p 1149 565 V 16 w(TO)p 1209 565 V 15 w(A)p FC(.)f(Eac)o(h)h(of)g(these)g(ta-)120 621 y(bles)j(m)o(ust)e(ha)o(v)o(e)g(2)462 605 y Fu(n)504 621 y FC(en)o(tries)h(for)f(some)h(in)o(teger)g(v)m(alue)g(of)g Fy(n)g FC(\()p Fy(n)f FC(ma)o(y)g(b)q(e)i(di\013eren)o(t)120 678 y(for)g(eac)o(h)f(table\).)34 b(F)l(or)20 b(eac)o(h)f(table,)j(the) d(index)j(is)e(\014rst)f(rounded)i(to)e(the)h(nearest)120 734 y(in)o(teger;)15 b(the)f(result)g(is)h(ANDed)g(with)f(2)818 718 y Fu(n)849 734 y FB(\000)9 b FC(1,)k(and)i(the)f(resulting)h(v)m (alue)g(used)g(as)f(an)120 791 y(address)i(in)o(to)f(the)h(table.)21 b(The)15 b(indexed)i(v)m(alue)g(b)q(ecomes)f(an)f(R,)h(G,)e(B,)i(or)e (A)i(v)m(alue,)120 847 y(as)g(appropriate.)22 b(The)16 b(group)f(of)g(four)h(elemen)o(ts)g(so)g(obtained)g(replaces)h(the)f (index,)120 903 y(c)o(hanging)g(the)f(group's)g(t)o(yp)q(e)g(to)g(R)o (GBA)g(comp)q(onen)o(t.)191 964 y(If)c(R)o(GBA)h(comp)q(onen)o(t)f (groups)g(are)g(not)g(required,)i(and)e(if)h Fr(MAP)p 1277 964 V 15 w(COLOR)e FC(is)i(enabled,)120 1020 y(then)21 b(the)f(index)i(is)e(lo)q(ok)o(ed)h(up)g(in)f(the)h Fr(PIXEL)p 963 1020 V 14 w(MAP)p 1043 1020 V 15 w(I)p 1080 1020 V 16 w(TO)p 1140 1020 V 15 w(I)f FC(table)h(\(otherwise,)g(the)120 1077 y(index)h(is)e(not)g(lo)q(ok)o(ed)g(up\).)34 b(Again,)21 b(the)f(table)h(m)o(ust)e(ha)o(v)o(e)g(2)1248 1060 y Fu(n)1291 1077 y FC(en)o(tries)i(for)e(some)120 1133 y(in)o(teger)13 b Fy(n)p FC(,)g(and)g(the)g(in)o(teger)g(part)f(of)g (the)h(index)g(is)h(ANDed)e(with)h(2)1299 1117 y Fu(n)1328 1133 y FB(\000)5 b FC(1,)12 b(pro)q(ducing)120 1190 y(a)k(v)m(alue.)23 b(This)16 b(v)m(alue)h(addresses)f(the)g(table,)g(and)g(the)g(v)m(alue) h(in)g(the)f(table)g(replaces)120 1246 y(the)j(index.)32 b(The)19 b(\015oating-p)q(oin)o(t)g(table)g(v)m(alue)h(is)f(\014rst)g (rounded)g(to)f(a)g(\014xed-p)q(oin)o(t)120 1302 y(v)m(alue)f(with)e (unsp)q(eci\014ed)j(precision.)k(The)15 b(group's)g(t)o(yp)q(e)g (remains)g(color)h(index.)120 1444 y Fz(Stencil)j(Index)e(Lo)q(okup)120 1537 y FC(This)j(step)g(applies)h(only)f(to)e(stencil)j(index)g (groups.)32 b(If)20 b Fr(MAP)p 1217 1537 V 15 w(STENCIL)e FC(is)i(enabled,)120 1594 y(then)h(the)f(index)i(is)e(lo)q(ok)o(ed)h (up)g(in)f(the)h Fr(PIXEL)p 963 1594 V 14 w(MAP)p 1043 1594 V 15 w(S)p 1080 1594 V 16 w(TO)p 1140 1594 V 15 w(S)f FC(table)h(\(otherwise,)g(the)120 1650 y(index)c(is)e(not)g(lo)q (ok)o(ed)g(up\).)20 b(The)15 b(table)g(m)o(ust)g(ha)o(v)o(e)f(2)1058 1634 y Fu(n)1096 1650 y FC(en)o(tries)i(for)e(some)h(in)o(teger)g Fy(n)p FC(,)120 1707 y(and)g(the)g(in)o(teger)h(part)e(of)g(the)h (index)h(is)g(ANDed)f(with)g(2)1121 1690 y Fu(n)1154 1707 y FB(\000)10 b FC(1,)k(pro)q(ducing)i(a)f(v)m(alue.)120 1763 y(This)f(v)m(alue)g(addresses)f(the)g(table,)g(and)g(the)g(v)m (alue)h(in)f(the)g(table)g(replaces)h(the)f(index.)120 1820 y(The)20 b(\015oating-p)q(oin)o(t)f(table)h(v)m(alue)g(is)g (\014rst)f(rounded)g(to)g(a)g(\014xed-p)q(oin)o(t)h(v)m(alue)g(with)120 1876 y(unsp)q(eci\014ed)e(precision.)120 2041 y Fs(3.7)67 b(Bitmaps)120 2150 y FC(Bitmaps)17 b(are)f(rectangles)g(of)g(zeros)g (and)h(ones)f(sp)q(ecifying)i(a)e(particular)h(pattern)f(of)120 2206 y(fragmen)o(ts)d(to)g(b)q(e)i(pro)q(duced.)20 b(Eac)o(h)14 b(of)f(these)h(fragmen)o(ts)f(has)g(the)h(same)g(asso)q(ciated)120 2263 y(data.)20 b(These)15 b(data)g(are)g(those)g(asso)q(ciated)g(with) g(the)h Fv(curr)n(ent)g(r)n(aster)g(p)n(osition)p FC(.)191 2323 y(Bitmaps)f(are)g(sen)o(t)g(using)234 2432 y Fw(void)41 b Fz(Bitmap)p FC(\()i Fw(sizei)20 b Fy(w)q Fw(,)i(sizei)e Fy(h)p Fw(,)j(float)d Fy(x)1200 2439 y Fu(bo)1234 2432 y Fw(,)j(float)d Fy(y)1443 2439 y Fu(bo)1477 2432 y Fw(,)302 2488 y(float)15 b Fy(x)463 2495 y Fu(bi)492 2488 y Fw(,)g(float)f Fy(y)687 2495 y Fu(bi)717 2488 y Fw(,)h(ubyte)f Fv(*data)i FC(\))f Fw(;)p eop %%Page: 84 93 84 92 bop 332 137 a FC(84)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 350 242 1459 2 v 350 1277 2 1035 v 764 317 a 9946231 12034939 1512980 6643957 27365212 37956075 startTexFig 764 317 a %%BeginDocument: pics/bitmap.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-BoldOblique-SHOWISO exch definefont pop /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /pmask16 { <00006666666600000000999999990000 00006666666600000000999999990000> } def /pmask19 { <11112222444488881111222244448888 11112222444488881111222244448888> } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 48 /patchar16 put Encoding 51 /patchar19 put /CharProcs 3 dict def CharProcs begin /.notdef {} def /patchar16 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask16 imagemask } def /patchar19 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask19 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 560 M 416 560 L 416 560 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 176 576 M 176 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 208 576 M 208 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 240 576 M 240 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 272 576 M 272 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 304 576 M 304 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 336 576 M 336 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 368 576 M 368 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 400 576 M 400 192 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 528 M 416 528 L 416 528 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 496 M 416 496 L 416 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 464 M 416 464 L 416 464 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 432 M 416 432 L 416 432 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 400 M 416 400 L 416 400 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 368 M 416 368 L 416 368 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 336 M 416 336 L 416 336 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 304 M 416 304 L 416 304 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 272 M 416 272 L 416 272 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 240 M 416 240 L 416 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 160 208 M 416 208 L 416 208 L stroke grestore gsave matrix currentmatrix [32 0 0 32 224 192] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 160 16.08 240 { 192 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 192] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 160 16.08 240 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 224 224] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 192 16.08 272 { 192 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 224] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 192 16.08 272 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 224 288] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 256 16.08 336 { 192 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 288] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 256 16.08 336 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 224 320] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 288 16.08 368 { 192 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 320] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 288 16.08 368 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 224 352] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 320 16.08 400 { 192 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 352] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 320 16.08 400 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 288 352] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 320 16.08 400 { 256 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 320 352] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 320 16.08 400 { 288 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 384] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 352 16.08 432 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 288 384] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 352 16.08 432 { 256 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 320 384] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 352 16.08 432 { 288 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 352 384] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 352 16.08 432 { 320 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 384 416] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 384 16.08 464 { 352 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 352 416] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 384 16.08 464 { 320 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 320 416] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 384 16.08 464 { 288 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 352 448] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 416 16.08 496 { 320 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 384 448] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 416 16.08 496 { 352 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 352 480] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 448 16.08 528 { 320 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 384 480] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 448 16.08 528 { 352 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 384 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 352 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 352 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 320 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 320 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 288 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 288 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 256 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 224 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 192 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 320 544] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 512 16.08 592 { 288 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 288 544] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 512 16.08 592 { 256 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 256 544] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 512 16.08 592 { 224 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 192 544] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 512 16.08 592 { 160 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 224 544] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 512 16.08 592 { 192 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 160 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 128 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 192 512] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 480 16.08 560 { 160 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 160 480] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 448 16.08 528 { 128 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 192 480] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 448 16.08 528 { 160 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 160 448] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 416 16.08 496 { 128 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [32 0 0 32 192 448] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 416 16.08 496 { 160 exch M (33333) show } for 0 0 0 setrgbcolor 1.000000 setlinewidth gsave stroke grestore grestore gsave matrix currentmatrix [8.94427 0 0 8.94427 240 224] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 1.000000 setlinewidth matrix currentmatrix [8.94427 0 0 8.94427 240 224] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 159 128 translate 180 rotate 1.3 1.3 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 417 128 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 3.000000 setlinewidth newpath 178 128 M 398 128 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 80 191 translate -90 rotate 1.3 1.3 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 80 577 translate 90 rotate 1.3 1.3 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 3.000000 setlinewidth newpath 80 210 M 80 558 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 23 377] concat newpath 0 0 M 0 24 L 53.534 24 L 53.534 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 21 375 M 21 403 L 78.534 403 L 78.534 375 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 23 377] concat /Helvetica-BoldOblique-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (h) 10.998 S /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 10.998 3.91304 M ( = 12) 40.536 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 275 101] concat newpath 0 0 M 0 24 L 46.532 24 L 46.532 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 273 99 M 273 127 L 323.532 127 L 323.532 99 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 275 101] concat /Helvetica-BoldOblique-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.91304 M (w) 14.004 S /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 14.004 3.91304 M ( = 8) 30.528 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 120 225 translate 90 rotate 1.3 1.3 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 3.000000 setlinewidth newpath 120 192 M 120 206 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 241 176 translate 0 rotate 1.3 1.3 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 3.000000 setlinewidth newpath 160 176 M 222 176 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 87 221] concat newpath 0 0 M 0 33 L 74.656 33 L 74.656 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 85 218.913 M 85 256 L 163.656 256 L 163.656 218.913 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 87 221] concat /Helvetica-BoldOblique-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 6.91304 M (y) 10.008 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 10.008 0.913044 M (bo) 17.108 S /Helvetica-BoldOblique-SHOWISO findfont 18 scalefont setfont 27.116 3.91304 M ( ) 5.004 S /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 32.12 3.91304 M (= 1.0) 40.536 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 159 145] concat newpath 0 0 M 0 33 L 79.66 33 L 79.66 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 157 142.913 M 157 180 L 240.66 180 L 240.66 142.913 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 159 145] concat /Helvetica-BoldOblique-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 6.91304 M (x) 10.008 S /Helvetica-BoldOblique-SHOWISO findfont 14 scalefont setfont 10.008 0.913044 M (bo) 17.108 S /Helvetica-BoldOblique-SHOWISO findfont 18 scalefont setfont 27.116 3.91304 M ( ) 5.004 S /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 32.12 3.91304 M ( = 2.5) 45.54 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1198 a Fm(Figure)19 b(3.9.)30 b(A)19 b(bitmap)d(and)j(its)f(asso)q (ciated)h(parameters.)32 b Fh(x)1437 1204 y Ff(bi)1483 1198 y Fm(and)18 b Fh(y)1588 1204 y Ff(bi)1636 1198 y Fm(are)g(not)389 1247 y(sho)o(wn.)p 1807 1277 2 1035 v 350 1279 1459 2 v 332 1450 a Fy(w)g FC(and)e Fy(h)h FC(comprise)h(the)e(in)o(teger)h(width)h(and)f(heigh)o(t)g(of)f(the)h (rectangular)f(bitmap,)332 1507 y(resp)q(ectiv)o(ely)l(.)21 b(\()p Fy(x)637 1514 y Fu(bo)671 1507 y Fy(;)8 b(y)714 1514 y Fu(bo)747 1507 y FC(\))k(giv)o(es)g(the)g(\015oating-p)q(oin)o (t)h Fy(x)f FC(and)g Fy(y)i FC(v)m(alues)f(of)e(the)i(bitmap's)332 1563 y(origin.)22 b(\()p Fy(x)524 1570 y Fu(bi)553 1563 y Fy(;)8 b(y)596 1570 y Fu(bi)625 1563 y FC(\))15 b(giv)o(es)h(the)g (\015oating-p)q(oin)o(t)g Fy(x)g FC(and)g Fy(y)i FC(incremen)o(ts)e (that)f(are)h(added)332 1619 y(to)g(the)h(raster)f(p)q(osition)i(after) e(the)h(bitmap)g(is)h(rasterized.)25 b Fv(data)17 b FC(is)h(a)e(p)q (oin)o(ter)i(to)e(a)332 1676 y(bitmap.)403 1732 y(Lik)o(e)d(a)f(p)q (olygon)i(pattern,)e(a)g(bitmap)h(is)g(unpac)o(k)o(ed)g(from)f(memory)g (according)h(to)332 1789 y(the)f(pro)q(cedure)h(giv)o(en)f(in)h (section)f(3.6.3)e(for)i Fz(Dra)o(wPixels)p FC(;)g(it)g(is)g(as)f(if)i (the)f Fv(width)g FC(and)332 1845 y Fv(height)h FC(passed)g(to)g(that)f (command)g(w)o(ere)h(equal)h(to)e Fy(w)i FC(and)f Fy(h)p FC(,)g(resp)q(ectiv)o(ely)l(,)i(the)d Fv(typ)n(e)332 1902 y FC(w)o(ere)h Fr(BITMAP)p FC(,)f(and)i(the)f Fv(format)h FC(w)o(ere)g Fr(COLOR)p 1117 1902 14 2 v 14 w(INDEX)p FC(.)e(The)i(unpac)o(k)o(ed)g(v)m(alues)g(\(b)q(efore)332 1958 y(an)o(y)c(con)o(v)o(ersion)h(or)f(arithmetic)i(w)o(ould)f(ha)o(v) o(e)f(b)q(een)i(p)q(erformed\))e(are)h(bit)o(wise)g(ANDed)332 2015 y(with)16 b(1)f(to)f(obtain)h(a)g(stipple)i(pattern)e(of)g(zeros)g (and)g(ones.)20 b(See)c(Figure)f(3.9.)403 2071 y(A)h(bitmap)h(sen)o(t)g (using)g Fz(Bitmap)h FC(is)f(rasterized)g(as)f(follo)o(ws.)25 b(First,)16 b(if)h(the)g(cur-)332 2128 y(ren)o(t)e(raster)g(p)q (osition)h(is)g(in)o(v)m(alid)i(\(the)d(v)m(alid)i(bit)f(is)g(reset\),) f(the)g(bitmap)h(is)g(ignored.)332 2184 y(Otherwise,)i(a)e(rectangular) h(arra)o(y)f(of)g(fragmen)o(ts)g(is)h(constructed,)g(with)h(lo)o(w)o (er)e(left)332 2240 y(corner)f(at)730 2297 y(\()p Fy(x)774 2304 y Fu(ll)798 2297 y Fy(;)8 b(y)841 2304 y Fu(ll)864 2297 y FC(\))k(=)h(\()p FB(b)p Fy(x)1006 2304 y Fu(r)q(p)1053 2297 y FB(\000)e Fy(x)1125 2304 y Fu(bo)1159 2297 y FB(c)p Fy(;)d FB(b)p Fy(y)1242 2304 y Fu(r)q(p)1289 2297 y FB(\000)i Fy(y)1356 2304 y Fu(bo)1391 2297 y FB(c)p FC(\))332 2375 y(and)k(upp)q(er)h(righ)o(t)e(corner)g(at)g(\()p Fy(x)891 2382 y Fu(ll)922 2375 y FC(+)7 b Fy(w)q(;)h(y)1041 2382 y Fu(ll)1071 2375 y FC(+)f Fy(h)p FC(\))14 b(where)g Fy(w)g FC(and)g Fy(h)g FC(are)f(the)h(width)g(and)332 2432 y(heigh)o(t)j(of)g(the)g(bitmap,)g(resp)q(ectiv)o(ely)l(.)27 b(F)l(ragmen)o(ts)16 b(in)i(the)f(arra)o(y)e(are)i(pro)q(duced)h(if)332 2488 y(the)f(corresp)q(onding)g(bit)g(in)g(the)f(bitmap)h(is)g(1)f(and) g(not)g(pro)q(duced)i(otherwise.)23 b(The)p eop %%Page: 85 94 85 93 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(85)120 286 y(asso)q(ciated)11 b(data)e(for)h(eac)o(h)g(fragmen)o(t)f(are)h (those)g(asso)q(ciated)h(with)f(the)h(curren)o(t)f(raster)120 343 y(p)q(osition,)j(with)f(texture)f(co)q(ordinates)h Fy(s)p FC(,)g Fy(t)p FC(,)g(and)f Fy(r)h FC(replaced)h(with)f Fy(s=q)r FC(,)f Fy(t=q)r FC(,)h(and)g Fy(r)q(=q)r FC(,)120 399 y(resp)q(ectiv)o(ely)l(.)21 b(If)12 b Fy(q)h FC(is)f(less)g(then)f (or)g(equal)i(to)d(zero,)i(the)f(results)h(are)f(unde\014ned.)21 b(Once)120 456 y(the)16 b(fragmen)o(ts)e(ha)o(v)o(e)g(b)q(een)j(pro)q (duced,)f(the)f(curren)o(t)g(raster)f(p)q(osition)j(is)e(up)q(dated:) 540 558 y(\()p Fy(x)584 565 y Fu(r)q(p)620 558 y Fy(;)8 b(y)663 565 y Fu(r)q(p)699 558 y FC(\))13 b FB( )g FC(\()p Fy(x)832 565 y Fu(r)q(p)878 558 y FC(+)e Fy(x)950 565 y Fu(bi)979 558 y Fy(;)d(y)1022 565 y Fu(r)q(p)1068 558 y FC(+)j Fy(y)1136 565 y Fu(bi)1165 558 y FC(\))p Fy(:)120 661 y FC(The)16 b Fy(z)h FC(and)e Fy(w)h FC(v)m(alues)h(of)e(the)g (curren)o(t)g(raster)f(p)q(osition)i(remain)g(unc)o(hanged.)120 805 y Fs(3.8)67 b(T)-6 b(exturing)120 907 y FC(T)l(exturing)14 b(maps)g(a)f(p)q(ortion)h(of)f(a)g(sp)q(eci\014ed)i(image)f(on)o(to)f (eac)o(h)g(primitiv)o(e)i(for)e(whic)o(h)120 963 y(texturing)19 b(is)g(enabled.)31 b(This)20 b(mapping)f(is)g(accomplished)h(b)o(y)f (using)g(the)g(color)f(of)120 1020 y(an)h(image)g(at)f(the)h(lo)q (cation)h(indicated)h(b)o(y)d(a)h(fragmen)o(t's)e(\()p Fy(s;)8 b(t;)g(r)q FC(\))17 b(co)q(ordinates)i(to)120 1076 y(mo)q(dify)h(the)f(fragmen)o(t's)f(R)o(GBA)h(color)h(\()p Fy(r)f FC(is)h(curren)o(tly)f(ignored\).)33 b(T)l(exturing)19 b(is)120 1133 y(sp)q(eci\014ed)f(only)d(for)g(R)o(GBA)g(mo)q(de;)g(its) h(use)f(in)h(color)g(index)g(mo)q(de)g(is)f(unde\014ned.)191 1189 y(The)k(GL)g(pro)o(vides)g(a)g(means)f(to)g(sp)q(ecify)i(the)f (details)h(of)e(ho)o(w)h(texturing)g(of)f(a)120 1246 y(primitiv)o(e)g(is)f(e\013ected.)24 b(These)17 b(details)g(include)i (sp)q(eci\014cation)f(of)e(the)h(image)f(to)g(b)q(e)120 1302 y(texture)21 b(mapp)q(ed,)j(the)d(means)g(b)o(y)g(whic)o(h)h(the)g (image)f(is)h(\014ltered)g(when)g(applied)120 1358 y(to)f(the)h (primitiv)o(e,)h(and)f(the)f(function)h(that)f(determines)h(what)f(R)o (GBA)h(v)m(alue)g(is)120 1415 y(pro)q(duced)17 b(giv)o(en)e(a)g (fragmen)o(t)f(color)i(and)f(an)g(image)g(v)m(alue.)120 1536 y Fz(T)l(exture)i(Image)h(Sp)q(eci\014cation)120 1622 y FC(The)e(command)234 1716 y Fw(void)33 b Fz(T)l(exImage2D)p FC(\()h Fw(enum)16 b Fv(tar)n(get)p Fw(,)h(int)g Fv(level)p Fw(,)f(int)g Fv(internalfor-)302 1773 y(mat)p Fw(,)g(sizei)e Fv(width)p Fw(,)i(sizei)f Fv(height)p Fw(,)g(int)g Fv(b)n(or)n(der)p Fw(,)g(enum)f Fv(format)p Fw(,)302 1829 y(enum)h Fv(typ)n(e)p Fw(,)g(void)f Fv(*data)j FC(\))d Fw(;)120 1924 y FC(is)19 b(used)g(to)f(sp)q(ecify)i(a)e(t)o(w)o(o-dimensional)h(texture)g (image.)29 b Fv(tar)n(get)19 b FC(m)o(ust)f(b)q(e)h(either)120 1980 y Fr(TEXTURE)p 277 1980 14 2 v 15 w(2D)p FC(,)10 b(or)h Fr(PROXY)p 521 1980 V 15 w(TEXTURE)p 690 1980 V 14 w(2D)g FC(in)i(the)e(sp)q(ecial)j(case)d(discussed)i(in)g(section) f(3.8.3.)120 2037 y Fv(width)p FC(,)i Fv(height)p FC(,)f Fv(format)p FC(,)h Fv(typ)n(e)p FC(,)f(and)g Fv(data)g FC(corresp)q(ond)h(precisely)g(to)e(the)h(corresp)q(ond-)120 2093 y(ing)j(argumen)o(ts)f(to)f Fz(Dra)o(wPixels)h FC(\(refer)f(to)h (section)h(3.6.3\);)d(they)i(sp)q(ecify)i(the)e(im-)120 2149 y(age's)10 b Fv(width)h FC(and)g Fv(height)p FC(,)h(a)e Fv(format)h FC(of)f(the)h(image)g(data,)f(the)h Fv(typ)n(e)g FC(of)f(those)g(data,)h(and)120 2206 y(a)17 b(p)q(oin)o(ter)g(to)g(the) g(image)g(data)f(in)i(memory)l(.)25 b(The)17 b(image)g(is)h(tak)o(en)e (from)g(memory)120 2262 y(exactly)g(as)g(if)g(these)g(argumen)o(ts)e(w) o(ere)i(passed)f(to)g Fz(Dra)o(wPixels)p FC(,)g(but)h(the)f(pro)q(cess) 120 2319 y(stops)h(just)f(b)q(efore)i(\014nal)f(con)o(v)o(ersion.)22 b(Eac)o(h)16 b(R,)g(G,)f(B,)h(and)g(A)g(v)m(alue)h(so)f(generated)120 2375 y(is)j(clamp)q(ed)h(to)e([0)p Fy(;)8 b FC(1].)27 b(\(The)19 b Fv(format)p FC(s)g Fr(STENCIL)p 985 2375 V 14 w(INDEX)e FC(and)i Fr(DEPTH)p 1328 2375 V 15 w(COMPONENT)d FC(are)120 2432 y(not)d(allo)o(w)o(ed.\))19 b(Comp)q(onen)o(ts)13 b(are)f(then)i(selected)g(from)e(the)h(resulting)h(R,)f(G,)f(B,)h(and) 120 2488 y(A)k(v)m(alues)g(to)f(obtain)g(a)h(texture)f(with)g(the)h Fv(b)n(ase)f(internal)h(format)g FC(sp)q(eci\014ed)h(b)o(y)f(\(or)p eop %%Page: 86 95 86 94 bop 332 137 a FC(86)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y FC(deriv)o(ed)18 b(from\))e Fv(internalformat)p FC(.)25 b(T)l(able)17 b(3.7)f(summarizes)h(the)g (mapping)h(of)e(R,)h(G,)332 343 y(B,)g(and)h(A)f(v)m(alues)i(to)e (texture)g(comp)q(onen)o(ts,)g(as)g(a)g(function)i(of)e(the)g(base)h (in)o(ternal)332 399 y(format)d(of)g(the)h(texture)g(image.)22 b Fv(internalformat)16 b FC(ma)o(y)f(b)q(e)h(sp)q(eci\014ed)i(as)e(one) g(of)f(the)332 456 y(six)g(base)f(in)o(ternal)h(format)e(sym)o(b)q (olic)i(constan)o(ts)e(listed)j(in)e(T)l(able)h(3.7,)e(or)h(it)g(ma)o (y)g(b)q(e)332 512 y(sp)q(eci\014ed)20 b(as)e(an)o(y)g(one)g(of)g(the)g Fv(size)n(d)g(internal)h(format)g FC(sym)o(b)q(olic)g(constan)o(ts)e (listed)332 569 y(in)i(T)l(able)h(3.8.)28 b(\(F)l(or)18 b(compatibilit)o(y)i(with)f(the)f(1.0)g(v)o(ersion)g(of)g(the)h(GL,)f Fv(internal-)332 625 y(format)d FC(v)m(alues)h Fr(1)p FC(,)e Fr(2)p FC(,)g Fr(3)p FC(,)g(and)h Fr(4)f FC(are)g(equiv)m(alen)o (t)j(to)c(sym)o(b)q(olic)j(constan)o(ts)e Fr(LUMINANCE)p FC(,)332 682 y Fr(LUMINANCE)p 533 682 14 2 v 14 w(ALPHA)p FC(,)i Fr(RGB)p FC(,)h(and)h Fr(RGBA)f FC(resp)q(ectiv)o(ely)l(.\))29 b(Sp)q(ecifying)20 b(a)d(v)m(alue)i(for)f Fv(inter-)332 738 y(nalformat)g FC(that)f(is)h(not)f(a)g(base)h(in)o(ternal)g (format,)f(a)g(sized)i(in)o(ternal)f(format,)f Fr(1)p FC(,)g Fr(2)p FC(,)332 795 y Fr(3)p FC(,)i(or)f Fr(4)h FC(generates)g(the)f(error)h Fr(INVALID)p 1044 795 V 14 w(VALUE)p FC(.)e(\(F)l(or)h(compatibilit)o(y)i(with)g(the)e(1.0)332 851 y(v)o(ersion)e(of)e(the)i(GL,)e(parameter)h Fv(internalformat)g FC(is)h(t)o(yp)q(e)f Fw(int)p FC(,)f(not)h(t)o(yp)q(e)g Fw(enum)p FC(.\))403 907 y(The)21 b Fv(internal)g(c)n(omp)n(onent)g(r)n (esolution)g FC(is)h(the)f(n)o(um)o(b)q(er)h(of)f(bits)h(allo)q(cated)g (to)332 964 y(eac)o(h)d(v)m(alue)h(in)f(a)g(texture)f(image.)31 b(If)18 b Fv(internalformat)h FC(is)g(sp)q(eci\014ed)i(as)d(a)h(base)f (in-)332 1020 y(ternal)e(format,)e(the)h(GL)h(stores)f(the)g(resulting) i(texture)e(with)h(in)o(ternal)g(comp)q(onen)o(t)332 1077 y(resolutions)j(of)e(its)h(o)o(wn)g(c)o(ho)q(osing.)28 b(If)18 b(a)g(sized)h(in)o(ternal)g(format)e(is)h(sp)q(eci\014ed,)i (the)332 1133 y(mapping)d(of)e(the)h(R,)g(G,)f(B,)h(and)g(A)g(v)m (alues)h(to)f(texture)f(comp)q(onen)o(ts)h(is)h(equiv)m(alen)o(t)332 1190 y(to)e(the)g(mapping)h(of)f(the)g(corresp)q(onding)h(base)f(in)o (ternal)h(format's)e(comp)q(onen)o(ts,)h(as)332 1246 y(sp)q(eci\014ed)i(in)f(T)l(able)f(3.7,)f(and)h(the)g(memory)f(allo)q (cation)i(p)q(er)f(texture)g(comp)q(onen)o(t)g(is)332 1303 y(assigned)g(b)o(y)e(the)h(GL)g(to)g(matc)o(h)f(the)h(allo)q (cations)h(listed)g(in)g(T)l(able)f(3.8)f(as)h(closely)h(as)332 1359 y(p)q(ossible.)22 b(\(The)15 b(de\014nition)i(of)e(closely)i(is)e (left)h(up)g(to)e(the)i(implemen)o(tation.)21 b(Imple-)332 1416 y(men)o(tations)d(are)g(not)f(required)i(to)f(supp)q(ort)g(more)g (than)g(one)g(resolution)h(for)e(eac)o(h)332 1472 y(base)e(in)o(ternal) h(format.\))403 1528 y(A)d(GL)f(implemen)o(tation)j(ma)o(y)d(v)m(ary)g (its)h(allo)q(cation)h(of)f(in)o(ternal)g(comp)q(onen)o(t)g(res-)332 1585 y(olution)f(based)f(on)g(an)o(y)g Fz(T)l(exImage1D)f FC(\(see)h(b)q(elo)o(w\))g(or)g Fz(T)l(exImage2D)f FC(parameter)332 1641 y(\(except)j Fv(tar)n(get)p FC(\),)g(but)g(the)g(allo)q(cation)h (m)o(ust)e(not)g(b)q(e)i(a)f(function)g(of)g(an)o(y)f(other)h(state,) 332 1698 y(and)g(cannot)f(b)q(e)i(c)o(hanged)f(once)g(it)g(is)g (established.)21 b(Allo)q(cations)14 b(m)o(ust)e(b)q(e)h(in)o(v)m (arian)o(t;)332 1754 y(the)20 b(same)f(allo)q(cation)h(m)o(ust)f(b)q(e) h(made)g(eac)o(h)g(time)f(a)g(texture)h(image)f(is)h(sp)q(eci\014ed)332 1811 y(with)15 b(the)g(same)f(parameter)g(v)m(alues.)21 b(These)15 b(allo)q(cation)h(rules)g(also)e(apply)i(to)e(pro)o(xy)332 1867 y(textures,)h(whic)o(h)h(are)f(describ)q(ed)i(in)f(section)f (3.8.3.)403 1924 y(The)h(image)h(itself)g(\(p)q(oin)o(ted)g(to)f(b)o(y) g Fv(data)p FC(\))h(is)g(a)f(sequence)i(of)e(groups)g(of)g(v)m(alues.) 332 1980 y(The)j(\014rst)g(group)g(is)h(the)f(lo)o(w)o(er)g(left)g (corner)g(of)g(the)g(texture)g(image.)31 b(Subsequen)o(t)332 2037 y(groups)13 b(\014ll)h(out)f(ro)o(ws)f(of)g(width)i Fv(width)g FC(from)e(left)h(to)g(righ)o(t;)g Fv(height)g FC(ro)o(ws)f(are)h(stac)o(k)o(ed)332 2093 y(from)18 b(b)q(ottom)h(to)f (top.)32 b(Eac)o(h)18 b(color)i(comp)q(onen)o(t)f(is)h(con)o(v)o(erted) e(\(b)o(y)h(rounding)h(to)332 2149 y(nearest\))e(to)g(a)g(\014xed-p)q (oin)o(t)h(v)m(alue)h(with)e Fy(n)h FC(bits,)g(where)g Fy(n)f FC(is)h(the)f(n)o(um)o(b)q(er)h(of)f(bits)332 2206 y(of)c(storage)f(allo)q(cated)j(to)e(that)f(comp)q(onen)o(t)i(in)g (the)g(image)g(arra)o(y)l(.)j(W)l(e)d(assume)f(that)332 2262 y(the)h(\014xed-p)q(oin)o(t)i(represen)o(tation)e(used)h(represen) o(ts)g(eac)o(h)f(v)m(alue)h Fy(k)q(=)p FC(\(2)1563 2246 y Fu(n)1596 2262 y FB(\000)11 b FC(1\),)j(where)332 2319 y Fy(k)j FB(2)e(f)p FC(0)p Fy(;)8 b FC(1)p Fy(;)g(:)g(:)f(:)t(;)h FC(2)631 2302 y Fu(n)665 2319 y FB(\000)k FC(1)p FB(g)p FC(,)k(as)g Fy(k)i FC(\(e.g.)24 b(1.0)16 b(is)i(represen)o(ted)f(in)h (binary)f(as)g(a)f(string)h(of)332 2375 y(all)f(ones\).)403 2432 y(The)11 b Fv(level)g FC(argumen)o(t)f(to)h Fz(T)l(exImage2D)g FC(is)h(an)f(in)o(teger)g Fv(level-of-detail)g FC(n)o(um)o(b)q(er.)332 2488 y(Lev)o(els)h(of)f(detail)h(are)f(discussed)h(b)q(elo)o(w,)h (under)e Fz(Mipmapping)p FC(.)20 b(The)11 b(main)h(texture)p eop %%Page: 87 96 87 95 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(87)p 233 242 1270 2 v 232 299 2 57 v 258 282 a(Base)15 b(In)o(ternal)h(F)l (ormat)p 707 299 V 48 w(R)o(GBA)g(V)l(alues)p 1035 299 V 50 w(T)l(exture)g(Comp)q(onen)o(ts)p 1502 299 V 233 301 1270 2 v 233 309 V 232 365 2 57 v 258 348 a Fr(ALPHA)p 707 365 V 364 w FC(A)p 1035 365 V 294 w Fy(A)p 1502 365 V 233 367 1270 2 v 232 423 2 57 v 258 406 a Fr(LUMINANCE)p 707 423 V 276 w FC(R)p 1035 423 V 295 w Fy(L)p 1502 423 V 233 425 1270 2 v 232 482 2 57 v 258 465 a Fr(LUMINANCE)p 459 465 14 2 v 14 w(ALPHA)p 707 482 2 57 v 152 w FC(R,A)p 1035 482 V 248 w Fy(L)p FC(,)p Fy(A)p 1502 482 V 233 483 1270 2 v 232 540 2 57 v 258 523 a Fr(INTENSITY)p 707 540 V 276 w FC(R)p 1035 540 V 295 w Fy(I)p 1502 540 V 233 541 1270 2 v 232 598 2 57 v 258 581 a Fr(RGB)p 707 598 V 408 w FC(R,G,B)p 1035 598 V 201 w Fy(R)p FC(,)p Fy(G)p FC(,)p Fy(B)p 1502 598 V 233 599 1270 2 v 232 656 2 57 v 258 639 a Fr(RGBA)p 707 656 V 386 w FC(R,G,B,A)p 1035 656 V 154 w Fy(R)p FC(,)p Fy(G)p FC(,)p Fy(B)r FC(,)p Fy(A)p 1502 656 V 233 658 1270 2 v 120 735 a FC(T)l(able)i(3.7:)23 b(Corresp)q(ondence)c(of)d(texture)h(comp)q(onen)o(ts)h(to)e(pixel)j (group)e(R,)g(G,)g(B,)120 791 y(and)f(A)f(v)m(alues.)21 b(See)16 b(section)f(3.8.5)f(for)g(a)h(description)i(of)e(the)g (texture)g(comp)q(onen)o(ts)120 848 y Fy(R)p FC(,)g Fy(G)p FC(,)g Fy(B)r FC(,)g Fy(A)p FC(,)g Fy(L)p FC(,)g(and)g Fy(I)t FC(.)120 1052 y(image)h(has)g(a)f(lev)o(el)i(of)e(detail)i(n)o (um)o(b)q(er)f(of)f(0.)21 b(If)16 b(a)g(lev)o(el-of-detail)i(less)e (than)g(zero)f(is)120 1108 y(sp)q(eci\014ed,)i(the)f(error)e Fr(INVALID)p 663 1108 14 2 v 14 w(VALUE)g FC(is)i(generated.)191 1173 y(The)i Fv(b)n(or)n(der)g FC(argumen)o(t)e(to)h Fz(T)l(exImage2D)h FC(is)g(a)f(b)q(order)h(width.)28 b(The)18 b(signi\014-)120 1229 y(cance)f(of)f(b)q(orders)g(is)h (describ)q(ed)h(b)q(elo)o(w.)23 b(The)17 b(b)q(order)f(width)h (a\013ects)e(the)i(required)120 1286 y(dimensions)k(of)d(the)h(texture) f(image:)27 b(it)19 b(m)o(ust)f(b)q(e)h(the)g(case)g(that)f Fy(w)1358 1293 y Fu(s)1394 1286 y FC(=)h(2)1471 1269 y Fu(n)1506 1286 y FC(+)13 b(2)p Fy(b)1597 1293 y Fu(s)120 1342 y FC(and)18 b Fy(h)237 1349 y Fu(s)273 1342 y FC(=)f(2)348 1326 y Fu(m)392 1342 y FC(+)12 b(2)p Fy(b)482 1349 y Fu(s)500 1342 y FC(,)18 b(where)g Fy(b)685 1349 y Fu(s)720 1342 y FC(is)h(the)e(sp)q(eci\014ed)j(\(non-negativ)o(e\))e(b)q(order)g (width,)120 1399 y(and)c Fy(w)240 1406 y Fu(s)272 1399 y FC(and)f Fy(h)384 1406 y Fu(s)417 1399 y FC(are)g(the)g(sp)q (eci\014ed)j(image)e(width)g(and)g(heigh)o(t.)20 b(If)13 b Fv(width)i FC(and)e Fv(height)120 1455 y FC(do)g(not)g(satisfy)f (these)i(relationships,)g(then)f(the)g(error)g Fr(INVALID)p 1234 1455 V 14 w(VALUE)f FC(is)h(generated.)120 1512 y(Curren)o(tly)21 b(the)g(maxim)o(um)f(b)q(order)h(width)h Fy(b)940 1519 y Fu(t)974 1512 y FC(is)g(1.)35 b(If)21 b Fy(b)1168 1519 y Fu(s)1207 1512 y FC(is)g(less)g(than)g(zero,)g(or) 120 1568 y(greater)15 b(than)g Fy(b)401 1575 y Fu(t)415 1568 y FC(,)g(then)g(the)h(error)e Fr(INVALID)p 893 1568 V 14 w(VALUE)h FC(is)g(generated.)191 1633 y(The)k(maxim)o(um)f(allo)o (w)o(able)i(width)f(or)f(heigh)o(t)h(of)f(an)g(image)h(is)g(an)g (implemen-)120 1689 y(tation)f(dep)q(enden)o(t)i(function)g(of)e(the)g (lev)o(el-of-detail)j(and)d(in)o(ternal)i(format)d(of)h(the)120 1746 y(resulting)h(image)f(arra)o(y)l(.)26 b(It)18 b(m)o(ust)f(b)q(e)h (at)f(least)h(2)1005 1729 y Fu(k)q FG(\000)p Fu(lod)1111 1746 y FC(+)12 b(2)p Fy(b)1201 1753 y Fu(t)1233 1746 y FC(for)17 b(image)h(arra)o(ys)e(of)120 1802 y(lev)o(el-of-detail)21 b(0)e(through)f Fy(k)q FC(,)h(where)g Fy(k)g FC(is)g(the)g(log)g(base)f (2)h(of)f Fr(MAX)p 1335 1802 V 15 w(TEXTURE)p 1504 1802 V 14 w(SIZE)p FC(,)120 1859 y Fy(l)q(od)e FC(is)h(the)g(lev)o (el-of-detail)i(of)e(the)f(image)h(arra)o(y)l(,)f(and)h Fy(b)1113 1866 y Fu(t)1144 1859 y FC(is)g(the)g(maxim)o(um)f(b)q(order) 120 1915 y(width.)21 b(It)14 b(ma)o(y)f(b)q(e)i(zero)f(for)g(image)g (arra)o(ys)f(of)g(an)o(y)h(lev)o(el-of-detail)j(greater)c(than)h Fy(k)q FC(.)120 1972 y(The)19 b(error)e Fr(INVALID)p 488 1972 V 14 w(VALUE)g FC(is)h(generated)g(if)h(the)f(sp)q(eci\014ed)i (image)e(is)g(to)q(o)f(large)h(to)120 2028 y(b)q(e)e(stored)f(under)h (an)o(y)f(conditions.)22 b(Section)16 b(3.8.3)e(describ)q(es)j(a)e (query)g(mec)o(hanism)120 2085 y(to)g(determine)h(the)g(maxim)o(um)f (dimensions)i(of)e(a)f(texture)h(arra)o(y)f(of)h(a)g(sp)q(eci\014c)i (lev)o(el)120 2141 y(of)h(detail)g(and)g(in)o(ternal)h(format.)26 b(In)18 b(order)f(to)g(allo)o(w)h(the)g(clien)o(t)h(to)e(meaningfully) 120 2198 y(query)g(the)g(maxim)o(um)f(image)h(arra)o(y)e(sizes)i(that)f (are)g(supp)q(orted,)h(an)g(implemen)o(ta-)120 2254 y(tion)e(m)o(ust)f (not)g(allo)o(w)g(an)h(image)f(arra)o(y)f(of)h(lev)o(el)i(one)f(or)e (greater)h(to)g(b)q(e)h(created)f(if)h(a)120 2310 y Fv(c)n(omplete)i FC(set)f(of)g(image)h(arra)o(ys)e(consisten)o(t)i(with)g(the)f (requested)h(arra)o(y)f(could)h(not)120 2367 y(b)q(e)g(supp)q(orted.)24 b(The)17 b(de\014nition)h(of)e(a)g(complete)h(set)f(of)g(image)g(arra)o (ys)f(is)i(pro)o(vided)120 2423 y(b)q(elo)o(w,)f(under)g Fz(Mipmapping)p FC(.)191 2488 y(Another)f(command,)p eop %%Page: 88 97 88 96 bop 332 137 a FC(88)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 332 280 1569 2 v 331 336 2 57 v 357 319 a FC(Sized)p 789 336 V 356 w(Base)p 1160 336 V 297 w Fy(R)p 1283 336 V 88 w(G)p 1406 336 V 86 w(B)p 1530 336 V 91 w(A)p 1653 336 V 91 w(L)p 1776 336 V 96 w(I)p 1899 336 V 331 393 V 357 376 a FC(In)o(ternal)16 b(F)l(ormat)p 789 393 V 140 w(In)o(ternal)g(F)l(ormat)p 1160 393 V 52 w(bits)p 1283 393 V 51 w(bits)p 1406 393 V 50 w(bits)p 1530 393 V 50 w(bits)p 1653 393 V 51 w(bits)p 1776 393 V 50 w(bits)p 1899 393 V 332 394 1569 2 v 332 403 V 331 459 2 57 v 357 442 a Fr(ALPHA4)p 789 459 V 326 w(ALPHA)p 1160 459 V 1283 459 V 1406 459 V 1530 459 V 656 w FC(4)p 1653 459 V 1776 459 V 1899 459 V 332 461 1569 2 v 331 517 2 57 v 357 500 a Fr(ALPHA8)p 789 517 V 326 w(ALPHA)p 1160 517 V 1283 517 V 1406 517 V 1530 517 V 656 w FC(8)p 1653 517 V 1776 517 V 1899 517 V 332 519 1569 2 v 331 575 2 57 v 357 559 a Fr(ALPHA12)p 789 575 V 304 w(ALPHA)p 1160 575 V 1283 575 V 1406 575 V 1530 575 V 644 w FC(12)p 1653 575 V 1776 575 V 1899 575 V 332 577 1569 2 v 331 634 2 57 v 357 617 a Fr(ALPHA16)p 789 634 V 304 w(ALPHA)p 1160 634 V 1283 634 V 1406 634 V 1530 634 V 644 w FC(16)p 1653 634 V 1776 634 V 1899 634 V 332 635 1569 2 v 331 692 2 57 v 357 675 a Fr(LUMINANCE4)p 789 692 V 238 w(LUMINANCE)p 1160 692 V 1283 692 V 1406 692 V 1530 692 V 1653 692 V 691 w FC(4)p 1776 692 V 1899 692 V 332 693 1569 2 v 331 750 2 57 v 357 733 a Fr(LUMINANCE8)p 789 750 V 238 w(LUMINANCE)p 1160 750 V 1283 750 V 1406 750 V 1530 750 V 1653 750 V 691 w FC(8)p 1776 750 V 1899 750 V 332 751 1569 2 v 331 808 2 57 v 357 791 a Fr(LUMINANCE12)p 789 808 V 216 w(LUMINANCE)p 1160 808 V 1283 808 V 1406 808 V 1530 808 V 1653 808 V 680 w FC(12)p 1776 808 V 1899 808 V 332 810 1569 2 v 331 866 2 57 v 357 849 a Fr(LUMINANCE16)p 789 866 V 216 w(LUMINANCE)p 1160 866 V 1283 866 V 1406 866 V 1530 866 V 1653 866 V 680 w FC(16)p 1776 866 V 1899 866 V 332 868 1569 2 v 331 924 2 57 v 357 907 a Fr(LUMINANCE4)p 580 907 14 2 v 14 w(ALPHA4)p 789 924 2 57 v 92 w(LUMINANCE)p 1016 907 14 2 v 14 w(ALPHA)p 1160 924 2 57 v 1283 924 V 1406 924 V 1530 924 V 444 w FC(4)p 1653 924 V 100 w(4)p 1776 924 V 1899 924 V 332 926 1569 2 v 331 982 2 57 v 357 965 a Fr(LUMINANCE6)p 580 965 14 2 v 14 w(ALPHA2)p 789 982 2 57 v 92 w(LUMINANCE)p 1016 965 14 2 v 14 w(ALPHA)p 1160 982 2 57 v 1283 982 V 1406 982 V 1530 982 V 444 w FC(2)p 1653 982 V 100 w(6)p 1776 982 V 1899 982 V 332 984 1569 2 v 331 1040 2 57 v 357 1023 a Fr(LUMINANCE8)p 580 1023 14 2 v 14 w(ALPHA8)p 789 1040 2 57 v 92 w(LUMINANCE)p 1016 1023 14 2 v 14 w(ALPHA)p 1160 1040 2 57 v 1283 1040 V 1406 1040 V 1530 1040 V 444 w FC(8)p 1653 1040 V 100 w(8)p 1776 1040 V 1899 1040 V 332 1042 1569 2 v 331 1099 2 57 v 357 1082 a Fr(LUMINANCE12)p 602 1082 14 2 v 13 w(ALPHA4)p 789 1099 2 57 v 71 w(LUMINANCE)p 1016 1082 14 2 v 14 w(ALPHA)p 1160 1099 2 57 v 1283 1099 V 1406 1099 V 1530 1099 V 444 w FC(4)p 1653 1099 V 89 w(12)p 1776 1099 V 1899 1099 V 332 1100 1569 2 v 331 1157 2 57 v 357 1140 a Fr(LUMINANCE12)p 602 1140 14 2 v 13 w(ALPHA12)p 789 1157 2 57 v 49 w(LUMINANCE)p 1016 1140 14 2 v 14 w(ALPHA)p 1160 1157 2 57 v 1283 1157 V 1406 1157 V 1530 1157 V 432 w FC(12)p 1653 1157 V 78 w(12)p 1776 1157 V 1899 1157 V 332 1158 1569 2 v 331 1215 2 57 v 357 1198 a Fr(LUMINANCE16)p 602 1198 14 2 v 13 w(ALPHA16)p 789 1215 2 57 v 49 w(LUMINANCE)p 1016 1198 14 2 v 14 w(ALPHA)p 1160 1215 2 57 v 1283 1215 V 1406 1215 V 1530 1215 V 432 w FC(16)p 1653 1215 V 78 w(16)p 1776 1215 V 1899 1215 V 332 1216 1569 2 v 331 1273 2 57 v 357 1256 a Fr(INTENSITY4)p 789 1273 V 238 w(INTENSITY)p 1160 1273 V 1283 1273 V 1406 1273 V 1530 1273 V 1653 1273 V 1776 1273 V 814 w FC(4)p 1899 1273 V 332 1275 1569 2 v 331 1331 2 57 v 357 1314 a Fr(INTENSITY8)p 789 1331 V 238 w(INTENSITY)p 1160 1331 V 1283 1331 V 1406 1331 V 1530 1331 V 1653 1331 V 1776 1331 V 814 w FC(8)p 1899 1331 V 332 1333 1569 2 v 331 1389 2 57 v 357 1372 a Fr(INTENSITY12)p 789 1389 V 216 w(INTENSITY)p 1160 1389 V 1283 1389 V 1406 1389 V 1530 1389 V 1653 1389 V 1776 1389 V 803 w FC(12)p 1899 1389 V 332 1391 1569 2 v 331 1447 2 57 v 357 1430 a Fr(INTENSITY16)p 789 1447 V 216 w(INTENSITY)p 1160 1447 V 1283 1447 V 1406 1447 V 1530 1447 V 1653 1447 V 1776 1447 V 803 w FC(16)p 1899 1447 V 332 1449 1569 2 v 331 1505 2 57 v 357 1488 a Fr(R3)p 404 1488 14 2 v 15 w(G3)p 463 1488 V 16 w(B2)p 789 1505 2 57 v 295 w(RGB)p 1160 1505 V 330 w FC(3)p 1283 1505 V 100 w(3)p 1406 1505 V 100 w(2)p 1530 1505 V 1653 1505 V 1776 1505 V 1899 1505 V 332 1507 1569 2 v 331 1563 2 57 v 357 1547 a Fr(RGB4)p 789 1563 V 370 w(RGB)p 1160 1563 V 330 w FC(4)p 1283 1563 V 100 w(4)p 1406 1563 V 100 w(4)p 1530 1563 V 1653 1563 V 1776 1563 V 1899 1563 V 332 1565 1569 2 v 331 1622 2 57 v 357 1605 a Fr(RGB5)p 789 1622 V 370 w(RGB)p 1160 1622 V 330 w FC(5)p 1283 1622 V 100 w(5)p 1406 1622 V 100 w(5)p 1530 1622 V 1653 1622 V 1776 1622 V 1899 1622 V 332 1623 1569 2 v 331 1680 2 57 v 357 1663 a Fr(RGB8)p 789 1680 V 370 w(RGB)p 1160 1680 V 330 w FC(8)p 1283 1680 V 100 w(8)p 1406 1680 V 100 w(8)p 1530 1680 V 1653 1680 V 1776 1680 V 1899 1680 V 332 1681 1569 2 v 331 1738 2 57 v 357 1721 a Fr(RGB10)p 789 1738 V 348 w(RGB)p 1160 1738 V 318 w FC(10)p 1283 1738 V 78 w(10)p 1406 1738 V 77 w(10)p 1530 1738 V 1653 1738 V 1776 1738 V 1899 1738 V 332 1739 1569 2 v 331 1796 2 57 v 357 1779 a Fr(RGB12)p 789 1796 V 348 w(RGB)p 1160 1796 V 318 w FC(12)p 1283 1796 V 78 w(12)p 1406 1796 V 77 w(12)p 1530 1796 V 1653 1796 V 1776 1796 V 1899 1796 V 332 1798 1569 2 v 331 1854 2 57 v 357 1837 a Fr(RGB16)p 789 1854 V 348 w(RGB)p 1160 1854 V 318 w FC(16)p 1283 1854 V 78 w(16)p 1406 1854 V 77 w(16)p 1530 1854 V 1653 1854 V 1776 1854 V 1899 1854 V 332 1856 1569 2 v 331 1912 2 57 v 357 1895 a Fr(RGBA2)p 789 1912 V 348 w(RGBA)p 1160 1912 V 308 w FC(2)p 1283 1912 V 100 w(2)p 1406 1912 V 100 w(2)p 1530 1912 V 101 w(2)p 1653 1912 V 1776 1912 V 1899 1912 V 332 1914 1569 2 v 331 1970 2 57 v 357 1953 a Fr(RGBA4)p 789 1970 V 348 w(RGBA)p 1160 1970 V 308 w FC(4)p 1283 1970 V 100 w(4)p 1406 1970 V 100 w(4)p 1530 1970 V 101 w(4)p 1653 1970 V 1776 1970 V 1899 1970 V 332 1972 1569 2 v 331 2028 2 57 v 357 2011 a Fr(RGB5)p 448 2011 14 2 v 15 w(A1)p 789 2028 2 57 v 311 w(RGBA)p 1160 2028 V 308 w FC(5)p 1283 2028 V 100 w(5)p 1406 2028 V 100 w(5)p 1530 2028 V 101 w(1)p 1653 2028 V 1776 2028 V 1899 2028 V 332 2030 1569 2 v 331 2086 2 57 v 357 2070 a Fr(RGBA8)p 789 2086 V 348 w(RGBA)p 1160 2086 V 308 w FC(8)p 1283 2086 V 100 w(8)p 1406 2086 V 100 w(8)p 1530 2086 V 101 w(8)p 1653 2086 V 1776 2086 V 1899 2086 V 332 2088 1569 2 v 331 2145 2 57 v 357 2128 a Fr(RGB10)p 470 2128 14 2 v 15 w(A2)p 789 2145 2 57 v 289 w(RGBA)p 1160 2145 V 296 w FC(10)p 1283 2145 V 78 w(10)p 1406 2145 V 77 w(10)p 1530 2145 V 89 w(2)p 1653 2145 V 1776 2145 V 1899 2145 V 332 2146 1569 2 v 331 2203 2 57 v 357 2186 a Fr(RGBA12)p 789 2203 V 326 w(RGBA)p 1160 2203 V 296 w FC(12)p 1283 2203 V 78 w(12)p 1406 2203 V 77 w(12)p 1530 2203 V 77 w(12)p 1653 2203 V 1776 2203 V 1899 2203 V 332 2204 1569 2 v 331 2261 2 57 v 357 2244 a Fr(RGBA16)p 789 2261 V 326 w(RGBA)p 1160 2261 V 296 w FC(16)p 1283 2261 V 78 w(16)p 1406 2261 V 77 w(16)p 1530 2261 V 77 w(16)p 1653 2261 V 1776 2261 V 1899 2261 V 332 2262 1569 2 v 332 2340 a(T)l(able)c(3.8:)17 b(Corresp)q(ondence) 12 b(of)f(sized)i(in)o(ternal)f(formats)e(to)h(base)g(in)o(ternal)h (formats,)332 2396 y(and)j Fv(desir)n(e)n(d)g FC(comp)q(onen)o(t)g (resolutions)h(for)f(eac)o(h)g(sized)h(in)o(ternal)g(format.)p eop %%Page: 89 98 89 97 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(89)234 286 y Fw(void)33 b Fz(T)l(exImage1D)p FC(\()h Fw(enum)16 b Fv(tar)n(get)p Fw(,)h(int)g Fv(level)p Fw(,)f(int)g Fv(internalfor-)302 343 y(mat)p Fw(,)24 b(sizei)e Fv(width)p Fw(,)i(int)e Fv(b)n(or)n(der)p Fw(,)i(enum)d Fv(format)p Fw(,)k(enum)c Fv(typ)n(e)p Fw(,)302 399 y(void)15 b Fv(*data)h FC(\))f Fw(;)120 527 y FC(is)21 b(used)h(to)e(sp)q(ecify)i (one-dimensional)h(texture)d(images.)36 b Fv(tar)n(get)21 b FC(m)o(ust)f(b)q(e)h(either)120 583 y Fr(TEXTURE)p 277 583 14 2 v 15 w(1D)15 b FC(or)g Fr(PROXY)p 517 583 V 15 w(TEXTURE)p 686 583 V 14 w(1D)p FC(.)g(\(It)g(is)h Fr(TEXTURE)p 1039 583 V 15 w(1D)f FC(except)h(in)g(the)g(sp)q(ecial)i (case)120 640 y(discussed)e(in)g(section)f(3.8.3.\))i(F)l(or)d(the)g (purp)q(oses)h(of)f(deco)q(ding)i(the)f(texture)f(image,)120 696 y Fz(T)l(exImage1D)22 b FC(is)g(equiv)m(alen)o(t)h(to)e(calling)j Fz(T)l(exImage2D)d FC(with)h(corresp)q(onding)120 753 y(argumen)o(ts)15 b(and)i Fv(height)f FC(of)f(1,)h(except)g(that)f(the) h Fv(height)g FC(of)g(the)g(image)g(is)g(alw)o(a)o(ys)f(1,)120 809 y(regardless)g(of)f(the)h(v)m(alue)h(of)e Fv(b)n(or)n(der)p FC(.)19 b(It)c(m)o(ust)f(b)q(e)h(the)g(case)g(that)e Fy(w)1307 816 y Fu(s)1338 809 y FC(=)g(2)1409 793 y Fu(n)1441 809 y FC(+)c(2)p Fy(b)1528 816 y Fu(s)1560 809 y FC(for)120 865 y(some)16 b(in)o(teger)g Fy(n)f FC(where)h Fy(b)580 872 y Fu(s)614 865 y FC(is)g(the)g(v)m(alue)g(of)g Fv(b)n(or)n(der)f FC(and)h Fy(w)1168 872 y Fu(s)1202 865 y FC(is)g(the)f(v)m(alue)i(of)e Fv(width)p FC(,)120 922 y(or)g(the)g(error)g Fr(INVALID)p 523 922 V 14 w(VALUE)f FC(is)i(generated.)191 987 y(An)g(image)g(with)h (zero)f(heigh)o(t)g(or)g(width)g(\(or)g(zero)g(width,)g(for)f Fz(T)l(exImage1D)p FC(\))120 1043 y(indicates)k(the)e(n)o(ull)i (texture.)25 b(If)17 b(the)h(n)o(ull)g(texture)f(is)h(sp)q(eci\014ed)h (for)d(lev)o(el-of-detail)120 1100 y(zero,)f(it)h(is)f(as)g(if)h (texturing)f(w)o(ere)g(disabled.)191 1165 y(The)21 b(image)g(indicated) h(to)e(the)h(GL)f(b)o(y)h(the)g(image)f(p)q(oin)o(ter)h(is)h(deco)q (ded)g(and)120 1221 y(copied)e(in)o(to)e(the)g(GL's)g(in)o(ternal)h (memory)l(.)28 b(This)19 b(cop)o(ying)g(e\013ectiv)o(ely)g(places)g (the)120 1277 y(deco)q(ded)f(image)e(inside)i(a)e(b)q(order)h(of)e(the) i(maxim)o(um)f(allo)o(w)o(able)h(width)g(\(curren)o(tly)120 1334 y(1\))23 b(whether)f(or)h(not)f(a)h(b)q(order)g(has)f(b)q(een)i (sp)q(eci\014ed)h(\(see)e(Figure)g(3.10\).)41 b(If)23 b(no)120 1390 y(b)q(order)e(or)f(a)g(b)q(order)h(smaller)g(than)f(the)h (maxim)o(um)f(allo)o(w)o(able)h(width)g(has)g(b)q(een)120 1447 y(sp)q(eci\014ed,)c(then)f(the)f(image)g(is)g(still)i(stored)d(as) h(if)g(it)g(w)o(ere)g(surrounded)h(b)o(y)f(a)f(b)q(order)120 1503 y(of)k(the)g(maxim)o(um)g(p)q(ossible)i(width.)30 b(An)o(y)18 b(excess)g(b)q(order)h(\(whic)o(h)f(surrounds)h(the)120 1560 y(sp)q(eci\014ed)24 b(image,)g(including)g(an)o(y)e(b)q(order\))f (is)i(assigned)f(unsp)q(eci\014ed)j(v)m(alues.)41 b(A)120 1616 y(one-dimensional)18 b(texture)d(has)g(a)g(b)q(order)g(only)h(at)f (its)g(left)h(and)f(righ)o(t)g(ends.)191 1681 y(W)l(e)f(shall)h(refer)f (to)g(the)g(\(p)q(ossibly)h(b)q(order)g(augmen)o(ted\))e(deco)q(ded)j (image)e(as)g(the)120 1737 y Fv(textur)n(e)h(arr)n(ay)p FC(.)20 b(A)14 b(t)o(w)o(o-dimensional)g(texture)f(arra)o(y)g(has)g (width)h Fy(w)1301 1744 y Fu(t)1328 1737 y FC(=)f(2)1399 1721 y Fu(n)1429 1737 y FC(+)7 b(2)p Fy(b)1514 1744 y Fu(t)1542 1737 y FC(and)120 1794 y(heigh)o(t)18 b Fy(h)286 1801 y Fu(t)318 1794 y FC(=)f(2)393 1777 y Fu(m)437 1794 y FC(+)12 b(2)p Fy(b)527 1801 y Fu(t)541 1794 y FC(,)18 b(where)g Fy(b)726 1801 y Fu(t)757 1794 y FC(is)g(the)g(maxim)o(um)f (allo)o(w)o(able)h(b)q(order)g(width;)h(a)120 1850 y(one-dimensional)f (texture)d(arra)o(y)f(has)h(width)h Fy(w)974 1857 y Fu(t)1001 1850 y FC(=)d(2)1072 1834 y Fu(n)1105 1850 y FC(+)d(2)p Fy(b)1193 1857 y Fu(t)1223 1850 y FC(and)15 b(heigh)o(t)h Fy(h)1475 1857 y Fu(t)1502 1850 y FC(=)d(1.)191 1915 y(An)f(elemen)o(t)g(\()p Fy(i;)c(j)s FC(\))h(of)i(the)g(texture)h(arra) o(y)e(is)i(called)h(a)e Fv(texel)g FC(\(for)g(a)g(1-dimensional)120 1972 y(texture,)17 b Fy(j)j FC(is)e(irrelev)m(an)o(t\).)26 b(The)18 b Fv(textur)n(e)g(value)f FC(used)h(in)g(texturing)f(a)g (fragmen)o(t)f(is)120 2028 y(determined)22 b(b)o(y)e(that)f(fragmen)o (t's)g(asso)q(ciated)h(\()p Fy(s;)8 b(t)p FC(\))20 b(co)q(ordinates,)h (but)g(ma)o(y)e(not)120 2085 y(corresp)q(ond)d(to)f(an)o(y)f(actual)i (texel.)k(See)c(Figure)f(3.10.)191 2149 y(If)d(the)h Fv(data)g FC(argumen)o(t)e(of)h Fz(T)l(exImage1D)g FC(or)f Fz(T)l(exImage2D)h FC(is)h(a)f(n)o(ull)h(p)q(oin)o(ter)120 2206 y(\(a)i(zero-v)m(alued)h(p)q(oin)o(ter)f(in)h(the)f(C)f(implemen)o (tation\),)i(a)e(one-dimensional)k(or)c(t)o(w)o(o-)120 2262 y(dimensional)21 b(texture)d(arra)o(y)f(is)i(created)f(with)h(the) f(sp)q(eci\014ed)i Fv(tar)n(get)p FC(,)f Fv(level)p FC(,)f Fv(inter-)120 2319 y(nalformat)p FC(,)g Fv(width)p FC(,)g(and)g Fv(height)p FC(,)g(but)f(with)h(unsp)q(eci\014ed)i(image)e(con)o(ten)o (ts.)25 b(In)18 b(this)120 2375 y(case)e(no)g(pixel)i(v)m(alues)f(are)e (accessed)i(in)g(clien)o(t)g(memory)l(,)e(and)h(no)g(pixel)i(pro)q (cessing)120 2432 y(is)j(p)q(erformed.)35 b(Errors)19 b(are)h(generated,)h(ho)o(w)o(ev)o(er,)f(exactly)g(as)g(though)g(the)g Fv(data)120 2488 y FC(p)q(oin)o(ter)c(w)o(ere)f(v)m(alid.)p eop %%Page: 90 99 90 98 bop 332 137 a FC(90)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 350 738 1459 2 v 350 1941 2 1204 v 449 812 a 19892389 13128966 986726 2236579 54664642 37956075 startTexFig 449 812 a %%BeginDocument: pics/teximage.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-BoldOblique-SHOWISO exch definefont pop /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Symbol findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall currentdict end /Symbol-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 224 240 M 288 240 L 288 304 L 224 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 288 240 M 352 240 L 352 304 L 288 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 352 240 M 416 240 L 416 304 L 352 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 416 240 M 480 240 L 480 304 L 416 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 480 240 M 544 240 L 544 304 L 480 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 544 240 M 608 240 L 608 304 L 544 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 608 240 M 672 240 L 672 304 L 608 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 672 240 M 736 240 L 736 304 L 672 304 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 224 304 M 288 304 L 288 368 L 224 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 288 304 M 352 304 L 352 368 L 288 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 352 304 M 416 304 L 416 368 L 352 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 416 304 M 480 304 L 480 368 L 416 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 480 304 M 544 304 L 544 368 L 480 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 544 304 M 608 304 L 608 368 L 544 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 608 304 M 672 304 L 672 368 L 608 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 672 304 M 736 304 L 736 368 L 672 368 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 224 368 M 288 368 L 288 432 L 224 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 288 368 M 352 368 L 352 432 L 288 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 352 368 M 416 368 L 416 432 L 352 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 416 368 M 480 368 L 480 432 L 416 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 480 368 M 544 368 L 544 432 L 480 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 544 368 M 608 368 L 608 432 L 544 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 608 368 M 672 368 L 672 432 L 608 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 672 368 M 736 368 L 736 432 L 672 432 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 224 432 M 288 432 L 288 496 L 224 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 288 432 M 352 432 L 352 496 L 288 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 352 432 M 416 432 L 416 496 L 352 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 416 432 M 480 432 L 480 496 L 416 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 480 432 M 544 432 L 544 496 L 480 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 544 432 M 608 432 L 608 496 L 544 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 608 432 M 672 432 L 672 496 L 608 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 4.000000 setlinewidth newpath 672 432 M 736 432 L 736 496 L 672 496 L closepath stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 736 240 M 800 240 L 800 304 L 736 304 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 736 304 M 800 304 L 800 368 L 736 368 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 736 368 M 800 368 L 800 432 L 736 432 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 736 432 M 800 432 L 800 496 L 736 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 240 M 160 240 L 160 304 L 220 304 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 304 M 160 304 L 160 368 L 220 368 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 368 M 160 368 L 160 432 L 220 432 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 432 M 160 432 L 160 496 L 220 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 160 240 M 160 176 L 224 176 L 224 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 240 M 224 176 L 288 176 L 288 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 288 240 M 288 176 L 352 176 L 352 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 352 240 M 352 176 L 416 176 L 416 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 416 240 M 416 176 L 480 176 L 480 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 480 240 M 480 176 L 544 176 L 544 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 544 240 M 544 176 L 608 176 L 608 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 608 240 M 608 176 L 672 176 L 672 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 672 240 M 672 176 L 736 176 L 736 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 736 240 M 736 176 L 800 176 L 800 240 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 160 496 M 160 560 L 224 560 L 224 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 224 496 M 224 560 L 288 560 L 288 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 288 496 M 288 560 L 352 560 L 352 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 352 496 M 352 560 L 416 560 L 416 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 416 496 M 416 560 L 480 560 L 480 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 480 496 M 480 560 L 544 560 L 544 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 544 496 M 544 560 L 608 560 L 608 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 608 496 M 608 560 L 672 560 L 672 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 672 496 M 672 560 L 736 560 L 736 496 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [4] 0 setdash newpath 736 496 M 736 560 L 800 560 L 800 496 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 479 126] concat newpath 0 0 M 0 31 L 8.672 31 L 8.672 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 477 124 M 477 159 L 489.672 159 L 489.672 124 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 479 126] concat /Helvetica-BoldOblique-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (i) 6.672 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 179 138] concat newpath 0 0 M 0 31 L 29.36 31 L 29.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 177 136 M 177 171 L 210.36 171 L 210.36 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 179 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (-1) 27.36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 251 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 249 136 M 249 171 L 268.344 171 L 268.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 251 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (0) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 315 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 313 136 M 313 171 L 332.344 171 L 332.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 315 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (1) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 379 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 377 136 M 377 171 L 396.344 171 L 396.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 379 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (2) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 443 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 441 136 M 441 171 L 460.344 171 L 460.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 443 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (3) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 507 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 505 136 M 505 171 L 524.344 171 L 524.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 507 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (4) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 571 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 569 136 M 569 171 L 588.344 171 L 588.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 571 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (5) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 635 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 633 136 M 633 171 L 652.344 171 L 652.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 635 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (6) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 699 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 697 136 M 697 171 L 716.344 171 L 716.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 699 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (7) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 763 138] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 761 136 M 761 171 L 780.344 171 L 780.344 136 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 763 138] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (8) 13.344 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 179 96 translate 180 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 468 96 M 193 96 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 777 96 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 496 96 M 763 96 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 475 82] concat newpath 0 0 M 0 31 L 16.664 31 L 16.664 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 473 80 M 473 115 L 493.664 115 L 493.664 80 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 475 82] concat /Helvetica-BoldOblique-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (u) 14.664 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 127 82] concat newpath 0 0 M 0 31 L 49.376 31 L 49.376 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 125 80 M 125 115 L 178.376 115 L 178.376 80 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 127 82] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (-1.0) 47.376 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 795 82] concat newpath 0 0 M 0 31 L 35.36 31 L 35.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 793 80 M 793 115 L 832.36 115 L 832.36 80 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 795 82] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (9.0) 33.36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 207 34] concat newpath 0 0 M 0 31 L 35.36 31 L 35.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 205 32 M 205 67 L 244.36 67 L 244.36 32 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 207 34] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (0.0) 33.36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 731 34] concat newpath 0 0 M 0 31 L 35.36 31 L 35.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 729 32 M 729 67 L 768.36 67 L 768.36 32 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 731 34] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (1.0) 33.36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 475 34] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 473 32 M 473 67 L 492.344 67 L 492.344 32 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 475 34] concat /Helvetica-BoldOblique-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (s) 13.344 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 243 48 translate 180 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 468 48 M 257 48 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 729 48 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 492 48 M 715 48 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 127 190] concat newpath 0 0 M 0 31 L 29.36 31 L 29.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 125 188 M 125 223 L 158.36 223 L 158.36 188 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 127 190] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (-1) 27.36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 143 254] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 252 M 141 287 L 160.344 287 L 160.344 252 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 143 254] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (0) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 143 386] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 384 M 141 419 L 160.344 419 L 160.344 384 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 143 386] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (2) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 143 322] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 320 M 141 355 L 160.344 355 L 160.344 320 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 143 322] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (1) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 143 450] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 448 M 141 483 L 160.344 483 L 160.344 448 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 143 450] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (3) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 143 514] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 512 M 141 547 L 160.344 547 L 160.344 512 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 143 514] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (4) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 127 350] concat newpath 0 0 M 0 31 L 8.672 31 L 8.672 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 125 348 M 125 383 L 137.672 383 L 137.672 348 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 127 350] concat /Helvetica-BoldOblique-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (j) 6.672 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 51 162] concat newpath 0 0 M 0 31 L 49.376 31 L 49.376 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 49 160 M 49 195 L 102.376 195 L 102.376 160 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 51 162] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (-1.0) 47.376 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 67 546] concat newpath 0 0 M 0 31 L 35.36 31 L 35.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 65 544 M 65 579 L 104.36 579 L 104.36 544 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 67 546] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (5.0) 33.36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 75 350] concat newpath 0 0 M 0 31 L 15.344 31 L 15.344 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 73 348 M 73 383 L 92.344 383 L 92.344 348 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 75 350] concat /Helvetica-BoldOblique-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (v) 13.344 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 27 350] concat newpath 0 0 M 0 31 L 9.992 31 L 9.992 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 25 348 M 25 383 L 38.992 383 L 38.992 348 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 27 350] concat /Helvetica-BoldOblique-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (t) 7.992 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 84 195 translate -90 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 84 352 M 84 209 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 84 545 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 84 376 M 84 531 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 15 226] concat newpath 0 0 M 0 31 L 35.36 31 L 35.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 13 224 M 13 259 L 52.36 259 L 52.36 224 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 15 226] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (0.0) 33.36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 15 482] concat newpath 0 0 M 0 31 L 35.36 31 L 35.36 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 13 480 M 13 515 L 52.36 515 L 52.36 480 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 15 482] concat /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 4.13793 M (1.0) 33.36 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 32 259 translate -90 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 32 348 M 32 273 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 32 481 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth newpath 32 380 M 32 467 L stroke grestore gsave matrix currentmatrix [5.65685 0 0 5.65685 436 392] concat newpath 0 0 1 0 360 arc setmatrix 0 0 0 setrgbcolor closepath fill 1.000000 setlinewidth matrix currentmatrix [5.65685 0 0 5.65685 436 392] concat newpath 0 0 1 0 360 arc 0 0 0 setrgbcolor closepath setmatrix stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 437 392 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore gsave 0 setlinejoin 383 392 translate 180 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth [2] 0 setdash newpath 423 392 M 397 392 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 436 393 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore gsave 0 setlinejoin 436 335 translate -90 rotate 1.1 1.1 scale newpath 0 0 M -15 -3 L -15 3 L closepath fill grestore 1.000000 setlinewidth [2] 0 setdash newpath 436 379 M 436 349 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 398 389] concat newpath 0 0 M 0 27 L 17.144 27 L 17.144 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 396 387 M 396 419 L 417.144 419 L 417.144 387 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 398 389] concat /Symbol findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 6 M (a) 15.144 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 443 339] concat newpath 0 0 M 0 27 L 15.176 27 L 15.176 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 441 337 M 441 369 L 460.176 369 L 460.176 337 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 443 339] concat /Symbol findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 6 M (b) 13.176 S setmatrix grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth [12 4] 0 setdash newpath 384 392 M 384 336 L 436 336 L stroke grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1762 a Fm(Figure)13 b(3.10.)j(A)c(texture)i(image)c(and)j(the)f (co)q(ordinates)h(used)h(to)e(access)i(it.)j(This)12 b(is)h(a)389 1812 y(t)o(w)o(o-dimensional)f(texture)k(with)f Fh(n)e Fm(=)g(3)i(and)g Fh(m)e Fm(=)h(2.)20 b(A)15 b(one-dimensional)e (texture)389 1862 y(w)o(ould)i(consist)h(of)f(a)g(single)g(horizon)o (tal)f(strip.)23 b Fh(\013)15 b Fm(and)g Fh(\014)r Fm(,)h(v)n(alues)g (used)g(in)f(blending)389 1912 y(adjacen)o(t)f(texels)h(to)f(obtain)f (a)g(texture)j(v)n(alue,)d(are)h(also)f(sho)o(wn.)p 1807 1941 2 1204 v 350 1943 1459 2 v eop %%Page: 91 100 91 99 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(91)120 286 y Fz(Alternate)18 b(T)l(exture)f(Image)h(Sp)q(eci\014cation)i (Commands)120 372 y FC(T)l(exture)c(images)g(ma)o(y)f(also)h(b)q(e)g (sp)q(eci\014ed)i(using)e(image)g(data)f(tak)o(en)g(directly)i(from)120 429 y(the)f(framebu\013er,)e(and)h(rectangular)g(subregions)h(of)e (existing)i(texture)f(images)g(ma)o(y)120 485 y(b)q(e)h(resp)q (eci\014ed.)191 542 y(The)f(command)234 619 y Fw(void)39 b Fz(Cop)o(yT)l(exImage2D)p FC(\()g Fw(enum)19 b Fv(tar)n(get)p Fw(,)i(int)f Fv(level)p Fw(,)g(enum)f Fv(in-)302 675 y(ternalformat)p Fw(,)24 b(int)e Fv(x)p Fw(,)i(int)e Fv(y)p Fw(,)i(sizei)d Fv(width)p Fw(,)j(sizei)e Fv(height)p Fw(,)302 732 y(int)15 b Fv(b)n(or)n(der)g FC(\))g Fw(;)120 809 y FC(de\014nes)k(a)f(t)o(w)o(o-dimensional)g(texture)g(arra)o(y)f (in)h(exactly)g(the)g(manner)g(of)f Fz(T)l(exIm-)120 866 y(age2D)p FC(,)h(except)f(that)g(the)g(image)g(data)g(are)f(tak)o (en)h(from)g(the)g(framebu\013er)f(rather)120 922 y(than)f(from)f (clien)o(t)i(memory)l(.)j(Curren)o(tly)l(,)c Fv(tar)n(get)f FC(m)o(ust)g(b)q(e)i Fr(TEXTURE)p 1317 922 14 2 v 14 w(2D)p FC(.)e Fv(x)p FC(,)g Fv(y)p FC(,)g Fv(width)p FC(,)120 979 y(and)k Fv(height)f FC(corresp)q(ond)g(precisely)i(to)e (the)g(corresp)q(onding)h(argumen)o(ts)e(to)g Fz(Cop)o(y-)120 1035 y(Pixels)j FC(\(refer)f(to)h(section)g(4.3.3\);)f(they)h(sp)q (ecify)h(the)f(image's)f Fv(width)i FC(and)f Fv(height)p FC(,)120 1091 y(and)d(the)f(lo)o(w)o(er)g(left)h(\()p Fy(x;)8 b(y)r FC(\))14 b(co)q(ordinates)h(of)g(the)h(framebu\013er)f (region)g(to)g(b)q(e)h(copied.)120 1148 y(The)f(image)g(is)f(tak)o(en)g (from)g(the)g(framebu\013er)g(exactly)h(as)f(if)h(these)f(argumen)o(ts) g(w)o(ere)120 1204 y(passed)e(to)f Fz(Cop)o(yPixels)p FC(,)g(with)g(argumen)o(t)g Fv(typ)n(e)h FC(set)f(to)g Fr(COLOR)p FC(,)f(stopping)h(after)g(pixel)120 1261 y(transfer)17 b(pro)q(cessing)h(is)g(complete.)28 b(Subsequen)o(t)18 b(pro)q(cessing)g(is)g(iden)o(tical)i(to)c(that)120 1317 y(describ)q(ed)j(for)c Fz(T)l(exImage2D)p FC(,)h(b)q(eginning)j(with)d (clamping)i(of)e(the)g(R,)h(G,)e(B,)i(and)120 1374 y(A)f(v)m(alues)i (from)d(the)h(resulting)h(pixel)h(groups.)k(P)o(arameters)14 b Fv(level)p FC(,)h Fv(internalformat)p FC(,)120 1430 y(and)h Fv(b)n(or)n(der)f FC(are)g(sp)q(eci\014ed)j(using)e(the)f(same) g(v)m(alues,)h(with)g(the)g(same)f(meanings,)g(as)120 1487 y(the)f(equiv)m(alen)o(t)h(argumen)o(ts)d(of)h Fz(T)l(exImage2D)p FC(,)f(except)i(that)e Fv(internalformat)h FC(ma)o(y)120 1543 y(not)k(b)q(e)h(sp)q(eci\014ed)i(as)c Fr(1)p FC(,)i Fr(2)p FC(,)f Fr(3)p FC(,)g(or)g Fr(4)p FC(.)25 b(An)18 b(in)o(v)m(alid)i(v)m(alue)e(sp)q(eci\014ed)h(for)e Fv(internalfor-)120 1600 y(mat)e FC(generates)f(the)g(error)g Fr(INVALID)p 754 1600 V 14 w(ENUM)p FC(.)f(The)i(constrain)o(ts)e(on)h Fv(width)p FC(,)h Fv(height)p FC(,)g(and)120 1656 y Fv(b)n(or)n(der)h FC(are)e(exactly)i(those)f(for)f(the)i(equiv)m(alen)o(t)h(argumen)o(ts) d(of)h Fz(T)l(exImage2D)p FC(.)191 1712 y(The)g(command)234 1790 y Fw(void)28 b Fz(Cop)o(yT)l(exImage1D)p FC(\()e Fw(enum)14 b Fv(tar)n(get)p Fw(,)g(int)g Fv(level)p Fw(,)f(enum)g Fv(inter-)302 1846 y(nalformat)p Fw(,)i(int)g Fv(x)p Fw(,)g(int)g Fv(y)p Fw(,)g(sizei)g Fv(width)p Fw(,)g(int)g Fv(b)n(or)n(der)g FC(\))g Fw(;)120 1924 y FC(de\014nes)k(a)f (one-dimensional)j(texture)c(arra)o(y)g(in)i(exactly)g(the)f(manner)g (of)f Fz(T)l(exIm-)120 1980 y(age1D)p FC(,)g(except)f(that)f(the)h (image)g(data)g(are)f(tak)o(en)h(from)f(the)h(framebu\013er,)f(rather) 120 2037 y(than)21 b(from)f(clien)o(t)i(memory)l(.)36 b(Curren)o(tly)l(,)22 b Fv(tar)n(get)e FC(m)o(ust)g(b)q(e)i Fr(TEXTURE)p 1377 2037 V 14 w(1D)p FC(.)e(F)l(or)g(the)120 2093 y(purp)q(oses)e(of)e(deco)q(ding)j(the)d(texture)h(image,)g Fz(Cop)o(yT)l(exImage1D)f FC(is)h(equiv)m(alen)o(t)120 2149 y(to)e(calling)h Fz(Cop)o(yT)l(exImage2D)e FC(with)h(corresp)q (onding)h(argumen)o(ts)e(and)h Fv(height)g FC(of)120 2206 y(1,)k(except)g(that)e(the)i Fv(height)g FC(of)f(the)g(image)g(is) h(alw)o(a)o(ys)f(1,)h(regardless)f(of)g(the)h(v)m(alue)120 2262 y(of)14 b Fv(b)n(or)n(der)p FC(.)20 b Fv(level)p FC(,)13 b Fv(internalformat)p FC(,)h(and)g Fv(b)n(or)n(der)h FC(are)f(sp)q(eci\014ed)i(using)f(the)g(same)f(v)m(al-)120 2319 y(ues,)f(with)g(the)f(same)g(meanings,)h(as)e(the)i(equiv)m(alen)o (t)g(argumen)o(ts)f(of)f Fz(T)l(exImage1D)p FC(,)120 2375 y(except)18 b(that)f Fv(internalformat)g FC(ma)o(y)f(not)h(b)q(e)h (sp)q(eci\014ed)i(as)d Fr(1)p FC(,)g Fr(2)p FC(,)g Fr(3)p FC(,)g(or)g Fr(4)p FC(.)26 b(The)17 b(con-)120 2432 y(strain)o(ts)g(on) f Fv(width)i FC(and)f Fv(b)n(or)n(der)g FC(are)f(exactly)h(those)g(of)f (the)h(equiv)m(alen)o(t)i(argumen)o(ts)120 2488 y(of)c Fz(T)l(exImage1D)p FC(.)p eop %%Page: 92 101 92 100 bop 332 137 a FC(92)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)403 286 y FC(F)l(our)14 b(additional)j(commands,)446 378 y Fw(void)31 b Fz(T)l(exSubImage1D)p FC(\()g Fw(enum)15 b Fv(tar)n(get)p Fw(,)h(int)g Fv(level)p Fw(,)f(int)g Fv(xo\013set)p Fw(,)514 435 y(sizei)f Fv(width)p Fw(,)i(enum)f Fv(format)p Fw(,)h(enum)e Fv(typ)n(e)p Fw(,)h(void)g Fv(*data)h FC(\))f Fw(;)446 539 y(void)44 b Fz(T)l(exSubImage2D)p FC(\()g Fw(enum)22 b Fv(tar)n(get)p Fw(,)i(int)e Fv(level)p Fw(,)h(int)f Fv(xo\013-)514 595 y(set)p Fw(,)17 b(int)f Fv(yo\013set)p Fw(,)h(sizei)f Fv(width)p Fw(,)i(sizei)e Fv(height)p Fw(,)i(enum)e Fv(format)p Fw(,)514 652 y(enum)f Fv(typ)n(e)p Fw(,)g(void)f Fv(*data)i FC(\))f Fw(;)446 756 y(void)68 b Fz(Cop)o(yT)l(exSubImage1D)p FC(\()g Fw(enum)34 b Fv(tar)n(get)p Fw(,)39 b(int)34 b Fv(level)p Fw(,)514 812 y(int)15 b Fv(xo\013set)p Fw(,)f(int)h Fv(x)p Fw(,)g(int)g Fv(y)p Fw(,)g(sizei)g Fv(width)g FC(\))g Fw(;)446 916 y(void)68 b Fz(Cop)o(yT)l(exSubImage2D)p FC(\()g Fw(enum)34 b Fv(tar)n(get)p Fw(,)39 b(int)34 b Fv(level)p Fw(,)514 973 y(int)28 b Fv(xo\013set)p Fw(,)k(int)c Fv(yo\013set)p Fw(,)j(int)e Fv(x)p Fw(,)i(int)e Fv(y)p Fw(,)i(sizei)d Fv(width)p Fw(,)514 1029 y(sizei)14 b Fv(height)i FC(\))f Fw(;)332 1133 y FC(resp)q(ecify)24 b(only)g(a)e(rectangular)h(subregion)h(of)e(an)h(existing)h(texture)f (arra)o(y)l(.)42 b(No)332 1190 y(c)o(hange)24 b(is)h(made)f(to)f(the)i Fv(internalformat)p FC(,)g Fv(width)p FC(,)i Fv(height)p FC(,)f(or)e Fv(b)n(or)n(der)g FC(parame-)332 1246 y(ters)18 b(of)f(the)h(sp)q(eci\014ed)i(texture)e(arra)o(y)l(,)f(nor)h(is)h(an)o (y)e(c)o(hange)h(made)g(to)g(texel)g(v)m(alues)332 1303 y(outside)k(the)f(sp)q(eci\014ed)j(subregion.)38 b(Curren)o(tly)22 b(the)f Fv(tar)n(get)g FC(argumen)o(ts)g(of)g Fz(T)l(ex-)332 1359 y(SubImage1D)e FC(and)f Fz(Cop)o(yT)l(exSubImage1D)g FC(m)o(ust)g(b)q(e)h Fr(TEXTURE)p 1586 1359 14 2 v 14 w(1D)p FC(,)f(and)g(the)332 1416 y Fv(tar)n(get)f FC(argumen)o(ts)e(of) h Fz(T)l(exSubImage2D)g FC(and)h Fz(Cop)o(yT)l(exSubImage2D)e FC(m)o(ust)332 1472 y(b)q(e)j Fr(TEXTURE)p 553 1472 V 15 w(2D)p FC(.)e(The)i Fv(level)e FC(parameter)h(of)g(eac)o(h)h (command)f(sp)q(eci\014es)i(the)f(lev)o(el)h(of)332 1528 y(the)d(texture)g(arra)o(y)f(that)g(is)h(mo)q(di\014ed.)24 b(If)16 b Fv(level)f FC(is)i(less)f(than)g(zero)g(or)f(greater)h(than) 332 1585 y(the)k(base)g(2)g(logarithm)g(of)g(the)g(maxim)o(um)g (texture)g(width)h(or)f(heigh)o(t,)h(the)f(error)332 1641 y Fr(INVALID)p 489 1641 V 14 w(VALUE)14 b FC(is)i(generated.)403 1698 y Fz(T)l(exSubImage2D)26 b FC(argumen)o(ts)g Fv(width)p FC(,)k Fv(height)p FC(,)g Fv(format)p FC(,)g Fv(typ)n(e)p FC(,)g(and)d Fv(data)332 1754 y(match)19 b FC(the)g(corresp)q(onding)h (argumen)o(ts)e(to)g Fz(T)l(exImage2D)p FC(,)g(meaning)h(that)f(they) 332 1811 y(are)c(sp)q(eci\014ed)j(using)e(the)g(same)f(v)m(alues,)h (and)g(ha)o(v)o(e)f(the)h(same)f(meanings.)20 b(Lik)o(ewise,)332 1867 y Fz(T)l(exSubImage1D)11 b FC(argumen)o(ts)f Fv(width)p FC(,)i Fv(format)p FC(,)g Fv(typ)n(e)p FC(,)f(and)h Fv(data)f FC(matc)o(h)g(the)g(corre-)332 1924 y(sp)q(onding)k(argumen)o(ts)d(to)h Fz(T)l(exImage1D)p FC(.)g Fz(Cop)o(yT)l(exSubImage2D)f FC(argumen)o(ts)332 1980 y Fv(x)p FC(,)19 b Fv(y)p FC(,)g Fv(width)p FC(,)h(and)f Fv(height)g FC(matc)o(h)f(the)g(corresp)q (onding)i(argumen)o(ts)e(to)f Fz(Cop)o(yT)l(ex-)332 2037 y(Image2D)p FC(.)e(And)h Fz(Cop)o(yT)l(exSubImage1D)e FC(argumen)o(ts)g Fv(x)p FC(,)h Fv(y)p FC(,)g(and)g Fv(width)h FC(matc)o(h)332 2093 y(the)c(corresp)q(onding)h(argumen)o(ts)f(to)f Fz(Cop)o(yT)l(exImage1D)p FC(.)g(Eac)o(h)h(of)f(the)i(four)f Fz(T)l(ex-)332 2149 y(SubImage)k FC(commands)g(in)o(terprets)g(and)g (pro)q(cesses)h(pixel)g(groups)f(in)h(exactly)f(the)332 2206 y(manner)g(of)f(its)g Fz(T)l(exImage)g FC(coun)o(terpart,)g (except)h(that)f(the)g(assignmen)o(t)h(of)f(R,)g(G,)332 2262 y(B,)g(and)g(A)g(pixel)i(group)e(v)m(alues)h(to)e(the)h(texture)g (comp)q(onen)o(ts)g(is)h(con)o(trolled)f(b)o(y)g(the)332 2319 y Fv(internalformat)g FC(of)g(the)g(texture)g(arra)o(y)l(,)f(not)h (b)o(y)g(an)g(argumen)o(t)f(to)h(the)g(command.)403 2375 y(Argumen)o(ts)24 b Fv(xo\013set)g FC(and)h Fv(yo\013set)g FC(of)f Fz(T)l(exSubImage2D)h FC(and)f Fz(Cop)o(yT)l(ex-)332 2432 y(SubImage2D)c FC(sp)q(ecify)h(the)e(lo)o(w)o(er)h(left)g(texel)g (co)q(ordinates)g(of)f(a)g Fv(width)p FC(-wide)j(b)o(y)332 2488 y Fv(height)p FC(-high)e(rectangular)e(subregion)h(of)f(the)h (texture)f(arra)o(y)l(.)28 b(Negativ)o(e)18 b(v)m(alues)i(of)p eop %%Page: 93 102 93 101 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(93)120 286 y Fv(xo\013set)14 b FC(and)f Fv(yo\013set)h FC(corresp)q(ond)g(to)f (the)g(co)q(ordinates)h(of)f(b)q(order)h(texels,)g(addressed)120 343 y(as)j(in)h(Figure)f(3.10.)24 b(T)l(aking)17 b Fy(w)683 350 y Fu(s)701 343 y FC(,)g Fy(h)757 350 y Fu(s)775 343 y FC(,)g(and)g Fy(b)915 350 y Fu(s)950 343 y FC(to)f(b)q(e)i(the)f(sp)q (eci\014ed)i(width,)f(heigh)o(t,)120 399 y(and)d(b)q(order)g(width)g (of)f(the)g(texture)g(arra)o(y)l(,)g(\(not)f(the)i(actual)g(arra)o(y)e (dimensions)j Fy(w)1588 406 y Fu(t)1602 399 y FC(,)120 456 y Fy(h)146 463 y Fu(t)161 456 y FC(,)h(and)f Fy(b)300 463 y Fu(t)314 456 y FC(\),)g(and)h(taking)f Fy(x)p FC(,)g Fy(y)r FC(,)g Fy(w)q FC(,)g(and)g Fy(h)h FC(to)f(b)q(e)g(the)h Fv(xo\013set)p FC(,)f Fv(yo\013set)p FC(,)g Fv(width)p FC(,)h(and)120 512 y Fv(height)12 b FC(argumen)o(t)f(v)m(alues,)i(an)o (y)e(of)f(the)i(follo)o(wing)g(relationships)h(generates)e(the)g(error) 120 569 y Fr(INVALID)p 277 569 14 2 v 15 w(VALUE)p FC(:)788 627 y Fy(x)h(<)h FB(\000)p Fy(b)929 634 y Fu(s)707 716 y Fy(x)e FC(+)f Fy(w)j(>)g(w)916 723 y Fu(s)944 716 y FB(\000)e Fy(b)1010 723 y Fu(s)789 804 y Fy(y)j(<)f FB(\000)p Fy(b)928 811 y Fu(s)715 893 y Fy(y)f FC(+)f Fy(h)i(>)g(h)908 900 y Fu(s)936 893 y FB(\000)e Fy(b)1002 900 y Fu(s)120 979 y FC(\(Recall)h(that)e Fy(w)397 986 y Fu(s)425 979 y FC(and)h Fy(h)535 986 y Fu(s)564 979 y FC(include)i(t)o(wice)d(the)h (sp)q(eci\014ed)h(b)q(order)f(width)g Fy(b)1365 986 y Fu(s)1383 979 y FC(.\))18 b(Coun)o(ting)120 1035 y(from)11 b(zero,)h(the)g Fy(n)p FC(th)g(pixel)i(group)d(is)h(assigned)h(to)e (the)h(texel)g(with)g(\()p Fy(u;)c(v)r FC(\))i(co)q(ordinates)120 1092 y(\()p Fy(i;)e(j)s FC(\),)13 b(where)684 1151 y Fy(i)g FC(=)g Fy(x)d FC(+)g(\()p Fy(n)j FC(mo)q(d)f Fy(w)q FC(\))638 1239 y Fy(j)j FC(=)e Fy(y)f FC(+)e(\()p FB(b)p Fy(n=w)q FB(c)j FC(mo)q(d)f Fy(h)p FC(\))191 1326 y(The)29 b Fv(xo\013set)g FC(argumen)o(t)f(of)h Fz(T)l(exSubImage1D)g FC(and)g Fz(Cop)o(yT)l(exSubIm-)120 1383 y(age1D)19 b FC(sp)q(eci\014es)h(the)f(left)f(texel)h(co)q(ordinate)g(of)f(a)g Fv(width)p FC(-wide)i(subregion)f(of)f(the)120 1439 y(texture)h(arra)o (y)l(.)29 b(Negativ)o(e)19 b(v)m(alues)h(of)e Fv(xo\013set)h FC(corresp)q(ond)g(to)f(the)h(co)q(ordinates)g(of)120 1495 y(b)q(order)c(texels.)20 b(T)l(aking)15 b Fy(w)594 1502 y Fu(s)626 1495 y FC(and)f Fy(b)733 1502 y Fu(s)766 1495 y FC(to)f(b)q(e)i(the)g(sp)q(eci\014ed)h(width)f(and)g(b)q(order)f (width)120 1552 y(of)g(the)h(texture)f(arra)o(y)l(,)f(and)i Fy(x)g FC(and)f Fy(w)h FC(to)f(b)q(e)h(the)g Fv(xo\013set)f FC(and)h Fv(width)g FC(argumen)o(t)f(v)m(al-)120 1608 y(ues,)i(either)f(of)g(the)h(follo)o(wing)f(relationships)i(generates)e (the)g(error)g Fr(INVALID)p 1475 1608 V 14 w(VALUE)p FC(:)788 1713 y Fy(x)d(<)h FB(\000)p Fy(b)929 1720 y Fu(s)707 1820 y Fy(x)e FC(+)f Fy(w)j(>)g(w)916 1827 y Fu(s)944 1820 y FB(\000)e Fy(b)1010 1827 y Fu(s)120 1906 y FC(Coun)o(ting)h(from)f(zero,)g(the)h Fy(n)p FC(th)f(pixel)j(group)d (is)h(assigned)g(to)e(the)i(texel)g(with)g(in)o(ternal)120 1962 y(in)o(teger)k(co)q(ordinates)f([)p Fy(i)p FC(],)f(where)684 2067 y Fy(i)f FC(=)g Fy(x)d FC(+)g(\()p Fy(n)j FC(mo)q(d)f Fy(w)q FC(\))120 2191 y Fz(T)l(exture)17 b(P)o(arameters)120 2278 y FC(V)l(arious)i(parameters)e(con)o(trol)g(ho)o(w)h(the)f (texture)h(arra)o(y)f(is)h(treated)f(when)i(applied)120 2335 y(to)c(a)g(fragmen)o(t.)k(Eac)o(h)c(parameter)f(is)i(set)f(b)o(y)g (calling)234 2432 y Fw(void)76 b Fz(T)l(exP)o(arameter)p FB(f)p Fz(if)p FB(g)p FC(\()f Fw(enum)37 b Fv(tar)n(get)p Fw(,)44 b(enum)38 b Fv(pname)p Fw(,)302 2488 y(T)15 b Fv(p)n(ar)n(am)h FC(\))f Fw(;)p eop %%Page: 94 103 94 102 bop 332 137 a FC(94)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 406 242 1348 2 v 405 299 2 57 v 585 282 a FC(Name)p 878 299 V 225 w(T)o(yp)q(e)p 1072 299 V 71 w(Legal)16 b(V)l(alues)p 1752 299 V 406 301 1348 2 v 406 309 V 405 365 2 57 v 496 348 a Fr(TEXTURE)p 653 348 14 2 v 14 w(WRAP)p 755 348 V 15 w(S)p 878 365 2 57 v 120 w FC(in)o(teger)p 1072 365 V 54 w Fr(CLAMP)p FC(,)e Fr(REPEAT)p 1752 365 V 406 367 1348 2 v 405 423 2 57 v 496 406 a(TEXTURE)p 653 406 14 2 v 14 w(WRAP)p 755 406 V 15 w(T)p 878 423 2 57 v 120 w FC(in)o(teger)p 1072 423 V 54 w Fr(CLAMP)p FC(,)g Fr(REPEAT)p 1752 423 V 406 425 1348 2 v 405 707 2 283 v 452 465 a(TEXTURE)p 609 465 14 2 v 15 w(MIN)p 690 465 V 15 w(FILTER)p 878 707 2 283 v 75 w FC(in)o(teger)p 1072 707 V 54 w Fr(NEAREST)p FC(,)320 b Fr(LINEAR)p FC(,)1098 521 y Fr(NEAREST)p 1255 521 14 2 v 14 w(MIPMAP)p 1401 521 V 15 w(NEAREST)p FC(,)1098 578 y Fr(NEAREST)p 1255 578 V 14 w(MIPMAP)p 1401 578 V 15 w(LINEAR)p FC(,)1098 634 y Fr(LINEAR)p 1233 634 V 14 w(MIPMAP)p 1379 634 V 15 w(NEAREST)p FC(,)1098 690 y Fr(LINEAR)p 1233 690 V 14 w(MIPMAP)p 1379 690 V 15 w(LINEAR)p 1752 707 2 283 v 406 709 1348 2 v 405 765 2 57 v 452 749 a(TEXTURE)p 609 749 14 2 v 15 w(MAG)p 690 749 V 15 w(FILTER)p 878 765 2 57 v 75 w FC(in)o(teger)p 1072 765 V 54 w Fr(NEAREST)p FC(,)13 b Fr(LINEAR)p 1752 765 V 406 767 1348 2 v 405 824 2 57 v 431 807 a(TEXTURE)p 588 807 14 2 v 14 w(BORDER)p 734 807 V 14 w(COLOR)p 878 824 2 57 v 49 w FC(4)i(\015oats)p 1072 824 V 49 w(an)o(y)g(4)g(v)m (alues)h(in)g([0)p Fy(;)8 b FC(1])p 1752 824 V 406 825 1348 2 v 405 882 2 57 v 471 865 a Fr(TEXTURE)p 628 865 14 2 v 14 w(PRIORITY)p 878 882 2 57 v 117 w FC(\015oat)p 1072 882 V 77 w(an)o(y)15 b(v)m(alue)h(in)g([0)p Fy(;)8 b FC(1])p 1752 882 V 406 883 1348 2 v 604 961 a(T)l(able)16 b(3.9:)j(T)l(exture)c(parameters)g(and)g(their)h(v)m(alues.)446 1143 y Fw(void)68 b Fz(T)l(exP)o(arameter)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()f Fw(enum)34 b Fv(tar)n(get)p Fw(,)39 b(enum)34 b Fv(pname)p Fw(,)514 1199 y(T)15 b Fv(p)n(ar)n(ams)g FC(\))g Fw(;)332 1287 y Fv(tar)n(get)k FC(is)h(the)f(target,)f(either)i Fr(TEXTURE)p 1036 1287 14 2 v 14 w(1D)f FC(or)f Fr(TEXTURE)p 1326 1287 V 15 w(2D)p FC(,)g Fv(pname)h FC(is)h(a)e(sym)o(b)q(olic)332 1343 y(constan)o(t)13 b(indicating)j(the)e(parameter)g(to)f(b)q(e)i (set;)e(the)i(p)q(ossible)g(constan)o(ts)e(and)i(cor-)332 1400 y(resp)q(onding)g(parameters)d(are)h(summarized)h(in)g(T)l(able)g (3.9.)19 b(In)14 b(the)f(\014rst)g(form)f(of)h(the)332 1456 y(command,)g Fv(p)n(ar)n(am)g FC(is)h(a)e(v)m(alue)i(to)f(whic)o (h)h(to)e(set)h(a)f(single-v)m(alued)k(parameter;)d(in)g(the)332 1513 y(second)j(form)e(of)h(the)g(command,)g Fv(p)n(ar)n(ams)g FC(is)g(an)g(arra)o(y)f(of)h(parameters)f(whose)h(t)o(yp)q(e)332 1569 y(dep)q(ends)h(on)f(the)g(parameter)f(b)q(eing)i(set.)k(If)15 b(the)g(v)m(alues)h(for)e Fr(TEXTURE)p 1560 1569 V 14 w(BORDER)p 1706 1569 V 15 w(COLOR)332 1626 y FC(are)g(sp)q(eci\014ed)i (as)d(in)o(tegers,)h(the)g(con)o(v)o(ersion)h(for)e(signed)i(in)o (tegers)f(from)f(T)l(able)i(2.6)e(is)332 1682 y(applied)19 b(to)d(con)o(v)o(ert)g(the)g(v)m(alues)i(to)e(\015oating-p)q(oin)o(t.) 25 b(Eac)o(h)17 b(of)f(the)h(four)f(v)m(alues)i(set)332 1738 y(b)o(y)d Fr(TEXTURE)p 552 1738 V 14 w(BORDER)p 698 1738 V 15 w(COLOR)f FC(is)i(clamp)q(ed)g(to)f(lie)h(in)g([0)p Fy(;)8 b FC(1].)332 1857 y Fz(T)l(exture)17 b(W)l(rap)g(Mo)q(des)332 1943 y FC(If)j Fr(TEXTURE)p 539 1943 V 14 w(WRAP)p 641 1943 V 15 w(S)f FC(or)g Fr(TEXTURE)p 911 1943 V 14 w(WRAP)p 1013 1943 V 15 w(T)g FC(is)h(set)f(to)g Fr(REPEAT)p FC(,)f(then)h(the)h (GL)f(ignores)332 2000 y(the)c(in)o(teger)g(part)f(of)h Fy(s)g FC(or)f Fy(t)h FC(co)q(ordinates,)g(resp)q(ectiv)o(ely)l(,)h (using)g(only)f(the)g(fractional)332 2056 y(part.)22 b(\(F)l(or)15 b(a)h(n)o(um)o(b)q(er)g Fy(r)q FC(,)f(the)i(fractional)f (part)f(is)i Fy(r)11 b FB(\000)g(b)p Fy(r)q FB(c)p FC(,)16 b(regardless)g(of)g(the)g(sign)332 2112 y(of)h Fy(r)q FC(;)g(recall)h(that)e(the)h Fv(\015o)n(or)g FC(function)h(truncates)f (to)o(w)o(ards)e FB(\0001)p FC(.\))26 b Fr(CLAMP)16 b FC(causes)h Fy(s)332 2169 y FC(or)h Fy(t)h FC(co)q(ordinates)f(to)g(b)q (e)h(clamp)q(ed)h(to)d(the)i(range)f([0)p Fy(;)8 b FC(1].)27 b(The)18 b(initial)j(state)c(is)i(for)332 2225 y(b)q(oth)c Fy(s)h FC(and)f Fy(t)h FC(b)q(eha)o(vior)g(to)e(b)q(e)i(that)e(giv)o (en)i(b)o(y)f Fr(REPEAT)p FC(.)332 2346 y Fl(3.8.1)55 b(T)-5 b(exture)18 b(Mini\014cation)332 2432 y FC(Applying)k(a)e (texture)f(to)h(a)f(primitiv)o(e)j(implies)g(a)e(mapping)g(from)g (texture)f(image)332 2488 y(space)13 b(to)f(framebu\013er)g(image)g (space.)20 b(In)13 b(general,)g(this)g(mapping)g(in)o(v)o(olv)o(es)g(a) f(recon-)p eop %%Page: 95 104 95 103 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(95)120 286 y(struction)14 b(of)e(the)i(sampled)g(texture)f(image,)g(follo)o(w) o(ed)h(b)o(y)f(a)g(homogeneous)g(w)o(arping)120 343 y(implied)21 b(b)o(y)d(the)g(mapping)h(to)e(framebu\013er)h(space,)g(then)h(a)e (\014ltering,)j(follo)o(w)o(ed)e(\014-)120 399 y(nally)j(b)o(y)f(a)f (resampling)i(of)e(the)g(\014ltered,)j(w)o(arp)q(ed,)e(reconstructed)g (image)f(b)q(efore)120 456 y(applying)e(it)f(to)f(a)g(fragmen)o(t.)20 b(In)c(the)g(GL)f(this)h(mapping)h(is)f(appro)o(ximated)f(b)o(y)h(one) 120 512 y(of)h(t)o(w)o(o)f(simple)j(\014ltering)f(sc)o(hemes.)26 b(One)18 b(of)e(these)i(sc)o(hemes)f(is)h(selected)g(based)g(on)120 569 y(whether)e(the)f(mapping)g(from)g(texture)f(space)i(to)e (framebu\013er)h(space)g(is)g(deemed)h(to)120 625 y Fv(magnify)f FC(or)f Fv(minify)g FC(the)h(texture)f(image.)20 b(The)15 b(c)o(hoice)g(is)g(go)o(v)o(erned)g(b)o(y)f(a)h(scale)g(fac-)120 682 y(tor)e Fy(\032)p FC(\()p Fy(x;)8 b(y)r FC(\))k(and)h Fy(\025)p FC(\()p Fy(x;)8 b(y)r FC(\))j FB(\021)i FC(log)673 693 y Fq(2)692 682 y FC([)p Fy(\032)p FC(\()p Fy(x;)8 b(y)r FC(\)];)j(if)j Fy(\025)p FC(\()p Fy(x;)8 b(y)r FC(\))k(is)i(less)g(than)g(or)f(equal)h(to)f(some)120 738 y(constan)o(t)k(\(the)g(selection)i(of)e(the)h(constan)o(t)f(is)h (describ)q(ed)h(b)q(elo)o(w)f(in)h(section)f(3.8.2\))120 795 y(the)c(texture)g(is)g(said)h(to)e(b)q(e)h(magni\014ed;)h(if)g(it)f (is)g(greater,)f(the)h(texture)f(is)i(mini\014ed.)21 b Fy(\025)120 851 y FC(is)16 b(called)h(the)e Fv(level)g(of)i(detail)p FC(.)191 907 y(Let)f Fy(s)p FC(\()p Fy(x;)8 b(y)r FC(\))14 b(b)q(e)j(the)e(function)i(that)e(asso)q(ciates)g(an)h Fy(s)g FC(texture)f(co)q(ordinate)h(with)120 964 y(eac)o(h)23 b(set)f(of)f(windo)o(w)i(co)q(ordinates)f(\()p Fy(x;)8 b(y)r FC(\))21 b(that)g(lie)j(within)f(a)f(primitiv)o(e;)27 b(de\014ne)120 1020 y Fy(t)p FC(\()p Fy(x;)8 b(y)r FC(\))18 b(analogously)l(.)31 b(Let)19 b Fy(u)p FC(\()p Fy(x;)8 b(y)r FC(\))16 b(=)j(2)843 1004 y Fu(n)866 1020 y Fy(s)p FC(\()p Fy(x;)8 b(y)r FC(\))18 b(and)h Fy(v)r FC(\()p Fy(x;)8 b(y)r FC(\))16 b(=)j(2)1328 1004 y Fu(m)1361 1020 y Fy(t)p FC(\()p Fy(x;)8 b(y)r FC(\))17 b(\(for)h(a)120 1077 y(one-dimensional)h(texture,)c(de\014ne)i Fy(v)r FC(\()p Fy(x;)8 b(y)r FC(\))k FB(\021)i FC(0\).)21 b(F)l(or)15 b(a)h(p)q(olygon,)g Fy(\032)f FC(is)i(giv)o(en)f(at)f(a)120 1133 y(fragmen)o(t)f(with)i(windo)o(w)f(co)q(ordinates)h(\()p Fy(x;)8 b(y)r FC(\))14 b(b)o(y)291 1269 y Fy(\032)f FC(=)g(max)468 1183 y Fi(8)468 1220 y(<)468 1295 y(:)505 1188 y(s)p 546 1188 343 2 v 546 1209 a(\022)582 1238 y Fy(@)s(u)p 582 1258 53 2 v 582 1300 a(@)s(x)639 1209 y Fi(\023)670 1220 y Fq(2)700 1269 y FC(+)745 1209 y Fi(\022)782 1238 y Fy(@)s(v)p 781 1258 V 781 1300 a(@)s(x)838 1209 y Fi(\023)869 1220 y Fq(2)889 1269 y Fy(;)910 1189 y Fi(s)p 950 1189 341 2 v 950 1209 a(\022)986 1238 y Fy(@)s(u)p 986 1258 53 2 v 987 1300 a(@)s(y)1043 1209 y Fi(\023)1074 1220 y Fq(2)1104 1269 y FC(+)1149 1209 y Fi(\022)1185 1238 y Fy(@)s(v)p 1185 1258 51 2 v 1185 1300 a(@)s(y)1240 1209 y Fi(\023)1271 1220 y Fq(2)1291 1183 y Fi(9)1291 1220 y(=)1291 1295 y(;)1499 1269 y FC(\(3.11\))120 1404 y(where)19 b Fy(@)s(u=@)s(x)f FC(indicates)i(the)f(deriv)m(ativ)o(e)h (of)e Fy(u)h FC(with)g(resp)q(ect)g(to)f(windo)o(w)h Fy(x)p FC(,)h(and)120 1461 y(similarly)d(for)e(the)g(other)g(deriv)m (ativ)o(es.)21 b(F)l(or)15 b(a)g(line,)h(the)f(form)o(ula)g(is)356 1591 y Fy(\032)d FC(=)440 1511 y Fi(s)p 481 1511 829 2 v 481 1532 a(\022)517 1560 y Fy(@)s(u)p 517 1581 53 2 v 517 1622 a(@)s(x)574 1591 y FC(\001)p Fy(x)e FC(+)699 1560 y Fy(@)s(u)p 699 1581 V 700 1622 a(@)s(y)756 1591 y FC(\001)p Fy(y)818 1532 y Fi(\023)849 1542 y Fq(2)879 1591 y FC(+)924 1532 y Fi(\022)961 1560 y Fy(@)s(v)p 960 1581 V 960 1622 a(@)s(x)1017 1591 y FC(\001)p Fy(x)g FC(+)1142 1560 y Fy(@)s(v)p 1142 1581 51 2 v 1142 1622 a(@)s(y)1197 1591 y FC(\001)p Fy(y)1259 1532 y Fi(\023)1289 1542 y Fq(2)1309 1532 y Fi(\036)1353 1591 y Fy(l)q(;)118 b FC(\(3.12\))120 1706 y(where)17 b(\001)p Fy(x)d FC(=)g Fy(x)406 1713 y Fq(2)437 1706 y FB(\000)d Fy(x)509 1713 y Fq(1)544 1706 y FC(and)17 b(\001)p Fy(y)f FC(=)e Fy(y)781 1713 y Fq(2)812 1706 y FB(\000)d Fy(y)880 1713 y Fq(1)916 1706 y FC(with)16 b(\()p Fy(x)1064 1713 y Fq(1)1084 1706 y Fy(;)8 b(y)1127 1713 y Fq(1)1146 1706 y FC(\))16 b(and)g(\()p Fy(x)1313 1713 y Fq(2)1332 1706 y Fy(;)8 b(y)1375 1713 y Fq(2)1395 1706 y FC(\))15 b(b)q(eing)j(the)120 1763 y(segmen)o(t's)c(windo)o(w)h(co)q(ordinate)h(endp)q(oin)o(ts)g(and)f Fy(l)e FC(=)1085 1725 y Fi(p)p 1126 1725 221 2 v 1126 1763 a FC(\001)p Fy(x)1190 1750 y Fq(2)1220 1763 y FC(+)e(\001)p Fy(y)1328 1750 y Fq(2)1347 1763 y FC(.)20 b(F)l(or)14 b(a)h(p)q(oin)o(t,)120 1819 y(pixel)i(rectangle,)e(or)g(bitmap,)g Fy(\032)d FB(\021)h FC(1.)191 1876 y(While)19 b(it)e(is)h(generally)h (agreed)e(that)g(equations)g(3.11)g(and)g(3.12)f(giv)o(e)i(the)f(b)q (est)120 1932 y(results)e(when)f(texturing,)g(they)g(are)f(often)h (impractical)h(to)f(implemen)o(t.)20 b(Therefore,)120 1989 y(an)i(implemen)o(tation)i(ma)o(y)d(appro)o(ximate)g(the)i(ideal)g Fy(\032)e FC(with)i(a)e(function)i Fy(f)5 b FC(\()p Fy(x;)j(y)r FC(\))120 2045 y(sub)s(ject)15 b(to)g(these)g(conditions:)176 2129 y(1.)22 b Fy(f)5 b FC(\()p Fy(x;)j(y)r FC(\))13 b(is)i(con)o(tin)o(uous)f(and)h(monotonically)g(increasing)h(in)f(eac)o (h)f(of)g FB(j)p Fy(@)s(u=@)s(x)p FB(j)p FC(,)234 2186 y FB(j)p Fy(@)s(u=@)s(y)r FB(j)p FC(,)f FB(j)p Fy(@)s(v)r(=@)s(x)p FB(j)p FC(,)g(and)i FB(j)p Fy(@)s(v)r(=@)s(y)r FB(j)p FC(,)176 2275 y(2.)22 b(Let)345 2376 y Fy(m)385 2383 y Fu(u)420 2376 y FC(=)13 b(max)560 2316 y Fi(\032)591 2315 y(\014)591 2340 y(\014)591 2365 y(\014)591 2389 y(\014)610 2345 y Fy(@)s(u)p 610 2365 53 2 v 610 2407 a(@)s(x)667 2315 y Fi(\014)667 2340 y(\014)667 2365 y(\014)667 2389 y(\014)689 2376 y Fy(;)710 2315 y Fi(\014)709 2340 y(\014)709 2365 y(\014)709 2389 y(\014)728 2345 y Fy(@)s(u)p 728 2365 V 729 2407 a(@)s(y)786 2315 y Fi(\014)786 2340 y(\014)786 2365 y(\014)786 2389 y(\014)799 2316 y(\033)884 2376 y FC(and)45 b Fy(m)1042 2383 y Fu(v)1075 2376 y FC(=)13 b(max)1215 2316 y Fi(\032)1247 2315 y(\014)1247 2340 y(\014)1247 2365 y(\014)1247 2389 y(\014)1267 2345 y Fy(@)s(v)p 1265 2365 V 1265 2407 a(@)s(x)1323 2315 y Fi(\014)1323 2340 y(\014)1323 2365 y(\014)1323 2389 y(\014)1344 2376 y Fy(;)1365 2315 y Fi(\014)1365 2340 y(\014)1365 2365 y(\014)1365 2389 y(\014)1384 2345 y Fy(@)s(v)p 1383 2365 51 2 v 1383 2407 a(@)s(y)1439 2315 y Fi(\014)1439 2340 y(\014)1439 2365 y(\014)1439 2389 y(\014)1453 2316 y(\033)1491 2376 y Fy(:)234 2488 y FC(Then)j(max)o FB(f)p Fy(m)500 2495 y Fu(u)522 2488 y Fy(;)8 b(m)583 2495 y Fu(v)603 2488 y FB(g)k(\024)h Fy(f)5 b FC(\()p Fy(x;)j(y)r FC(\))k FB(\024)h Fy(m)920 2495 y Fu(u)952 2488 y FC(+)e Fy(m)1038 2495 y Fu(v)1058 2488 y FC(.)p eop %%Page: 96 105 96 104 bop 332 137 a FC(96)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)403 286 y FC(When)13 b Fy(\025)g FC(indicates)i (mini\014cation,)g(the)f(v)m(alue)h(assigned)f(to)e Fr(TEXTURE)p 1603 286 14 2 v 15 w(MIN)p 1684 286 V 15 w(FILTER)332 343 y FC(is)i(used)g(to)f(determine)i(ho)o(w)e(the)g(texture)g(v)m (alue)i(for)e(a)g(fragmen)o(t)g(is)h(selected.)20 b(When)332 399 y Fr(TEXTURE)p 489 399 V 14 w(MIN)p 569 399 V 15 w(FILTER)13 b FC(is)h Fr(NEAREST)p FC(,)e(the)h(texel)i(nearest)e(\(in) h(Manhattan)f(distance\))h(to)332 456 y(that)j(sp)q(eci\014ed)j(b)o(y)e (\()p Fy(s;)8 b(t)p FC(\))18 b(is)g(obtained.)29 b(This)18 b(means)g(the)g(texel)h(at)e(lo)q(cation)i(\()p Fy(i;)8 b(j)s FC(\))332 512 y(b)q(ecomes)16 b(the)f(texture)g(v)m(alue,)h(with) g Fy(i)f FC(giv)o(en)g(b)o(y)853 639 y Fy(i)e FC(=)930 567 y Fi(\()984 611 y FB(b)p Fy(u)p FB(c)p Fy(;)99 b(s)13 b(<)g FC(1)p Fy(;)984 667 y FC(2)1007 651 y Fu(n)1040 667 y FB(\000)d FC(1)p Fy(;)41 b(s)13 b FC(=)g(1)p Fy(:)1710 639 y FC(\(3.13\))332 769 y(\(Recall)21 b(that)d(if)i Fr(TEXTURE)p 796 769 V 14 w(WRAP)p 898 769 V 15 w(S)f FC(is)h Fr(REPEAT)p FC(,)d(then)j(0)f FB(\024)h Fy(s)f(<)h FC(1.\))31 b(Similarly)l(,)22 b Fy(j)g FC(is)332 825 y(found)16 b(as)848 903 y Fy(j)f FC(=)930 831 y Fi(\()984 875 y FB(b)p Fy(v)r FB(c)p Fy(;)112 b(t)13 b(<)g FC(1)p Fy(;)984 931 y FC(2)1007 915 y Fu(m)1050 931 y FB(\000)e FC(1)p Fy(;)41 b(t)13 b FC(=)g(1)p Fy(:)1710 903 y FC(\(3.14\))332 1014 y(F)l(or)e(a)h(one-dimensional)i(texture,)e Fy(j)i FC(is)e(irrelev)m(an)o(t;)i(the)d(texel)i(at)e(lo)q(cation)h Fy(i)g FC(b)q(ecomes)332 1071 y(the)j(texture)g(v)m(alue.)403 1127 y(When)g Fr(TEXTURE)p 692 1127 V 15 w(MIN)p 773 1127 V 15 w(FILTER)f FC(is)i Fr(LINEAR)p FC(,)e(a)h(2)10 b FB(\002)g FC(2)15 b(square)h(of)f(texels)h(is)g(selected.)332 1184 y(This)g(square)f(is)h(obtained)g(b)o(y)f(\014rst)f(computing)541 1311 y Fy(i)557 1318 y Fq(0)589 1311 y FC(=)637 1239 y Fi(\()691 1282 y FB(b)p Fy(u)d FB(\000)f FC(1)p Fy(=)p FC(2)p FB(c)i FC(mo)q(d)h(2)1017 1266 y Fu(n)1040 1282 y Fy(;)41 b Fr(TEXTURE)p 1251 1282 V 15 w(WRAP)p 1354 1282 V 14 w(S)15 b FC(is)h Fr(REPEAT)o Fy(;)691 1339 y FB(b)p Fy(u)11 b FB(\000)f FC(1)p Fy(=)p FC(2)p FB(c)p Fy(;)199 b Fr(TEXTURE)p 1251 1339 V 15 w(WRAP)p 1354 1339 V 14 w(S)15 b FC(is)h Fr(CLAMP)332 1438 y FC(and)542 1516 y Fy(j)561 1523 y Fq(0)593 1516 y FC(=)641 1444 y Fi(\()696 1487 y FB(b)p Fy(v)c FB(\000)e FC(1)p Fy(=)p FC(2)p FB(c)i FC(mo)q(d)h(2)1019 1471 y Fu(m)1052 1487 y Fy(;)41 b Fr(TEXTURE)p 1263 1487 V 14 w(WRAP)p 1365 1487 V 15 w(T)15 b FC(is)h Fr(REPEAT)696 1544 y FB(b)p Fy(v)c FB(\000)e FC(1)p Fy(=)p FC(2)p FB(c)p Fy(;)209 b Fr(TEXTURE)p 1263 1544 V 14 w(WRAP)p 1365 1544 V 15 w(T)15 b FC(is)h Fr(CLAMP)o Fy(:)332 1627 y FC(Then)562 1704 y Fy(i)578 1711 y Fq(1)610 1704 y FC(=)658 1632 y Fi(\()712 1676 y FC(\()p Fy(i)746 1683 y Fq(0)775 1676 y FC(+)11 b(1\))h(mo)q(d)g(2)996 1660 y Fu(n)1020 1676 y Fy(;)41 b Fr(TEXTURE)p 1231 1676 V 14 w(WRAP)p 1333 1676 V 15 w(S)15 b FC(is)h Fr(REPEAT)n Fy(;)712 1732 y(i)728 1739 y Fq(0)758 1732 y FC(+)10 b(1)p Fy(;)235 b Fr(TEXTURE)p 1231 1732 V 14 w(WRAP)p 1333 1732 V 15 w(S)15 b FC(is)h Fr(CLAMP)332 1815 y FC(and)554 1893 y Fy(j)573 1900 y Fq(1)605 1893 y FC(=)653 1821 y Fi(\()707 1865 y FC(\()p Fy(j)744 1872 y Fq(0)773 1865 y FC(+)11 b(1\))h(mo)q(d)h(2)995 1848 y Fu(m)1028 1865 y Fy(;)41 b Fr(TEXTURE)p 1239 1865 V 14 w(WRAP)p 1341 1865 V 15 w(T)15 b FC(is)h Fr(REPEAT)n Fy(;)707 1921 y(j)726 1928 y Fq(0)756 1921 y FC(+)10 b(1)p Fy(;)245 b Fr(TEXTURE)p 1239 1921 V 14 w(WRAP)p 1341 1921 V 15 w(T)15 b FC(is)h Fr(CLAMP)n Fy(:)332 2004 y FC(Let)649 2060 y Fy(\013)d FC(=)g(frac\()p Fy(u)d FB(\000)g FC(1)p Fy(=)p FC(2\))44 b(and)i Fy(\014)15 b FC(=)e(frac)o(\()p Fy(v)f FB(\000)e FC(1)p Fy(=)p FC(2\))332 2141 y(where)i(frac)o(\()p Fy(x)p FC(\))f(denotes)g(the)g(fractional)h(part)e(of)h Fy(x)p FC(.)18 b(Let)12 b Fy(\034)1338 2148 y Fu(ij)1379 2141 y FC(b)q(e)g(the)f(texel)h(at)f(lo)q(cation)332 2197 y(\()p Fy(i;)d(j)s FC(\))13 b(in)j(the)f(texture)g(image.)20 b(Then)c(the)f(texture)g(v)m(alue,)h Fy(\034)k FC(is)c(found)f(as)387 2294 y Fy(\034)j FC(=)13 b(\(1)d FB(\000)g Fy(\013)p FC(\)\(1)f FB(\000)i Fy(\014)r FC(\))p Fy(\034)778 2301 y Fu(i)790 2306 y Fe(0)807 2301 y Fu(j)821 2306 y Fe(0)851 2294 y FC(+)f Fy(\013)p FC(\(1)g FB(\000)g Fy(\014)r FC(\))p Fy(\034)1087 2301 y Fu(i)1099 2306 y Fe(1)1116 2301 y Fu(j)1130 2306 y Fe(0)1160 2294 y FC(+)g(\(1)g FB(\000)g Fy(\013)p FC(\))p Fy(\014)r(\034)1396 2301 y Fu(i)1408 2306 y Fe(0)1426 2301 y Fu(j)1440 2306 y Fe(1)1469 2294 y FC(+)h Fy(\013\014)r(\034)1592 2301 y Fu(i)1604 2306 y Fe(1)1621 2301 y Fu(j)1635 2306 y Fe(1)1710 2294 y FC(\(3.15\))332 2391 y(for)k(a)g(t)o(w)o (o-dimensional)h(texture.)j(F)l(or)c(a)g(one-dimensional)i(texture,)871 2488 y Fy(\034)h FC(=)13 b(\(1)d FB(\000)g Fy(\013)p FC(\))p Fy(\034)1120 2495 y Fu(i)1132 2500 y Fe(0)1161 2488 y FC(+)h Fy(\013\034)1256 2495 y Fu(i)1268 2500 y Fe(1)p eop %%Page: 97 106 97 105 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(97)120 286 y(where)16 b Fy(\034)272 293 y Fu(i)302 286 y FC(indicates)h(the)f (texel)g(at)f(lo)q(cation)h Fy(i)f FC(in)i(the)f(one-dimensional)i (texture.)i(If)120 343 y(an)o(y)15 b(of)g(the)h(selected)g Fy(\034)526 350 y Fu(ij)571 343 y FC(\(or)f Fy(\034)665 350 y Fu(i)679 343 y FC(\))g(in)h(the)f(ab)q(o)o(v)o(e)g(equations)h (refer)f(to)g(a)g(b)q(order)g(texel)120 399 y(with)j Fy(i)e(<)g FB(\000)p Fy(b)364 406 y Fu(s)383 399 y FC(,)h Fy(j)i(<)d FB(\000)p Fy(b)557 406 y Fu(s)575 399 y FC(,)i Fy(i)e FB(\025)g Fy(w)722 406 y Fu(s)752 399 y FB(\000)c Fy(b)819 406 y Fu(s)836 399 y FC(,)18 b(or)f Fy(j)h FB(\025)f Fy(h)1040 406 y Fu(s)1070 399 y FB(\000)12 b Fy(b)1137 406 y Fu(s)1155 399 y FC(,)17 b(then)h(the)f(b)q(order)h(color)120 456 y(giv)o(en)f(b)o(y)g(the)g(curren)o(t)f(setting)h(of)f Fr(TEXTURE)p 905 456 14 2 v 14 w(BORDER)p 1051 456 V 15 w(COLOR)f FC(is)i(used)g(instead)g(of)g(the)120 512 y(unsp)q(eci\014ed)h(v)m(alue)f(or)e(v)m(alues.)22 b(The)15 b(R)o(GBA)h(v)m(alues)h(of)e(the)g Fr(TEXTURE)p 1348 512 V 14 w(BORDER)p 1494 512 V 15 w(COLOR)120 569 y FC(are)c(in)o (terpreted)h(to)f(matc)o(h)g(the)g(texture's)g(in)o(ternal)h(format)e (in)i(a)f(manner)h(consisten)o(t)120 625 y(with)k(T)l(able)g(3.7.)120 757 y Fz(Mipmapping)120 847 y Fr(TEXTURE)p 277 847 V 15 w(MIN)p 358 847 V 15 w(FILTER)h FC(v)m(alues)j Fr(NEAREST)p 815 847 V 14 w(MIPMAP)p 961 847 V 15 w(NEAREST)p FC(,)d Fr(NEAREST)p 1314 847 V 14 w(MIPMAP)p 1460 847 V 14 w(LINEAR)p FC(,)120 903 y Fr(LINEAR)p 255 903 V 15 w(MIPMAP)p 402 903 V 14 w(NEAREST)p FC(,)e(and)h Fr(LINEAR)p 819 903 V 14 w(MIPMAP)p 965 903 V 15 w(LINEAR)f FC(eac)o(h)h(require)h(the)f (use)g(of)g(a)120 960 y Fv(mipmap)p FC(.)k(A)13 b(mipmap)f(is)h(an)f (ordered)h(set)f(of)g(arra)o(ys)f(represen)o(ting)i(the)f(same)g (image;)120 1016 y(eac)o(h)k(arra)o(y)f(has)h(a)g(resolution)g(lo)o(w)o (er)g(than)g(the)g(previous)h(one.)22 b(If)16 b(the)g(texture)g(has)120 1073 y(dimensions)22 b(2)381 1056 y Fu(n)417 1073 y FB(\002)14 b FC(2)489 1056 y Fu(m)522 1073 y FC(,)20 b(then)h(there)e(are)h(max)p FB(f)p Fy(n;)8 b(m)p FB(g)k FC(+)h(1)20 b(mipmap)g(arra)o(ys.)32 b(The)120 1129 y(\014rst)14 b(arra)o(y)e(is)i(the)f(original)i(texture) e(with)h(dimensions)h(2)1125 1113 y Fu(n)1155 1129 y FB(\002)7 b FC(2)1220 1113 y Fu(m)1253 1129 y FC(.)20 b(Eac)o(h)13 b(subsequen)o(t)120 1186 y(arra)o(y)g(has)h(dimensions)i (2)573 1169 y Fq(\()p Fu(k)q FG(\000)p Fq(1\))675 1186 y FB(\002)8 b FC(2)741 1169 y Fq(\()p Fu(l)p FG(\000)p Fq(1\))841 1186 y FC(where)14 b(2)994 1169 y Fu(k)1023 1186 y FB(\002)9 b FC(2)1090 1169 y Fu(l)1117 1186 y FC(are)14 b(the)g(dimensions)i(of)e(the)120 1242 y(previous)g(arra)o(y) l(.)k(This)13 b(is)g(the)g(case)f(as)g(long)h(as)f(b)q(oth)h Fy(k)h(>)f FC(0)f(and)h Fy(l)g(>)g FC(0.)18 b(Once)c(either)120 1298 y Fy(k)g FC(=)f(0)h(or)f Fy(l)g FC(=)g(0,)g(eac)o(h)h(subsequen)o (t)g(arra)o(y)f(has)h(dimension)h(1)7 b FB(\002)g FC(2)1259 1282 y Fq(\()p Fu(l)p FG(\000)p Fq(1\))1359 1298 y FC(or)13 b(2)1436 1282 y Fq(\()p Fu(k)q FG(\000)p Fq(1\))1537 1298 y FB(\002)7 b FC(1,)120 1355 y(resp)q(ectiv)o(ely)l(,)17 b(un)o(til)f(the)g(last)f(arra)o(y)f(is)h(reac)o(hed)h(with)g (dimension)g(1)10 b FB(\002)h FC(1.)191 1413 y(Eac)o(h)16 b(arra)o(y)f(in)i(a)e(mipmap)i(is)g(transmitted)e(to)h(the)g(GL)g (using)h Fz(T)l(exImage2D)120 1470 y FC(or)i Fz(T)l(exImage1D)p FC(;)g(the)h(arra)o(y)e(b)q(eing)j(set)e(is)h(indicated)i(with)d(the)h Fv(level-of-detail)120 1526 y FC(argumen)o(t.)26 b(Lev)o(el-of-detail) 20 b(n)o(um)o(b)q(ers)d(pro)q(ceed)i(from)d(0)h(for)g(the)h(original)g (texture)120 1583 y(arra)o(y)13 b(through)g Fy(p)f FC(=)h(max)p FB(f)p Fy(n;)8 b(m)p FB(g)k FC(with)i(eac)o(h)f(unit)i(increase)f (indicating)i(an)d(arra)o(y)f(of)120 1639 y(half)j(the)g(dimensions)g (of)f(the)h(previous)g(one)f(as)g(already)h(describ)q(ed.)21 b(If)15 b(texturing)f(is)120 1696 y(enabled)h(\(and)d Fr(TEXTURE)p 545 1696 V 15 w(MIN)p 626 1696 V 15 w(FILTER)f FC(is)i(one)g(that)f(requires)i(a)e(mipmap\))h(at)g(the)f(time)120 1752 y(a)17 b(primitiv)o(e)h(is)f(rasterized)g(and)g(if)g(the)f(set)h (of)f(arra)o(ys)f(0)i(through)f Fy(p)g FC(is)i(incomplete,)120 1809 y(based)h(on)f(the)h(dimensions)h(of)e(arra)o(y)f(0,)i(then)f(it)h (is)g(as)f(if)h(texture)f(mapping)h(w)o(ere)120 1865 y(disabled.)h(The)11 b(set)f(of)f(arra)o(ys)g(0)h(through)g Fy(p)g FC(is)h(incomplete)g(if)g(the)f(in)o(ternal)h(formats)e(of)120 1922 y(all)17 b(the)f(mipmap)g(arra)o(ys)e(w)o(ere)i(not)f(sp)q (eci\014ed)j(with)e(the)g(same)f(sym)o(b)q(olic)i(constan)o(t,)120 1978 y(or)i(if)h(the)f(b)q(order)g(widths)h(of)f(the)g(mipmap)h(arra)o (ys)e(are)h(not)g(the)g(same,)g(or)g(if)h(the)120 2034 y(dimensions)13 b(of)d(the)g(mipmap)h(arra)o(ys)f(do)g(not)g(follo)o(w) h(the)f(sequence)i(describ)q(ed)h(ab)q(o)o(v)o(e.)120 2091 y(Arra)o(ys)i(indexed)i(greater)d(than)h Fy(p)g FC(are)g(insigni\014can)o(t.)191 2149 y(The)j(mipmap)h(is)f(used)h(in)g (conjunction)g(with)f(the)h(lev)o(el)g(of)f(detail)h(to)e(appro)o(x-) 120 2206 y(imate)22 b(the)g(application)h(of)e(an)g(appropriately)h (\014ltered)h(texture)e(to)g(a)g(fragmen)o(t.)120 2262 y(Let)h Fy(p)h FC(=)g(max)p FB(f)p Fy(n;)8 b(m)p FB(g)20 b FC(and)h(let)h Fy(c)f FC(b)q(e)h(the)g(v)m(alue)g(of)f Fy(\025)g FC(at)g(whic)o(h)h(the)f(transition)120 2319 y(from)16 b(mini\014cation)i(to)e(magni\014cation)h(o)q(ccurs)g (\(since)g(this)g(discussion)h(p)q(ertains)f(to)120 2375 y(mini\014cation,)24 b(w)o(e)c(are)g(concerned)i(only)f(with)g(v)m (alues)h(of)e Fy(\025)g FC(where)h Fy(\025)g(>)h(c)p FC(\).)35 b(F)l(or)120 2432 y Fr(NEAREST)p 277 2432 V 15 w(MIPMAP)p 424 2432 V 14 w(NEAREST)p FC(,)16 b(if)h Fy(c)f(<)h(\025)f FB(\024)h FC(0)p Fy(:)p FC(5)f(then)i(the)f(mipmap)h (arra)o(y)e(with)i(lev)o(el-)120 2488 y(of-detail)e(of)e(0)g(is)h (selected.)21 b(Otherwise,)15 b(the)f Fy(d)p FC(th)g(mipmap)h(arra)o(y) f(is)h(selected)g(when)p eop %%Page: 98 107 98 106 bop 332 137 a FC(98)750 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y Fy(d)9 b FB(\000)415 269 y Fq(1)p 415 276 18 2 v 415 302 a(2)450 286 y Fy(<)k(\025)f FB(\024)h Fy(d)d FC(+)668 269 y Fq(1)p 668 276 V 668 302 a(2)706 286 y FC(as)k(long)i(as)e(1)e FB(\024)h Fy(d)g FB(\024)g Fy(p)p FC(.)19 b(If)c Fy(\025)e(>)g(p)c FC(+)1353 269 y Fq(1)p 1353 276 V 1353 302 a(2)1375 286 y FC(,)15 b(then)g(the)g Fy(p)p FC(th)g(mipmap)332 343 y(arra)o(y)k(is)j (selected.)37 b(The)21 b(rules)g(for)f Fr(NEAREST)g FC(are)g(then)h (applied)h(to)e(the)h(selected)332 399 y(arra)o(y)l(.)403 456 y(The)13 b(same)h(mipmap)g(arra)o(y)e(selection)j(rules)g(apply)f (for)f Fr(LINEAR)p 1516 456 14 2 v 14 w(MIPMAP)p 1662 456 V 15 w(NEAREST)332 512 y FC(as)18 b(for)g Fr(NEAREST)p 621 512 V 14 w(MIPMAP)p 767 512 V 14 w(NEAREST)p FC(,)f(but)h(the)h (rules)g(for)e Fr(LINEAR)g FC(are)h(applied)j(to)c(the)332 569 y(selected)g(arra)o(y)l(.)403 625 y(F)l(or)12 b Fr(NEAREST)p 639 625 V 14 w(MIPMAP)p 785 625 V 14 w(LINEAR)p FC(,)f(the)i(lev)o(el)h Fy(d)5 b FB(\000)g FC(1)11 b(and)i(the)g(lev)o(el)h Fy(d)e FC(mipmap)h(arra)o(ys)332 682 y(are)d(selected,)i(where)f Fy(d)q FB(\000)q FC(1)h FB(\024)h Fy(\025)f(<)h(d)p FC(,)e(unless)g Fy(\025)h FB(\025)h Fy(p)p FC(,)e(in)g(whic)o(h)h(case)e(the)h Fy(p)p FC(th)f(mipmap)332 738 y(arra)o(y)i(is)i(used)g(for)e(b)q(oth)i (arra)o(ys.)j(The)d(rules)g(for)e Fr(NEAREST)g FC(are)h(then)h(applied) h(to)d(eac)o(h)332 795 y(of)i(these)h(arra)o(ys,)e(yielding)k(t)o(w)o (o)d(corresp)q(onding)h(texture)g(v)m(alues)h Fy(\034)1508 802 y Fu(d)p FG(\000)p Fq(1)1588 795 y FC(and)e Fy(\034)1695 802 y Fu(d)1716 795 y FC(.)19 b(The)332 851 y(\014nal)d(texture)f(v)m (alue)h(is)g(then)g(found)f(as)751 953 y Fy(\034)j FC(=)13 b([1)d FB(\000)g FC(frac\()p Fy(\025)p FC(\)])p Fy(\034)1099 960 y Fu(d)p FG(\000)p Fq(1)1172 953 y FC(+)h(frac)o(\()p Fy(\025)p FC(\))p Fy(\034)1375 960 y Fu(d)1394 953 y Fy(:)332 1056 y Fr(LINEAR)p 467 1056 V 15 w(MIPMAP)p 614 1056 V 14 w(LINEAR)17 b FC(has)g(the)h(same)g(e\013ect)f(as)h Fr(NEAREST)p 1393 1056 V 14 w(MIPMAP)p 1539 1056 V 14 w(LINEAR)f FC(except)332 1112 y(that)f(the)g(rules)h(for)f Fr(LINEAR)f FC(are)h(applied)i(for)e(eac)o(h)h(of)f(the)g(t)o(w)o(o)f (mipmap)i(arra)o(ys)e(to)332 1169 y(generate)g Fy(\034)534 1176 y Fu(d)p FG(\000)p Fq(1)614 1169 y FC(and)h Fy(\034)723 1176 y Fu(d)743 1169 y FC(.)332 1291 y Fl(3.8.2)55 b(T)-5 b(exture)18 b(Magni\014cation)332 1377 y FC(When)h Fy(\025)e FC(indicates)j(magni\014cation,)f(the)f(v)m(alue)h(assigned)g(to)e Fr(TEXTURE)p 1603 1377 V 15 w(MAG)p 1684 1377 V 15 w(FILTER)332 1433 y FC(determines)i(ho)o(w)d(the)i(texture)f(v)m(alue)i(is)f (obtained.)27 b(There)18 b(are)f(t)o(w)o(o)f(p)q(ossible)k(v)m(al-)332 1490 y(ues)14 b(for)g Fr(TEXTURE)p 635 1490 V 14 w(MAG)p 715 1490 V 15 w(FILTER)p FC(:)f Fr(NEAREST)f FC(and)i Fr(LINEAR)p FC(.)f Fr(NEAREST)f FC(b)q(eha)o(v)o(es)i(exactly)h(as)332 1546 y Fr(NEAREST)j FC(for)g Fr(TEXTURE)p 734 1546 V 15 w(MIN)p 815 1546 V 15 w(FILTER)f FC(\(equation)j(3.13)e(and)h(3.14)f (are)h(used\);)i Fr(LINEAR)332 1603 y FC(b)q(eha)o(v)o(es)f(exactly)g (as)f Fr(LINEAR)f FC(for)g Fr(TEXTURE)p 1107 1603 V 15 w(MIN)p 1188 1603 V 15 w(FILTER)g FC(\(equation)h(3.15)g(is)h(used\).) 332 1659 y(The)c(lev)o(el-of-detail)h(0)e(texture)g(arra)o(y)f(is)i (alw)o(a)o(ys)e(used)i(for)e(magni\014cation.)403 1716 y(Finally)l(,)f(there)e(is)h(the)f(c)o(hoice)h(of)f Fy(c)p FC(,)g(the)g(mini\014cation)i(vs.)18 b(magni\014cation)12 b(switc)o(h-)332 1772 y(o)o(v)o(er)g(p)q(oin)o(t.)19 b(If)13 b(the)g(magni\014cation)g(\014lter)g(is)g(giv)o(en)g(b)o(y)g Fr(LINEAR)e FC(and)i(the)g(mini\014cation)332 1828 y(\014lter)g(is)f (giv)o(en)h(b)o(y)f Fr(NEAREST)p 813 1828 V 14 w(MIPMAP)p 959 1828 V 15 w(NEAREST)f FC(or)g Fr(NEAREST)p 1345 1828 V 14 w(MIPMAP)p 1491 1828 V 15 w(LINEAR)p FC(,)f(then)j Fy(c)f FC(=)332 1885 y(0)p Fy(:)p FC(5.)18 b(This)12 b(is)f(done)h(to)f(ensure)h(that)e(a)h(mini\014ed)j(texture)d(do)q(es)g (not)g(app)q(ear)h(\\sharp)q(er")332 1941 y(than)j(a)g(magni\014ed)h (texture.)k(Otherwise)c Fy(c)c FC(=)h(0.)332 2063 y Fl(3.8.3)55 b(T)-5 b(exture)18 b(State)g(and)h(Pro)n(xy)g(State)332 2149 y FC(The)g(state)e(necessary)i(for)e(texture)i(can)f(b)q(e)h (divided)i(in)o(to)d(t)o(w)o(o)f(categories.)29 b(First,)332 2206 y(there)i(are)g(the)g(t)o(w)o(o)f(sets)g(of)h(mipmap)h(arra)o(ys)d (\(one-dimensional)k(and)f(t)o(w)o(o-)332 2262 y(dimensional\))18 b(and)f(their)g(n)o(um)o(b)q(er.)24 b(Eac)o(h)16 b(arra)o(y)f(has)i (asso)q(ciated)f(with)h(it)g(a)f(width)332 2319 y(and)g(heigh)o(t)h (\(t)o(w)o(o-dimensional)f(only\),)g(a)g(b)q(order)g(width,)g(a)g(42-v) m(alued)h(in)o(teger)f(de-)332 2375 y(scribing)i(the)e(in)o(ternal)h (format)e(of)h(the)h(image,)f(and)h(six)g(in)o(teger)f(v)m(alues)i (describing)332 2432 y(the)d(resolutions)h(of)f(eac)o(h)g(of)f(the)i (red,)f(green,)f(blue,)i(alpha,)g(luminance,)g(and)g(in)o(ten-)332 2488 y(sit)o(y)f(comp)q(onen)o(ts)g(of)f(the)h(image.)20 b(Eac)o(h)14 b(initial)j(texture)e(arra)o(y)e(is)i(n)o(ull)i(\(zero)d (width)p eop %%Page: 99 108 99 107 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1059 b FC(99)120 286 y(and)21 b(heigh)o(t,)g(zero)f(b)q(order)g(width,)h(in)o(ternal)g (format)e Fr(1)p FC(,)h(with)g(zero-sized)i(comp)q(o-)120 343 y(nen)o(ts\).)k(Next,)17 b(there)g(are)f(the)i(t)o(w)o(o)d(sets)i (of)g(texture)f(prop)q(erties;)j(eac)o(h)e(consists)g(of)120 399 y(the)c(selected)h(mini\014cation)h(and)e(magni\014cation)h (\014lters,)f(the)g(wrap)f(mo)q(des)h(for)f Fy(s)i FC(and)120 456 y Fy(t)g FC(\(t)o(w)o(o-dimensional)h(only\),)e(the)h Fr(TEXTURE)p 865 456 14 2 v 14 w(BORDER)p 1011 456 V 15 w(COLOR)p FC(,)e(and)i(the)f(priorit)o(y)h(asso)q(ci-)120 512 y(ated)h(with)g(eac)o(h)g(set)f(of)h(prop)q(erties.)20 b(\(See)15 b(subsection)h(3.8.4.\))i(In)d(the)g(initial)i(state,)120 569 y(the)e(v)m(alue)i(assigned)e(to)f Fr(TEXTURE)p 707 569 V 15 w(MIN)p 788 569 V 15 w(FILTER)f FC(is)j Fr(NEAREST)p 1148 569 V 14 w(MIPMAP)p 1294 569 V 14 w(LINEAR)p FC(,)e(and)h(the)120 625 y(v)m(alue)i(for)d Fr(TEXTURE)p 464 625 V 14 w(MAG)p 544 625 V 15 w(FILTER)g FC(is)h Fr(LINEAR)p FC(.)f(Both)h Fy(s)g FC(and)g Fy(t)g FC(wrap)g(mo)q(des)g(are)g(set)f(to)120 682 y Fr(REPEAT)p FC(.)g(The)h(priorit)o(y)h(is)f(set)g(to)g(1.)20 b Fr(TEXTURE)p 922 682 V 14 w(BORDER)p 1068 682 V 14 w(COLOR)14 b FC(is)i(\(0,0,0,0\).)191 738 y(In)k(addition)h(to)e(the)g (one-dimensional)j(and)e(t)o(w)o(o-dimensional)g(sets)g(of)f(image)120 795 y(arra)o(ys,)i(partially)h(instan)o(tiated)f(one-)h(and)f(t)o(w)o (o-dimensional)h(sets)e(of)h(pro)o(xy)f(im-)120 851 y(age)g(arra)o(ys)f (are)g(main)o(tained.)36 b(Eac)o(h)19 b(pro)o(xy)h(arra)o(y)f(includes) j(width,)f(heigh)o(t)g(\(2D)120 907 y(arra)o(ys)h(only\),)i(b)q(order)f (width,)i(and)e(in)o(ternal)g(format)f(state)g(v)m(alues,)j(as)d(w)o (ell)i(as)120 964 y(state)18 b(for)h(the)g(red,)g(green,)h(blue,)h (alpha,)f(luminance,)h(and)e(in)o(tensit)o(y)h(comp)q(onen)o(t)120 1020 y(resolutions.)31 b(Pro)o(xy)17 b(arra)o(ys)g(do)i(not)f(include)j (image)d(data,)g(nor)g(do)h(they)f(include)120 1077 y(texture)h(prop)q (erties.)31 b(When)19 b Fz(T)l(exImage2D)g FC(is)g(executed)h(with)f Fv(tar)n(get)g FC(sp)q(eci\014ed)120 1133 y(as)h Fr(PROXY)p 294 1133 V 15 w(TEXTURE)p 463 1133 V 14 w(2D)p FC(,)f(the)h(t)o(w)o (o-dimensional)h(pro)o(xy)e(state)g(v)m(alues)j(of)d(the)h(sp)q(eci-) 120 1190 y(\014ed)d(lev)o(el-of-detail)h(are)e(recomputed)g(and)g(up)q (dated.)23 b(If)16 b(the)g(texture)f(arra)o(y)g(is)h(to)q(o)120 1246 y(large,)e(no)h(error)e(is)i(generated,)f(but)g(the)h(pro)o(xy)e (width,)i(heigh)o(t,)f(b)q(order)h(width,)g(and)120 1303 y(comp)q(onen)o(t)f(resolutions)h(are)e(set)h(to)f(zero.)19 b(If)14 b(the)g(texture)g(arra)o(y)e(w)o(ould)i(b)q(e)h(accom-)120 1359 y(mo)q(dated)j(b)o(y)f Fz(T)l(exImage2D)g FC(called)i(with)f Fv(tar)n(get)g FC(set)f(to)g Fr(TEXTURE)p 1337 1359 V 14 w(2D)p FC(,)g(the)g(pro)o(xy)120 1416 y(state)j(v)m(alues)h(are)e (set)h(exactly)g(as)g(though)g(the)g(actual)g(image)g(arra)o(y)f(w)o (ere)g(b)q(eing)120 1472 y(sp)q(eci\014ed.)j(No)15 b(pixel)i(data)e (are)g(transferred)f(or)h(pro)q(cessed)h(in)g(either)g(case.)191 1528 y(One-dimensional)23 b(pro)o(xy)c(arra)o(ys)f(are)i(op)q(erated)f (on)h(in)g(the)g(same)g(w)o(a)o(y)e(when)120 1585 y Fz(T)l(exImage1D)d FC(is)h(executed)g(with)g Fv(tar)n(get)f FC(sp)q(eci\014ed)i(as)e Fr(PROXY)p 1241 1585 V 15 w(TEXTURE)p 1410 1585 V 14 w(1D)p FC(.)120 1707 y Fl(3.8.4)56 b(T)-5 b(exture)17 b(Ob)s(jects)120 1792 y FC(In)g(addition)h(to)d(the)i(default)g (textures)f Fr(TEXTURE)p 983 1792 V 14 w(1D)g FC(and)g Fr(TEXTURE)p 1300 1792 V 14 w(2D)p FC(,)g(named)g(one-)120 1849 y(and)c(t)o(w)o(o-dimensional)g(texture)f(ob)s(jects)g(can)h(b)q (e)g(created)f(and)h(op)q(erated)f(up)q(on.)19 b(The)120 1905 y(name)e(space)f(for)g(texture)g(ob)s(jects)g(is)g(the)h(unsigned) h(in)o(tegers,)e(with)g(zero)h(reserv)o(ed)120 1962 y(b)o(y)f(the)f (GL.)191 2018 y(A)f(texture)h(ob)s(ject)f(is)h(created)f(b)o(y)g Fv(binding)g FC(an)g(un)o(used)i(name)e(to)g Fr(TEXTURE)p 1505 2018 V 14 w(1D)g FC(or)120 2075 y Fr(TEXTURE)p 277 2075 V 15 w(2D)p FC(.)g(The)h(binding)j(is)d(e\013ected)h(b)o(y)f (calling)234 2169 y Fw(void)30 b Fz(BindT)l(exture)p FC(\()g Fw(enum)15 b Fv(tar)n(get)p Fw(,)g(uint)f Fv(textur)n(e)i FC(\))f Fw(;)120 2262 y FC(with)d Fv(tar)n(get)f FC(set)g(to)f(the)h (desired)h(texture)f(target)f(\(either)h Fr(TEXTURE)p 1268 2262 V 14 w(1D)g FC(or)f Fr(TEXTURE)p 1542 2262 V 15 w(2D)p FC(\))120 2319 y(and)17 b Fv(textur)n(e)g FC(set)g(to)f(the)g(un)o(used)i(name.)24 b(The)17 b(resulting)h (texture)e(ob)s(ject)g(is)h(a)f(new)120 2375 y(state)e(v)o(ector,)f (comprising)i(all)g(the)g(state)e(v)m(alues)i(listed)h(in)f(subsection) g(3.8.3,)d(set)i(to)120 2432 y(the)k(same)g(initial)i(v)m(alues.)30 b(If)18 b(the)g(new)g(texture)g(ob)s(ject)f(is)i(b)q(ound)g(to)e Fr(TEXTURE)p 1547 2432 V 15 w(1D)p FC(,)120 2488 y(it)k(is)f(and)g (remains)h(a)f(one-dimensional)i(texture)e(un)o(til)h(it)f(is)h (deleted.)36 b(Lik)o(ewise,)p eop %%Page: 100 109 100 108 bop 332 137 a FC(100)727 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y FC(if)18 b(the)g(new)f(texture)g(ob)s (ject)g(is)h(b)q(ound)h(to)d Fr(TEXTURE)p 1257 286 14 2 v 15 w(2D)p FC(,)g(it)i(is)g(and)g(remains)f(a)h(t)o(w)o(o-)332 343 y(dimensional)f(texture)e(un)o(til)i(it)e(is)h(deleted.)403 399 y Fz(BindT)l(exture)j FC(ma)o(y)f(also)g(b)q(e)i(used)f(to)f(bind)i (an)f(existing)g(texture)g(ob)s(ject)f(to)332 456 y(either)c Fr(TEXTURE)p 616 456 V 14 w(1D)e FC(or)h Fr(TEXTURE)p 894 456 V 14 w(2D)p FC(.)f(The)h(error)f Fr(INVALID)p 1331 456 V 15 w(OPERATION)f FC(is)i(generated)g(if)332 512 y(an)h(attempt)f(is)h(made)g(to)f(bind)i(a)e(one-dimensional)j (texture)e(ob)s(ject)f(to)g Fr(TEXTURE)p 1759 512 V 14 w(2D)p FC(,)332 569 y(or)20 b(to)f(bind)i(a)f(t)o(w)o(o-dimensional)h (texture)e(ob)s(ject)h(to)f Fr(TEXTURE)p 1467 569 V 14 w(1D)p FC(.)g(If)i(the)f(bind)h(is)332 625 y(successful)c(no)f(c)o (hange)g(is)h(made)f(to)f(the)h(state)g(of)f(the)h(b)q(ound)h(texture)f (ob)s(ject,)f(and)332 682 y(an)o(y)g(previous)h(binding)h(to)e Fv(tar)n(get)g FC(is)h(brok)o(en.)403 738 y(While)h(a)f(texture)g(ob)s (ject)g(is)h(b)q(ound,)g(GL)f(op)q(erations)g(on)h(the)f(target)f(to)h (whic)o(h)332 795 y(it)j(is)g(b)q(ound)h(a\013ect)e(the)h(b)q(ound)h (ob)s(ject,)e(and)h(queries)h(of)e(the)h(target)e(to)i(whic)o(h)g(it) 332 851 y(is)i(b)q(ound)g(return)f(state)g(from)f(the)i(b)q(ound)g(ob)s (ject.)35 b(If)20 b(texture)g(mapping)h(of)f(the)332 907 y(dimensionalit)o(y)e(of)e(the)h(target)d(to)i(whic)o(h)h(a)f (texture)g(ob)s(ject)g(is)g(b)q(ound)i(is)e(enabled,)332 964 y(the)f(state)g(of)g(the)g(b)q(ound)h(texture)f(ob)s(ject)g (directs)g(the)h(texturing)f(op)q(eration.)403 1020 y(In)g(the)f (initial)i(state)e Fr(TEXTURE)p 934 1020 V 14 w(1D)g FC(and)h Fr(TEXTURE)p 1248 1020 V 14 w(2D)f FC(ha)o(v)o(e)g (one-dimensional)i(and)332 1077 y(t)o(w)o(o-dimensional)i(texture)f (state)f(v)o(ectors)h(asso)q(ciated)g(with)h(them.)25 b(In)18 b(order)f(that)332 1133 y(access)h(to)e(these)i(initial)h (textures)e(not)g(b)q(e)h(lost,)f(they)h(are)f(treated)f(as)h(texture)g (ob-)332 1190 y(jects)e(whose)g(names)g(are)g(b)q(oth)g(0.)20 b(The)15 b(initial)i(one-dimensional)h(texture)d(is)g(there-)332 1246 y(fore)20 b(op)q(erated)g(up)q(on,)i(queried,)h(and)d(applied)i (as)e Fr(TEXTURE)p 1409 1246 V 14 w(1D)g FC(while)i(0)e(is)g(b)q(ound) 332 1303 y(to)k Fr(TEXTURE)p 554 1303 V 14 w(1D)p FC(.)g(Lik)o(ewise,) 29 b(the)24 b(initial)j(t)o(w)o(o-dimensional)f(texture)e(is)i (therefore)332 1359 y(op)q(erated)d(up)q(on,)j(queried,)g(and)e (applied)h(as)d Fr(TEXTURE)p 1333 1359 V 15 w(2D)h FC(while)h(0)f(is)h (b)q(ound)g(to)332 1416 y Fr(TEXTURE)p 489 1416 V 14 w(2D)p FC(.)403 1472 y(T)l(exture)15 b(ob)s(jects)g(are)f(deleted)j(b)o (y)e(calling)446 1557 y Fw(void)29 b Fz(DeleteT)l(extures)p FC(\()h Fw(sizei)15 b Fv(n)p Fw(,)f(uint)h Fv(*textur)n(es)g FC(\))g Fw(;)332 1641 y Fv(textur)n(es)h FC(con)o(tains)g Fv(n)g FC(names)g(of)f(texture)h(ob)s(jects)f(to)h(b)q(e)h(deleted.)23 b(After)16 b(a)g(texture)332 1698 y(ob)s(ject)d(is)h(deleted,)h(it)f (has)g(no)f(con)o(ten)o(ts)g(or)g(dimensionalit)o(y)l(,)j(and)e(its)g (name)f(is)h(again)332 1754 y(un)o(used.)20 b(If)14 b(a)f(texture)g (that)f(is)i(curren)o(tly)f(b)q(ound)i(to)d Fr(TEXTURE)p 1419 1754 V 14 w(1D)h FC(is)h(deleted,)h(it)e(is)h(as)332 1811 y(though)h Fz(BindT)l(exture)g FC(had)g(b)q(een)i(executed)f(with) f(argumen)o(t)f(v)m(alues)j Fr(TEXTURE)p 1772 1811 V 14 w(1D)332 1867 y FC(and)22 b(zero,)g(resp)q(ectiv)o(ely)l(.)40 b(Lik)o(ewise,)24 b(if)e(a)f(texture)g(that)g(is)h(curren)o(tly)g(b)q (ound)g(to)332 1924 y Fr(TEXTURE)p 489 1924 V 14 w(2D)13 b FC(is)g(deleted,)i(it)e(is)g(as)g(though)g Fz(BindT)l(exture)g FC(had)g(b)q(een)h(executed)g(with)332 1980 y(argumen)o(t)f(v)m(alues)i Fr(TEXTURE)p 825 1980 V 14 w(2D)f FC(and)g(zero.)19 b(Un)o(used)14 b(names)g(in)h Fv(textur)n(es)e FC(are)h(silen)o(tly)332 2037 y(ignored,)h(as)g(is)h(the)f(v)m(alue)i(zero.)403 2093 y(The)e(command)446 2178 y Fw(void)29 b Fz(GenT)l(extures)p FC(\()h Fw(sizei)14 b Fv(n)p Fw(,)h(uint)f Fv(*textur)n(es)i FC(\))e Fw(;)332 2262 y FC(returns)h Fv(n)f FC(previously)i(un)o(used)g (texture)f(ob)s(ject)f(names)h(in)h Fv(textur)n(es)p FC(.)j(These)c(names)332 2319 y(are)20 b(mark)o(ed)g(as)g(used,)i(but)e (they)g(acquire)h(texture)f(state)g(and)g(a)g(dimensionalit)o(y)332 2375 y(only)c(when)g(they)f(are)g(\014rst)f(b)q(ound,)i(just)f(as)g(if) h(they)f(w)o(ere)g(un)o(used.)403 2432 y(An)22 b(implemen)o(tation)g (ma)o(y)f(c)o(ho)q(ose)h(to)f(establish)i(a)e(w)o(orking)g(set)h(of)f (texture)332 2488 y(ob)s(jects)11 b(on)g(whic)o(h)i(binding)g(op)q (erations)f(are)f(p)q(erformed)h(with)f(higher)i(p)q(erformance.)p eop %%Page: 101 110 101 109 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1037 b FC(101)120 286 y(A)23 b(texture)f(ob)s(ject)f(that)h(is)g(curren)o(tly)h(part)e (of)h(the)g(w)o(orking)g(set)g(is)h(said)g(to)e(b)q(e)120 343 y Fv(r)n(esident)p FC(.)e(The)d(command)234 443 y Fw(boolean)37 b Fz(AreT)l(exturesResiden)o(t)p FC(\()g Fw(sizei)18 b Fv(n)p Fw(,)i(uint)e Fv(*textur)n(es)p Fw(,)302 499 y(boolean)c Fv(*r)n(esidenc)n(es)g FC(\))h Fw(;)120 599 y FC(returns)f Fr(TRUE)f FC(if)h(all)g(of)g(the)f Fv(n)g FC(texture)h(ob)s(jects)f(named)h(in)g Fv(textur)n(es)g FC(are)f(residen)o(t,)h(or)120 656 y(if)j(the)f(implemen)o(tation)h(do) q(es)f(not)g(distinguish)i(a)d(w)o(orking)h(set.)22 b(If)16 b(at)f(least)h(one)g(of)120 712 y(the)d(texture)f(ob)s(jects)g(named)h (in)h Fv(textur)n(es)e FC(is)h(not)g(residen)o(t,)g(then)g Fr(FALSE)f FC(is)h(returned,)120 769 y(and)g(the)f(residence)i(of)e (eac)o(h)g(texture)g(ob)s(ject)g(is)g(returned)h(in)g Fv(r)n(esidenc)n(es)p FC(.)k(Otherwise)120 825 y(the)c(con)o(ten)o(ts)g (of)f Fv(r)n(esidenc)n(es)f FC(are)i(not)f(c)o(hanged.)20 b(If)13 b(an)o(y)f(of)h(the)g(names)g(in)g Fv(textur)n(es)g FC(is)120 882 y(not)h(the)f(name)h(of)f(a)h(texture)f(ob)s(ject,)g Fr(FALSE)g FC(is)h(returned,)g(the)g(error)f Fr(INVALID)p 1495 882 14 2 v 14 w(VALUE)120 938 y FC(is)f(generated,)f(and)g(the)g (con)o(ten)o(ts)f(of)h Fv(r)n(esidenc)n(es)e FC(are)h(indeterminate.)20 b(The)11 b(residence)120 995 y(status)k(of)g(a)g(single)h(b)q(ound)h (texture)e(ob)s(ject)f(can)i(also)f(b)q(e)h(queried)h(b)o(y)e(calling)i Fz(Get-)120 1051 y(T)l(exP)o(arameteriv)g FC(or)h Fz(GetT)l(exP)o (arameterfv)f FC(with)h Fy(tar)q(g)r(et)h FC(set)f(to)g(the)g(target) 120 1107 y(to)d(whic)o(h)h(the)f(texture)g(ob)s(ject)g(is)h(b)q(ound,)f (and)h Fy(pname)f FC(set)g(to)g Fr(TEXTURE)p 1401 1107 V 14 w(RESIDENT)p FC(.)191 1165 y Fz(AreT)l(exturesResiden)o(t)f FC(indicates)j(only)f(whether)g(a)g(texture)f(ob)s(ject)g(is)h(cur-)120 1222 y(ren)o(tly)i(residen)o(t,)f(not)g(whether)g(it)g(could)h(not)f(b) q(e)h(made)f(residen)o(t.)25 b(An)18 b(implemen-)120 1278 y(tation)g(ma)o(y)f(c)o(ho)q(ose)h(to)g(mak)o(e)f(a)h(texture)g (ob)s(ject)f(residen)o(t)i(only)f(on)g(\014rst)g(use,)g(for)120 1335 y(example.)i(The)11 b(clien)o(t)h(ma)o(y)e(guide)i(the)f(GL)g (implemen)o(tation)i(in)e(determining)i(whic)o(h)120 1391 y(texture)k(ob)s(jects)e(should)j(b)q(e)f(residen)o(t)g(b)o(y)f (sp)q(ecifying)i(a)e(priorit)o(y)h(for)f(eac)o(h)g(texture)120 1448 y(ob)s(ject.)k(The)15 b(command)234 1548 y Fw(void)76 b Fz(PrioritizeT)l(extures)p FC(\()h Fw(sizei)38 b Fv(n)p Fw(,)43 b(uint)38 b Fv(*textur)n(es)p Fw(,)302 1604 y(clampf)15 b Fv(*priorities)g FC(\))g Fw(;)120 1704 y FC(sets)i(the)h(priorities)h (of)e(the)g Fv(n)g FC(texture)g(ob)s(jects)g(named)h(in)g Fv(textur)n(es)f FC(to)g(the)h(v)m(alues)120 1761 y(in)h Fv(priorities)p FC(.)27 b(Eac)o(h)18 b(priorit)o(y)g(v)m(alue)h(is)f (clamp)q(ed)h(to)e(the)h(range)f([0,1])f(b)q(efore)i(it)g(is)120 1817 y(assigned.)i(Zero)10 b(indicates)j(the)f(lo)o(w)o(est)e(priorit)o (y)l(,)j(with)e(the)h(least)f(lik)o(eliho)q(o)q(d)k(of)10 b(b)q(eing)120 1874 y(residen)o(t.)24 b(One)18 b(indicates)f(the)g (highest)g(priorit)o(y)l(,)f(with)h(the)g(greatest)e(lik)o(eliho)q(o)q (d)k(of)120 1930 y(b)q(eing)h(residen)o(t.)28 b(The)18 b(priorit)o(y)g(of)g(a)f(single)i(b)q(ound)g(texture)f(ob)s(ject)f(ma)o (y)g(also)h(b)q(e)120 1986 y(c)o(hanged)e(b)o(y)f(calling)i Fz(T)l(exP)o(arameteri)p FC(,)d Fz(T)l(exP)o(arameterf)p FC(,)g Fz(T)l(exP)o(arameteriv)p FC(,)120 2043 y(or)21 b Fz(T)l(exP)o(arameterfv)f FC(with)i Fy(tar)q(g)r(et)f FC(set)h(to)e(the)i(target)e(to)h(whic)o(h)h(the)g(texture)120 2099 y(ob)s(ject)f(is)h(b)q(ound,)i Fy(pname)e FC(set)f(to)g Fr(TEXTURE)p 930 2099 V 14 w(PRIORITY)p FC(,)f(and)i Fy(par)q(am)f FC(or)g Fy(par)q(ams)120 2156 y FC(sp)q(ecifying)16 b(the)d(new)h(priorit)o(y)f(v)m(alue)i(\(whic)o(h)f(is)g(clamp)q(ed)h (to)d(the)i(range)f([0,1])e(b)q(efore)120 2212 y(b)q(eing)k (assigned\).)k Fz(PrioritizeT)l(extures)14 b FC(silen)o(tly)h(ignores)e (attempts)g(to)f(prioritize)120 2269 y(un)o(used)k(texture)f(ob)s(ject) g(names)g(or)g(default)h(textures.)120 2399 y Fl(3.8.5)56 b(T)-5 b(exture)17 b(En)n(vironmen)n(ts)g(and)i(T)-5 b(exture)18 b(F)-5 b(unctions)120 2488 y FC(The)16 b(command)p eop %%Page: 102 111 102 110 bop 332 137 a FC(102)727 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)446 286 y Fw(void)29 b Fz(T)l(exEn)o(v)p FB(f)p Fz(if)p FB(g)p FC(\()g Fw(enum)15 b Fv(tar)n(get)p Fw(,)g(enum)g Fv(pname)p Fw(,)g(T)g Fv(p)n(ar)n(am)g FC(\))g Fw(;)446 343 y(void)29 b Fz(T)l(exEn)o(v)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()g Fw(enum)15 b Fv(tar)n(get)p Fw(,)g(enum)f Fv(pname)p Fw(,)i(T)f Fv(p)n(ar)n(ams)g FC(\))f Fw(;)332 448 y FC(sets)f(parameters)g(of)f(the)i Fv(textur)n(e)h(envir)n(onment)d FC(that)g(sp)q(eci\014es)j(ho)o(w)e (texture)g(v)m(alues)332 504 y(are)20 b(in)o(terpreted)h(when)g (texturing)f(a)g(fragmen)o(t.)34 b Fv(tar)n(get)20 b FC(m)o(ust)g(curren)o(tly)g(b)q(e)h(the)332 561 y(sym)o(b)q(olic)15 b(constan)o(t)e Fr(TEXTURE)p 858 561 14 2 v 14 w(ENV)p FC(.)f Fv(pname)i FC(is)g(a)f(sym)o(b)q(olic)i(constan)o(t)e (indicating)i(the)332 617 y(parameter)j(to)h(b)q(e)g(set.)32 b(In)19 b(the)g(\014rst)g(form)f(of)h(the)g(command,)h Fv(p)n(ar)n(am)f FC(is)g(a)g(v)m(alue)332 673 y(to)d(whic)o(h)i(to)e (set)h(a)g(single-v)m(alued)j(parameter;)c(in)i(the)f(second)g(form,)g Fv(p)n(ar)n(ams)f FC(is)i(a)332 730 y(p)q(oin)o(ter)i(to)e(an)h(arra)o (y)f(of)h(parameters:)27 b(either)20 b(a)f(single)h(sym)o(b)q(olic)h (constan)o(t)d(or)h(a)332 786 y(v)m(alue)h(or)e(group)h(of)f(v)m(alues) i(to)e(whic)o(h)i(the)f(parameter)f(should)h(b)q(e)h(set.)30 b(The)19 b(p)q(os-)332 843 y(sible)f(en)o(vironmen)o(t)f(parameters)e (are)h Fr(TEXTURE)p 1170 843 V 14 w(ENV)p 1250 843 V 16 w(MODE)f FC(and)i Fr(TEXTURE)p 1613 843 V 14 w(ENV)p 1693 843 V 15 w(COLOR)p FC(.)332 899 y Fr(TEXTURE)p 489 899 V 14 w(ENV)p 569 899 V 15 w(MODE)g FC(ma)o(y)g(b)q(e)h(set)f(to)g (one)g(of)g Fr(REPLACE)p FC(,)f Fr(MODULATE)p FC(,)f Fr(DECAL)p FC(,)h(or)h Fr(BLEND)p FC(;)332 956 y Fr(TEXTURE)p 489 956 V 14 w(ENV)p 569 956 V 15 w(COLOR)11 b FC(is)h(set)f(to)g(an)h (R)o(GBA)f(color)h(b)o(y)g(pro)o(viding)g(four)f(single-precisi)q(on) 332 1012 y(\015oating-p)q(oin)o(t)g(v)m(alues)h(in)g(the)f(range)f([0)p Fy(;)e FC(1])h(\(v)m(alues)j(outside)f(this)g(range)g(are)f(clamp)q(ed) 332 1069 y(to)g(it\).)18 b(If)11 b(in)o(tegers)g(are)g(pro)o(vided)g (for)f Fr(TEXTURE)p 1143 1069 V 14 w(ENV)p 1223 1069 V 15 w(COLOR)p FC(,)g(then)h(they)f(are)h(con)o(v)o(erted)332 1125 y(to)k(\015oating-p)q(oin)o(t)g(as)g(sp)q(eci\014ed)j(in)e(T)l (able)g(2.6)e(for)g(signed)j(in)o(tegers.)403 1184 y(The)i(v)m(alue)i (of)e Fr(TEXTURE)p 835 1184 V 14 w(ENV)p 915 1184 V 15 w(MODE)f FC(sp)q(eci\014es)j(a)e Fv(textur)n(e)i(function)p FC(.)31 b(The)20 b(result)332 1241 y(of)c(this)g(function)h(dep)q(ends) g(on)f(the)g(fragmen)o(t)f(and)h(the)g(texture)f(arra)o(y)g(v)m(alue.) 23 b(The)332 1297 y(precise)f(form)d(of)h(the)h(function)g(dep)q(ends)h (on)e(the)h(base)f(in)o(ternal)h(formats)e(of)h(the)332 1354 y(texture)15 b(arra)o(ys)e(that)h(w)o(ere)h(last)g(sp)q (eci\014ed.)21 b(In)16 b(the)f(follo)o(wing)g(t)o(w)o(o)f(tables,)h Fy(R)1706 1361 y Fu(f)1728 1354 y FC(,)f Fy(G)1791 1361 y Fu(f)1814 1354 y FC(,)332 1410 y Fy(B)366 1417 y Fu(f)389 1410 y FC(,)21 b(and)f Fy(A)550 1417 y Fu(f)593 1410 y FC(are)g(the)g(color)h(comp)q(onen)o(ts)f(of)f(the)i(incoming)g (fragmen)o(t;)g Fy(R)1715 1417 y Fu(t)1729 1410 y FC(,)g Fy(G)1799 1417 y Fu(t)1814 1410 y FC(,)332 1467 y Fy(B)366 1474 y Fu(t)381 1467 y FC(,)e Fy(A)447 1474 y Fu(t)462 1467 y FC(,)g Fy(L)525 1474 y Fu(t)540 1467 y FC(,)g(and)g Fy(I)684 1474 y Fu(t)718 1467 y FC(are)f(the)h(\014ltered)g(texture)g (v)m(alues;)i Fy(R)1386 1474 y Fu(c)1403 1467 y FC(,)e Fy(G)1471 1474 y Fu(c)1488 1467 y FC(,)g Fy(B)1554 1474 y Fu(c)1572 1467 y FC(,)g(and)g Fy(A)1730 1474 y Fu(c)1766 1467 y FC(are)332 1523 y(the)c(texture)f(en)o(vironmen)o(t)h(color)f(v) m(alues;)i(and)e Fy(R)1208 1530 y Fu(v)1228 1523 y FC(,)h Fy(G)1292 1530 y Fu(v)1312 1523 y FC(,)f Fy(B)1373 1530 y Fu(v)1394 1523 y FC(,)g(and)h Fy(A)1543 1530 y Fu(v)1578 1523 y FC(are)f(the)g(color)332 1579 y(comp)q(onen)o(ts)g(computed)h(b) o(y)f(the)g(texture)g(function.)21 b(All)15 b(of)f(these)g(color)g(v)m (alues)i(are)332 1636 y(in)e(the)f(range)g([0)p Fy(;)8 b FC(1].)17 b(The)c Fr(REPLACE)f FC(and)h Fr(MODULATE)f FC(texture)h(functions)h(are)e(sp)q(eci\014ed)332 1692 y(in)20 b(T)l(able)h(3.10,)e(and)h(the)f Fr(DECAL)g FC(and)h Fr(BLEND)e FC(texture)h(functions)i(are)e(sp)q(eci\014ed)j(in)332 1749 y(T)l(able)16 b(3.11.)403 1808 y(The)i(state)g(required)i(for)e (the)g(curren)o(t)g(texture)h(en)o(vironmen)o(t)g(consists)f(of)g(the) 332 1864 y(four-v)m(alued)i(in)o(teger)f(indicating)i(the)e(texture)g (function)g(and)g(four)g(\015oating-p)q(oin)o(t)332 1921 y Fr(TEXTURE)p 489 1921 V 14 w(ENV)p 569 1921 V 15 w(COLOR)d FC(v)m(alues.)24 b(In)17 b(the)g(initial)h(state,)d(the)i(texture)f (function)h(is)g(giv)o(en)332 1977 y(b)o(y)e Fr(MODULATE)f FC(and)h Fr(TEXTURE)p 830 1977 V 14 w(ENV)p 910 1977 V 15 w(COLOR)g FC(is)g(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)g FC(0)o(\).)332 2115 y Fl(3.8.6)55 b(T)-5 b(exture)18 b(Application)332 2206 y FC(T)l(exturing)11 b(is)g(enabled)h(or)e (disabled)j(using)e(the)g(generic)g Fz(Enable)h FC(and)f Fz(Disable)h FC(com-)332 2262 y(mands,)h(resp)q(ectiv)o(ely)l(,)h(with) f(the)g(sym)o(b)q(olic)h(constan)o(t)d Fr(TEXTURE)p 1441 2262 V 15 w(1D)h FC(or)g Fr(TEXTURE)p 1719 2262 V 14 w(2D)g FC(to)332 2319 y(enable)i(the)e(one-dimensional)j(or)c(t)o(w)o (o-dimensional)j(texture,)e(resp)q(ectiv)o(ely)l(.)21 b(If)12 b(b)q(oth)332 2375 y(one-)h(and)h(t)o(w)o(o-dimensional)g (textures)e(are)h(enabled,)i(the)e(t)o(w)o(o-dimensional)h(texture)332 2432 y(is)h(used.)21 b(If)14 b(all)i(texturing)f(is)g(disabled,)h(a)e (rasterized)h(fragmen)o(t)f(is)h(passed)g(on)f(unal-)332 2488 y(tered)h(to)g(the)g(next)h(stage)e(of)h(the)h(GL)f(\(although)g (its)h(texture)f(co)q(ordinates)g(ma)o(y)g(b)q(e)p eop %%Page: 103 112 103 111 bop 120 137 a Fx(3.8.)34 b(TEXTURING)1037 b FC(103)p 288 553 1159 2 v 287 610 2 57 v 427 593 a(Base)p 658 610 V 260 w Fr(REPLACE)p 1052 610 V 229 w(MODULATE)p 1446 610 V 287 666 V 315 649 a FC(In)o(ternal)16 b(F)l(ormat)p 658 666 V 51 w(T)l(exture)f(F)l(unction)p 1052 666 V 51 w(T)l(exture)g(F)l(unction)p 1446 666 V 288 668 1159 2 v 288 676 V 287 733 2 57 v 419 716 a Fr(ALPHA)p 658 733 V 240 w Fy(R)804 723 y Fu(v)837 716 y FC(=)e Fy(R)920 723 y Fu(f)p 1052 733 V 1164 716 a Fy(R)1199 723 y Fu(v)1231 716 y FC(=)g Fy(R)1314 723 y Fu(f)p 1446 733 V 287 789 V 658 789 V 768 772 a Fy(G)804 779 y Fu(v)837 772 y FC(=)g Fy(G)921 779 y Fu(f)p 1052 789 V 1162 772 a Fy(G)1198 779 y Fu(v)1231 772 y FC(=)g Fy(G)1315 779 y Fu(f)p 1446 789 V 287 846 V 658 846 V 770 829 a Fy(B)804 836 y Fu(v)837 829 y FC(=)g Fy(B)919 836 y Fu(f)p 1052 846 V 1164 829 a Fy(B)1198 836 y Fu(v)1231 829 y FC(=)g Fy(B)1313 836 y Fu(f)p 1446 846 V 287 902 V 658 902 V 774 885 a Fy(A)808 892 y Fu(v)841 885 y FC(=)g Fy(A)923 892 y Fu(t)p 1052 902 V 1139 885 a Fy(A)1173 892 y Fu(v)1207 885 y FC(=)g Fy(A)1289 892 y Fu(f)1311 885 y Fy(A)1345 892 y Fu(t)p 1446 902 V 288 904 1159 2 v 287 960 2 57 v 376 943 a Fr(LUMINANCE)p 658 960 V 201 w Fy(R)810 950 y Fu(v)843 943 y FC(=)g Fy(L)922 950 y Fu(t)p 1052 960 V 1141 943 a Fy(R)1176 950 y Fu(v)1208 943 y FC(=)g Fy(R)1291 950 y Fu(f)1313 943 y Fy(L)1344 950 y Fu(t)p 1446 960 V 287 1017 V 417 1000 a FC(\(or)i Fr(1)p FC(\))p 658 1017 V 244 w Fy(G)811 1007 y Fu(v)843 1000 y FC(=)e Fy(L)922 1007 y Fu(t)p 1052 1017 V 1139 1000 a Fy(G)1175 1007 y Fu(v)1208 1000 y FC(=)g Fy(G)1292 1007 y Fu(f)1315 1000 y Fy(L)1346 1007 y Fu(t)p 1446 1017 V 287 1073 V 658 1073 V 775 1056 a Fy(B)809 1063 y Fu(v)843 1056 y FC(=)g Fy(L)922 1063 y Fu(t)p 1052 1073 V 1141 1056 a Fy(B)1175 1063 y Fu(v)1208 1056 y FC(=)g Fy(B)1290 1063 y Fu(f)1313 1056 y Fy(L)1344 1063 y Fu(t)p 1446 1073 V 287 1130 V 658 1130 V 770 1113 a Fy(A)804 1120 y Fu(v)837 1113 y FC(=)g Fy(A)919 1120 y Fu(f)p 1052 1130 V 1164 1113 a Fy(A)1198 1120 y Fu(v)1231 1113 y FC(=)g Fy(A)1313 1120 y Fu(f)p 1446 1130 V 288 1131 1159 2 v 287 1188 2 57 v 313 1171 a Fr(LUMINANCE)p 514 1171 14 2 v 14 w(ALPHA)p 658 1188 2 57 v 140 w Fy(R)810 1178 y Fu(v)843 1171 y FC(=)g Fy(L)922 1178 y Fu(t)p 1052 1188 V 1141 1171 a Fy(R)1176 1178 y Fu(v)1208 1171 y FC(=)g Fy(R)1291 1178 y Fu(f)1313 1171 y Fy(L)1344 1178 y Fu(t)p 1446 1188 V 287 1244 V 417 1227 a FC(\(or)i Fr(2)p FC(\))p 658 1244 V 244 w Fy(G)811 1234 y Fu(v)843 1227 y FC(=)e Fy(L)922 1234 y Fu(t)p 1052 1244 V 1139 1227 a Fy(G)1175 1234 y Fu(v)1208 1227 y FC(=)g Fy(G)1292 1234 y Fu(f)1315 1227 y Fy(L)1346 1234 y Fu(t)p 1446 1244 V 287 1301 V 658 1301 V 775 1284 a Fy(B)809 1291 y Fu(v)843 1284 y FC(=)g Fy(L)922 1291 y Fu(t)p 1052 1301 V 1141 1284 a Fy(B)1175 1291 y Fu(v)1208 1284 y FC(=)g Fy(B)1290 1291 y Fu(f)1313 1284 y Fy(L)1344 1291 y Fu(t)p 1446 1301 V 287 1357 V 658 1357 V 774 1340 a Fy(A)808 1347 y Fu(v)841 1340 y FC(=)g Fy(A)923 1347 y Fu(t)p 1052 1357 V 1139 1340 a Fy(A)1173 1347 y Fu(v)1207 1340 y FC(=)g Fy(A)1289 1347 y Fu(f)1311 1340 y Fy(A)1345 1347 y Fu(t)p 1446 1357 V 288 1359 1159 2 v 287 1415 2 57 v 376 1398 a Fr(INTENSITY)p 658 1415 V 207 w Fy(R)816 1405 y Fu(v)848 1398 y FC(=)g Fy(I)916 1405 y Fu(t)p 1052 1415 V 1146 1398 a Fy(R)1181 1405 y Fu(v)1214 1398 y FC(=)g Fy(R)1297 1405 y Fu(f)1319 1398 y Fy(I)1339 1405 y Fu(t)p 1446 1415 V 287 1472 V 658 1472 V 780 1455 a Fy(G)816 1462 y Fu(v)849 1455 y FC(=)g Fy(I)917 1462 y Fu(t)p 1052 1472 V 1145 1455 a Fy(G)1181 1462 y Fu(v)1214 1455 y FC(=)g Fy(G)1298 1462 y Fu(f)1320 1455 y Fy(I)1340 1462 y Fu(t)p 1446 1472 V 287 1528 V 658 1528 V 781 1511 a Fy(B)815 1518 y Fu(v)848 1511 y FC(=)g Fy(I)916 1518 y Fu(t)p 1052 1528 V 1146 1511 a Fy(B)1180 1518 y Fu(v)1214 1511 y FC(=)g Fy(B)1296 1518 y Fu(f)1319 1511 y Fy(I)1339 1518 y Fu(t)p 1446 1528 V 287 1585 V 658 1585 V 781 1568 a Fy(A)815 1575 y Fu(v)848 1568 y FC(=)g Fy(I)916 1575 y Fu(t)p 1052 1585 V 1147 1568 a Fy(A)1181 1575 y Fu(v)1214 1568 y FC(=)g Fy(A)1296 1575 y Fu(f)1318 1568 y Fy(I)1338 1575 y Fu(t)p 1446 1585 V 288 1586 1159 2 v 287 1643 2 57 v 441 1626 a Fr(RGB)p 658 1643 V 266 w Fy(R)808 1633 y Fu(v)841 1626 y FC(=)g Fy(R)924 1633 y Fu(t)p 1052 1643 V 1139 1626 a Fy(R)1174 1633 y Fu(v)1206 1626 y FC(=)g Fy(R)1289 1633 y Fu(f)1312 1626 y Fy(R)1347 1633 y Fu(t)p 1446 1643 V 287 1699 V 417 1682 a FC(\(or)i Fr(3)p FC(\))p 658 1699 V 241 w Fy(G)808 1689 y Fu(v)841 1682 y FC(=)e Fy(G)925 1689 y Fu(t)p 1052 1699 V 1137 1682 a Fy(G)1173 1689 y Fu(v)1206 1682 y FC(=)g Fy(G)1290 1689 y Fu(f)1312 1682 y Fy(G)1348 1689 y Fu(t)p 1446 1699 V 287 1756 V 658 1756 V 773 1739 a Fy(B)807 1746 y Fu(v)841 1739 y FC(=)g Fy(B)923 1746 y Fu(t)p 1052 1756 V 1139 1739 a Fy(B)1173 1746 y Fu(v)1206 1739 y FC(=)g Fy(B)1288 1746 y Fu(f)1312 1739 y Fy(B)1346 1746 y Fu(t)p 1446 1756 V 287 1812 V 658 1812 V 770 1795 a Fy(A)804 1802 y Fu(v)837 1795 y FC(=)g Fy(A)919 1802 y Fu(f)p 1052 1812 V 1164 1795 a Fy(A)1198 1802 y Fu(v)1231 1795 y FC(=)g Fy(A)1313 1802 y Fu(f)p 1446 1812 V 288 1814 1159 2 v 287 1870 2 57 v 430 1853 a Fr(RGBA)p 658 1870 V 255 w Fy(R)808 1860 y Fu(v)841 1853 y FC(=)g Fy(R)924 1860 y Fu(t)p 1052 1870 V 1139 1853 a Fy(R)1174 1860 y Fu(v)1206 1853 y FC(=)g Fy(R)1289 1860 y Fu(f)1312 1853 y Fy(R)1347 1860 y Fu(t)p 1446 1870 V 287 1927 V 417 1910 a FC(\(or)i Fr(4)p FC(\))p 658 1927 V 241 w Fy(G)808 1917 y Fu(v)841 1910 y FC(=)e Fy(G)925 1917 y Fu(t)p 1052 1927 V 1137 1910 a Fy(G)1173 1917 y Fu(v)1206 1910 y FC(=)g Fy(G)1290 1917 y Fu(f)1312 1910 y Fy(G)1348 1917 y Fu(t)p 1446 1927 V 287 1983 V 658 1983 V 773 1966 a Fy(B)807 1973 y Fu(v)841 1966 y FC(=)g Fy(B)923 1973 y Fu(t)p 1052 1983 V 1139 1966 a Fy(B)1173 1973 y Fu(v)1206 1966 y FC(=)g Fy(B)1288 1973 y Fu(f)1312 1966 y Fy(B)1346 1973 y Fu(t)p 1446 1983 V 287 2040 V 658 2040 V 774 2023 a Fy(A)808 2030 y Fu(v)841 2023 y FC(=)g Fy(A)923 2030 y Fu(t)p 1052 2040 V 1139 2023 a Fy(A)1173 2030 y Fu(v)1207 2023 y FC(=)g Fy(A)1289 2030 y Fu(f)1311 2023 y Fy(A)1345 2030 y Fu(t)p 1446 2040 V 288 2041 1159 2 v 343 2118 a FC(T)l(able)j(3.10:)j(Replace)e(and)e(mo)q(dulate)h(texture)f (functions.)p eop %%Page: 104 113 104 112 bop 332 137 a FC(104)727 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)p 348 558 1462 2 v 347 614 2 57 v 487 597 a FC(Base)p 718 614 V 356 w Fr(DECAL)p 1261 614 V 435 w(BLEND)p 1809 614 V 347 671 V 376 654 a FC(In)o(ternal)15 b(F)l(ormat)p 718 671 V 125 w(T)l(exture)h(F)l(unction)p 1261 671 V 202 w(T)l(exture)f(F)l(unction)p 1809 671 V 348 672 1462 2 v 348 681 V 347 737 2 57 v 479 720 a Fr(ALPHA)p 718 737 V 305 w FC(unde\014ned)p 1261 737 V 366 w Fy(R)1485 727 y Fu(v)1517 720 y FC(=)e Fy(R)1600 727 y Fu(f)p 1809 737 V 347 794 V 718 794 V 1261 794 V 1448 777 a Fy(G)1484 784 y Fu(v)1517 777 y FC(=)g Fy(G)1601 784 y Fu(f)p 1809 794 V 347 850 V 718 850 V 1261 850 V 1450 833 a Fy(B)1484 840 y Fu(v)1517 833 y FC(=)g Fy(B)1599 840 y Fu(f)p 1809 850 V 347 907 V 718 907 V 1261 907 V 1425 890 a Fy(A)1459 897 y Fu(v)1493 890 y FC(=)g Fy(A)1575 897 y Fu(f)1597 890 y Fy(A)1631 897 y Fu(t)p 1809 907 V 348 908 1462 2 v 347 965 2 57 v 436 948 a Fr(LUMINANCE)p 718 965 V 260 w FC(unde\014ned)p 1261 965 V 209 w Fy(R)1328 955 y Fu(v)1361 948 y FC(=)g Fy(R)1444 955 y Fu(f)1466 948 y FC(\(1)c FB(\000)i Fy(L)1593 955 y Fu(t)1608 948 y FC(\))e(+)i Fy(R)1716 955 y Fu(c)1733 948 y Fy(L)1764 955 y Fu(t)p 1809 965 V 347 1021 V 477 1004 a FC(\(or)k Fr(1)p FC(\))p 718 1021 V 1261 1021 V 700 w Fy(G)1327 1011 y Fu(v)1360 1004 y FC(=)e Fy(G)1444 1011 y Fu(f)1467 1004 y FC(\(1)c FB(\000)i Fy(L)1594 1011 y Fu(t)1608 1004 y FC(\))f(+)h Fy(G)1718 1011 y Fu(c)1735 1004 y Fy(L)1766 1011 y Fu(t)p 1809 1021 V 347 1078 V 718 1078 V 1261 1078 V 1293 1061 a Fy(B)1327 1068 y Fu(v)1361 1061 y FC(=)i Fy(B)1443 1068 y Fu(f)1466 1061 y FC(\(1)c FB(\000)i Fy(L)1593 1068 y Fu(t)1608 1061 y FC(\))e(+)i Fy(B)1715 1068 y Fu(c)1733 1061 y Fy(L)1764 1068 y Fu(t)p 1809 1078 V 347 1134 V 718 1134 V 1261 1134 V 1450 1117 a Fy(A)1484 1124 y Fu(v)1517 1117 y FC(=)i Fy(A)1599 1124 y Fu(f)p 1809 1134 V 348 1136 1462 2 v 347 1192 2 57 v 373 1175 a Fr(LUMINANCE)p 574 1175 14 2 v 14 w(ALPHA)p 718 1192 2 57 v 199 w FC(unde\014ned)p 1261 1192 V 209 w Fy(R)1328 1182 y Fu(v)1361 1175 y FC(=)g Fy(R)1444 1182 y Fu(f)1466 1175 y FC(\(1)c FB(\000)i Fy(L)1593 1182 y Fu(t)1608 1175 y FC(\))e(+)i Fy(R)1716 1182 y Fu(c)1733 1175 y Fy(L)1764 1182 y Fu(t)p 1809 1192 V 347 1249 V 477 1232 a FC(\(or)k Fr(2)p FC(\))p 718 1249 V 1261 1249 V 700 w Fy(G)1327 1239 y Fu(v)1360 1232 y FC(=)e Fy(G)1444 1239 y Fu(f)1467 1232 y FC(\(1)c FB(\000)i Fy(L)1594 1239 y Fu(t)1608 1232 y FC(\))f(+)h Fy(G)1718 1239 y Fu(c)1735 1232 y Fy(L)1766 1239 y Fu(t)p 1809 1249 V 347 1305 V 718 1305 V 1261 1305 V 1293 1288 a Fy(B)1327 1295 y Fu(v)1361 1288 y FC(=)i Fy(B)1443 1295 y Fu(f)1466 1288 y FC(\(1)c FB(\000)i Fy(L)1593 1295 y Fu(t)1608 1288 y FC(\))e(+)i Fy(B)1715 1295 y Fu(c)1733 1288 y Fy(L)1764 1295 y Fu(t)p 1809 1305 V 347 1362 V 718 1362 V 1261 1362 V 1425 1345 a Fy(A)1459 1352 y Fu(v)1493 1345 y FC(=)i Fy(A)1575 1352 y Fu(f)1597 1345 y Fy(A)1631 1352 y Fu(t)p 1809 1362 V 348 1363 1462 2 v 347 1420 2 57 v 436 1403 a Fr(INTENSITY)p 718 1420 V 260 w FC(unde\014ned)p 1261 1420 V 220 w Fy(R)1339 1410 y Fu(v)1372 1403 y FC(=)g Fy(R)1455 1410 y Fu(f)1477 1403 y FC(\(1)c FB(\000)i Fy(I)1593 1410 y Fu(t)1608 1403 y FC(\))e(+)i Fy(R)1716 1410 y Fu(c)1733 1403 y Fy(I)1753 1410 y Fu(t)p 1809 1420 V 347 1476 V 718 1476 V 1261 1476 V 1302 1459 a Fy(G)1338 1466 y Fu(v)1371 1459 y FC(=)i Fy(G)1455 1466 y Fu(f)1478 1459 y FC(\(1)c FB(\000)i Fy(I)1594 1466 y Fu(t)1608 1459 y FC(\))f(+)h Fy(G)1718 1466 y Fu(c)1735 1459 y Fy(I)1755 1466 y Fu(t)p 1809 1476 V 347 1533 V 718 1533 V 1261 1533 V 1304 1516 a Fy(B)1338 1523 y Fu(v)1372 1516 y FC(=)i Fy(B)1454 1523 y Fu(f)1477 1516 y FC(\(1)c FB(\000)i Fy(I)1593 1523 y Fu(t)1608 1516 y FC(\))e(+)i Fy(B)1715 1523 y Fu(c)1733 1516 y Fy(I)1753 1523 y Fu(t)p 1809 1533 V 347 1589 V 718 1589 V 1261 1589 V 1305 1572 a Fy(A)1339 1579 y Fu(v)1372 1572 y FC(=)i Fy(A)1454 1579 y Fu(f)1477 1572 y FC(\(1)c FB(\000)i Fy(I)1593 1579 y Fu(t)1607 1572 y FC(\))f(+)h Fy(A)1715 1579 y Fu(c)1732 1572 y Fy(I)1752 1579 y Fu(t)p 1809 1589 V 348 1591 1462 2 v 347 1647 2 57 v 501 1630 a Fr(RGB)p 718 1647 V 341 w Fy(R)943 1637 y Fu(v)976 1630 y FC(=)h Fy(R)1058 1637 y Fu(t)p 1261 1647 V 1290 1630 a Fy(R)1325 1637 y Fu(v)1357 1630 y FC(=)h Fy(R)1440 1637 y Fu(f)1462 1630 y FC(\(1)d FB(\000)g Fy(R)1593 1637 y Fu(t)1608 1630 y FC(\))f(+)i Fy(R)1716 1637 y Fu(c)1733 1630 y Fy(R)1768 1637 y Fu(t)p 1809 1647 V 347 1704 V 477 1687 a FC(\(or)k Fr(3)p FC(\))p 718 1704 V 316 w Fy(G)943 1694 y Fu(v)976 1687 y FC(=)d Fy(G)1059 1694 y Fu(t)p 1261 1704 V 1287 1687 a Fy(G)1323 1694 y Fu(v)1355 1687 y FC(=)h Fy(G)1439 1694 y Fu(f)1462 1687 y FC(\(1)c FB(\000)i Fy(G)1594 1694 y Fu(t)1608 1687 y FC(\))f(+)h Fy(G)1718 1694 y Fu(c)1735 1687 y Fy(G)1771 1694 y Fu(t)p 1809 1704 V 347 1760 V 718 1760 V 908 1743 a Fy(B)942 1750 y Fu(v)976 1743 y FC(=)h Fy(B)1057 1750 y Fu(t)p 1261 1760 V 1290 1743 a Fy(B)1324 1750 y Fu(v)1357 1743 y FC(=)h Fy(B)1439 1750 y Fu(f)1462 1743 y FC(\(1)d FB(\000)g Fy(B)1592 1750 y Fu(t)1608 1743 y FC(\))f(+)i Fy(B)1715 1750 y Fu(c)1733 1743 y Fy(B)1767 1750 y Fu(t)p 1809 1760 V 347 1817 V 718 1817 V 904 1800 a Fy(A)938 1807 y Fu(v)972 1800 y FC(=)i Fy(A)1054 1807 y Fu(f)p 1261 1817 V 1450 1800 a Fy(A)1484 1807 y Fu(v)1517 1800 y FC(=)g Fy(A)1599 1807 y Fu(f)p 1809 1817 V 348 1818 1462 2 v 347 1875 2 57 v 490 1858 a Fr(RGBA)p 718 1875 V 168 w Fy(R)781 1865 y Fu(v)813 1858 y FC(=)g Fy(R)896 1865 y Fu(f)919 1858 y FC(\(1)c FB(\000)i Fy(A)1049 1865 y Fu(t)1063 1858 y FC(\))f(+)h Fy(R)1172 1865 y Fu(t)1186 1858 y Fy(A)1220 1865 y Fu(t)p 1261 1875 V 1290 1858 a Fy(R)1325 1865 y Fu(v)1357 1858 y FC(=)i Fy(R)1440 1865 y Fu(f)1462 1858 y FC(\(1)d FB(\000)g Fy(R)1593 1865 y Fu(t)1608 1858 y FC(\))f(+)i Fy(R)1716 1865 y Fu(c)1733 1858 y Fy(R)1768 1865 y Fu(t)p 1809 1875 V 347 1931 V 477 1914 a FC(\(or)k Fr(4)p FC(\))p 718 1931 V 153 w Fy(G)780 1921 y Fu(v)813 1914 y FC(=)e Fy(G)897 1921 y Fu(f)919 1914 y FC(\(1)d FB(\000)g Fy(A)1049 1921 y Fu(t)1064 1914 y FC(\))g(+)g Fy(G)1173 1921 y Fu(t)1188 1914 y Fy(A)1222 1921 y Fu(t)p 1261 1931 V 1287 1914 a Fy(G)1323 1921 y Fu(v)1355 1914 y FC(=)j Fy(G)1439 1921 y Fu(f)1462 1914 y FC(\(1)c FB(\000)i Fy(G)1594 1921 y Fu(t)1608 1914 y FC(\))f(+)h Fy(G)1718 1921 y Fu(c)1735 1914 y Fy(G)1771 1921 y Fu(t)p 1809 1931 V 347 1988 V 718 1988 V 746 1971 a Fy(B)780 1978 y Fu(v)813 1971 y FC(=)i Fy(B)895 1978 y Fu(f)919 1971 y FC(\(1)c FB(\000)i Fy(A)1049 1978 y Fu(t)1063 1971 y FC(\))f(+)h Fy(B)1171 1978 y Fu(t)1186 1971 y Fy(A)1220 1978 y Fu(t)p 1261 1988 V 1290 1971 a Fy(B)1324 1978 y Fu(v)1357 1971 y FC(=)i Fy(B)1439 1978 y Fu(f)1462 1971 y FC(\(1)d FB(\000)g Fy(B)1592 1978 y Fu(t)1608 1971 y FC(\))f(+)i Fy(B)1715 1978 y Fu(c)1733 1971 y Fy(B)1767 1978 y Fu(t)p 1809 1988 V 347 2044 V 718 2044 V 904 2027 a Fy(A)938 2034 y Fu(v)972 2027 y FC(=)i Fy(A)1054 2034 y Fu(f)p 1261 2044 V 1425 2027 a Fy(A)1459 2034 y Fu(v)1493 2027 y FC(=)g Fy(A)1575 2034 y Fu(f)1597 2027 y Fy(A)1631 2034 y Fu(t)p 1809 2044 V 348 2046 1462 2 v 615 2123 a FC(T)l(able)j(3.11:)j (Decal)d(and)f(blend)i(texture)e(functions.)p eop %%Page: 105 114 105 113 bop 120 137 a Fx(3.9.)34 b(F)o(OG)1221 b FC(105)120 286 y(discarded\).)22 b(Otherwise,)15 b(a)g(texture)g(v)m(alue)i(is)f (found)g(according)f(to)g(the)h(parameter)120 343 y(v)m(alues)i(of)e (the)h(curren)o(tly)g(b)q(ound)h(texture)e(image)h(of)f(the)h (appropriate)g(dimension-)120 399 y(alit)o(y)g(using)f(the)g(rules)h (giv)o(en)f(in)h(sections)f(3.8.1)f(and)h(3.8.2.)k(This)c(texture)g(v)m (alue)h(is)120 456 y(used)i(along)e(with)h(the)g(incoming)h(fragmen)o (t)d(in)j(computing)f(the)g(texture)f(function)120 512 y(indicated)k(b)o(y)d(the)g(curren)o(tly)h(b)q(ound)h(texture)e(en)o (vironmen)o(t.)30 b(The)18 b(result)h(of)f(this)120 569 y(function)j(replaces)f(the)g(incoming)h(fragmen)o(t's)d(R,)h(G,)g(B,)h (and)f(A)h(v)m(alues.)34 b(These)120 625 y(are)14 b(the)f(color)h(v)m (alues)h(passed)f(to)f(subsequen)o(t)h(op)q(erations.)20 b(Other)14 b(data)f(asso)q(ciated)120 682 y(with)j(the)f(incoming)i (fragmen)o(t)d(remain)h(unc)o(hanged,)h(except)g(that)e(the)i(texture)f (co-)120 738 y(ordinates)h(ma)o(y)e(b)q(e)i(discarded.)191 795 y(The)j(required)g(state)f(is)h(t)o(w)o(o)e(bits)i(indicating)i (whether)d(eac)o(h)h(of)f(one-)h(or)f(t)o(w)o(o-)120 851 y(dimensional)f(texturing)d(is)h(enabled)h(or)e(disabled.)21 b(In)15 b(the)g(initial)h(state,)e(all)h(textur-)120 907 y(ing)h(is)g(disabled.)120 1049 y Fs(3.9)67 b(F)-6 b(og)120 1151 y FC(If)14 b(enabled,)g(fog)e(blends)j(a)d(fog)g(color)h (with)g(a)g(rasterized)g(fragmen)o(t's)f(p)q(ost-texturing)120 1207 y(color)g(using)f(a)g(blending)i(factor)d Fy(f)5 b FC(.)19 b(F)l(og)10 b(is)i(enabled)h(and)e(disabled)i(with)e(the)g Fz(Enable)120 1264 y FC(and)16 b Fz(Disable)g FC(commands)f(using)h (the)f(sym)o(b)q(olic)i(constan)o(t)d Fr(FOG)p FC(.)191 1320 y(This)i(factor)e Fy(f)20 b FC(is)c(computed)g(according)f(to)g (one)g(of)g(three)g(equations:)708 1413 y Fy(f)i FC(=)c(exp)q(\()p FB(\000)p Fy(d)c FB(\001)h Fy(z)r FC(\))p Fy(;)471 b FC(\(3.16\))656 1505 y Fy(f)18 b FC(=)13 b(exp\()p FB(\000)p FC(\()p Fy(d)d FB(\001)f Fy(z)r FC(\))981 1484 y Fq(2)1001 1505 y FC(\))p Fy(;)f FC(or)418 b(\(3.17\))769 1600 y Fy(f)18 b FC(=)862 1569 y Fy(e)10 b FB(\000)g Fy(z)p 862 1590 100 2 v 863 1631 a(e)g FB(\000)g Fy(s)1499 1600 y FC(\(3.18\))120 1695 y(\()p Fy(z)16 b FC(is)f(the)f(ey)o(e-co)q (ordinate)g(distance)h(from)e(the)h(ey)o(e,)g(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)g FC(1)o(\))j(in)k(ey)o(e)f(co)q (ordinates,)120 1752 y(to)k(the)h(fragmen)o(t)e(cen)o(ter\).)29 b(The)19 b(equation,)g(along)g(with)g(either)g Fy(d)f FC(or)g Fy(e)g FC(and)h Fy(s)p FC(,)g(is)120 1808 y(sp)q(eci\014ed)f (with)234 1894 y Fw(void)30 b Fz(F)l(og)p FB(f)p Fz(if)p FB(g)p FC(\()g Fw(enum)14 b Fv(pname)p Fw(,)h(T)g Fv(p)n(ar)n(am)h FC(\))f Fw(;)234 1951 y(void)30 b Fz(F)l(og)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()f Fw(enum)15 b Fv(pname)p Fw(,)g(T)g Fv(p)n(ar)n(ams)g FC(\))g Fw(;)120 2037 y FC(If)c Fv(pname)g FC(is)g Fr(FOG)p 412 2037 14 2 v 16 w(MODE)p FC(,)e(then)i Fv(p)n(ar)n(am)g FC(m)o(ust)f(b)q(e,)i(or)f Fv(p)n(ar)n(ams)f FC(m)o(ust)g(p)q(oin)o(t)i(to)e(an)h(in)o(teger)120 2093 y(that)19 b(is)i(one)f(of)f(the)h(sym)o(b)q(olic)h(constan)o(ts)e Fr(EXP)p FC(,)f Fr(EXP2)p FC(,)i(or)f Fr(LINEAR)p FC(,)f(in)j(whic)o(h) g(case)120 2149 y(equation)11 b(3.16,)f(3.17,)g(or)g(3.18,)f(resp)q (ectiv)o(ely)l(,)k(is)e(selected)h(for)e(the)g(fog)g(calculation)i (\(if,)120 2206 y(when)i(3.18)d(is)i(selected,)h Fy(e)f FC(=)g Fy(s)p FC(,)g(results)g(are)g(unde\014ned\).)20 b(If)13 b Fv(pname)g FC(is)h Fr(FOG)p 1438 2206 V 15 w(DENSITY)p FC(,)120 2262 y Fr(FOG)p 189 2262 V 15 w(START)p FC(,)i(or)g Fr(FOG)p 466 2262 V 15 w(END)p FC(,)g(then)h Fv(p)n(ar)n(am)g FC(is)g(or)g Fv(p)n(ar)n(ams)f FC(p)q(oin)o(ts)i(to)e (a)g(v)m(alue)i(that)e(is)h Fy(d)p FC(,)120 2319 y Fy(s)p FC(,)e(or)g Fy(e)p FC(,)g(resp)q(ectiv)o(ely)l(.)22 b(If)15 b Fy(d)g FC(is)h(sp)q(eci\014ed)h(less)f(than)f(zero,)g(the)g(error)g Fr(INVALID)p 1495 2319 V 14 w(VALUE)120 2375 y FC(results.)191 2432 y(An)i(implemen)o(tation)h(ma)o(y)e(c)o(ho)q(ose)h(to)f(appro)o (ximate)g(the)h(ey)o(e-co)q(ordinate)h(dis-)120 2488 y(tance)i(from)f(the)h(ey)o(e)g(to)g(eac)o(h)g(fragmen)o(t)e(cen)o(ter) i(b)o(y)g FB(j)p Fy(z)1130 2495 y Fu(e)1148 2488 y FB(j)p FC(.)34 b(F)l(urther,)20 b Fy(f)25 b FC(need)c(not)p eop %%Page: 106 115 106 114 bop 332 137 a FC(106)727 b Fx(CHAPTER)16 b(3.)34 b(RASTERIZA)l(TION)332 286 y FC(b)q(e)19 b(computed)g(at)e(eac)o(h)i (fragmen)o(t,)e(but)i(ma)o(y)f(b)q(e)h(computed)f(at)g(eac)o(h)g(v)o (ertex)g(and)332 343 y(in)o(terp)q(olated)e(as)f(other)g(data)f(are.) 403 400 y(No)g(matter)f(whic)o(h)h(equation)h(and)f(appro)o(ximation)g (is)h(used)g(to)e(compute)h Fy(f)5 b FC(,)14 b(the)332 457 y(result)i(is)f(clamp)q(ed)i(to)e([0)p Fy(;)8 b FC(1])13 b(to)h(obtain)i(the)f(\014nal)h Fy(f)5 b FC(.)403 514 y Fy(f)20 b FC(is)c(used)g(di\013eren)o(tly)g(dep)q(ending)i(on)d (whether)h(the)f(GL)h(is)g(in)g(R)o(GBA)g(or)e(color)332 571 y(index)i(mo)q(de.)k(In)15 b(R)o(GBA)f(mo)q(de,)g(if)h Fy(C)1006 578 y Fu(r)1039 571 y FC(represen)o(ts)f(a)g(rasterized)h (fragmen)o(t's)e(R,)h(G,)332 627 y(or)h(B)g(v)m(alue,)h(then)g(the)f (corresp)q(onding)h(v)m(alue)h(pro)q(duced)f(b)o(y)f(fog)g(is)860 732 y Fy(C)g FC(=)e Fy(f)5 b(C)1016 739 y Fu(r)1045 732 y FC(+)10 b(\(1)g FB(\000)g Fy(f)5 b FC(\))p Fy(C)1264 739 y Fu(f)1286 732 y Fy(:)332 838 y FC(\(The)14 b(rasterized)h (fragmen)o(t's)d(A)i(v)m(alue)i(is)e(not)g(c)o(hanged)g(b)o(y)g(fog)g (blending.\))21 b(The)14 b(R,)332 894 y(G,)h(B,)g(and)h(A)f(v)m(alues)i (of)e Fy(C)815 901 y Fu(f)853 894 y FC(are)g(sp)q(eci\014ed)j(b)o(y)d (calling)i Fz(F)l(og)e FC(with)h Fv(pname)g FC(equal)g(to)332 951 y Fr(FOG)p 401 951 14 2 v 15 w(COLOR)p FC(;)e(in)h(this)h(case)e Fv(p)n(ar)n(ams)h FC(p)q(oin)o(ts)h(to)e(four)g(v)m(alues)i(comprising) g Fy(C)1625 958 y Fu(f)1647 951 y FC(.)k(If)15 b(these)332 1007 y(are)e(not)f(\015oating-p)q(oin)o(t)i(v)m(alues,)g(then)f(they)g (are)f(con)o(v)o(erted)h(to)f(\015oating-p)q(oin)o(t)i(using)332 1063 y(the)f(con)o(v)o(ersion)h(giv)o(en)g(in)g(T)l(able)g(2.6)e(for)h (signed)h(in)o(tegers.)19 b(Eac)o(h)13 b(comp)q(onen)o(t)g(of)g Fy(C)1804 1070 y Fu(f)332 1120 y FC(is)i(clamp)q(ed)h(to)d([0)p Fy(;)8 b FC(1])k(when)j(sp)q(eci\014ed.)22 b(If)15 b Fy(i)1096 1127 y Fu(f)1132 1120 y FC(is)g(a)f(color)g(index,)i(then)f (a)f(single)h(v)m(alue)332 1176 y(sp)q(eci\014es)j Fy(i)525 1183 y Fu(f)548 1176 y FC(.)23 b(Its)16 b(in)o(teger)h(part)f(is)h (mask)o(ed)f(with)g(2)1241 1160 y Fu(n)1275 1176 y FB(\000)c FC(1,)k(where)g Fy(n)h FC(is)g(the)f(n)o(um)o(b)q(er)332 1233 y(of)f(bits)g(in)i(a)d(color)i(index)g(framebu\013er.)403 1290 y(In)f(color)h(index)g(mo)q(de,)f(the)h(form)o(ula)e(for)h(fog)f (blending)k(is)903 1395 y Fy(I)e FC(=)d Fy(i)1003 1402 y Fu(r)1031 1395 y FC(+)e(\(1)e FB(\000)i Fy(f)5 b FC(\))p Fy(i)1234 1402 y Fu(f)332 1501 y FC(where)15 b Fy(i)479 1508 y Fu(r)513 1501 y FC(is)h(the)f(rasterized)g(fragmen)o(t's)f (color)h(index)h(and)g Fy(i)1405 1508 y Fu(f)1442 1501 y FC(is)g(a)e(single-precisi)q(on)332 1557 y(\015oating-p)q(oin)o(t)19 b(v)m(alue.)30 b(\(1)12 b FB(\000)g Fy(f)5 b FC(\))p Fy(i)923 1564 y Fu(f)964 1557 y FC(is)19 b(rounded)g(to)e(the)i (nearest)f(\014xed-p)q(oin)o(t)h(v)m(alue)332 1614 y(with)d(the)f(same) g(n)o(um)o(b)q(er)h(of)f(bits)h(to)f(the)g(righ)o(t)g(of)g(the)h (binary)g(p)q(oin)o(t)g(as)f Fy(i)1644 1621 y Fu(r)1663 1614 y FC(.)20 b(In)c(this)332 1670 y(case,)f Fy(i)457 1677 y Fu(f)494 1670 y FC(is)h(set)f(b)o(y)g(calling)i Fz(F)l(og)e FC(with)g Fv(pname)h FC(set)f(to)f Fr(FOG)p 1358 1670 V 15 w(INDEX)g FC(and)i Fv(p)n(ar)n(am)f FC(b)q(eing)332 1726 y(or)g Fv(p)n(ar)n(ams)g FC(p)q(oin)o(ting)i(to)d(the)i(single)g (\015oating-p)q(oin)o(t)g(v)m(alue)h(that)d(is)i Fy(i)1544 1733 y Fu(f)1567 1726 y FC(.)k(Finally)l(,)c(the)332 1783 y(in)o(teger)f(p)q(ortion)g(of)g Fy(I)j FC(is)e(mask)o(ed)e(\(bit) o(wise)i(ANDed\))f(with)g(2)1417 1766 y Fu(n)1450 1783 y FB(\000)9 b FC(1,)15 b(where)g Fy(n)g FC(is)g(the)332 1839 y(n)o(um)o(b)q(er)i(of)e(bits)i(in)g(a)f(color)g(in)h(the)f(color) h(index)g(bu\013er)f(\(bu\013ers)g(are)g(discussed)i(in)332 1896 y(c)o(hapter)d(4\).)403 1953 y(The)f(state)g(required)h(for)e(fog) h(consists)g(of)g(a)g(three)h(v)m(alued)g(in)o(teger)g(to)e(select)i (the)332 2010 y(fog)e(equation,)h(three)f(\015oating-p)q(oin)o(t)h(v)m (alues)h Fy(d)p FC(,)e Fy(e)p FC(,)g(and)h Fy(s)p FC(,)f(an)h(R)o(GBA)f (fog)g(color)g(and)332 2066 y(a)h(fog)g(color)h(index,)g(and)g(a)f (single)i(bit)f(to)f(indicate)i(whether)e(or)g(not)h(fog)e(is)i (enabled.)332 2123 y(In)k(the)f(initial)j(state,)d(fog)f(is)i (disabled,)i Fr(FOG)p 1125 2123 V 15 w(MODE)c FC(is)i Fr(EXP)p FC(,)e Fy(d)h FC(=)g(1)p Fy(:)p FC(0,)f Fy(e)h FC(=)h(1)p Fy(:)p FC(0,)e(and)332 2179 y Fy(s)c FC(=)g(0)p Fy(:)p FC(0;)h Fy(C)533 2186 y Fu(f)568 2179 y FC(=)f(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)f FC(0\))12 b(and)j Fy(i)922 2186 y Fu(f)957 2179 y FC(=)e(0.)332 2328 y Fs(3.10)66 b(An)n(tialiasing)24 b(Application)332 2432 y FC(Finally)l(,)19 b(if)f(an)o(tialiasing)h(is)f(enabled)h(for)e(the)g (primitiv)o(e)i(from)e(whic)o(h)h(a)f(rasterized)332 2488 y(fragmen)o(t)c(w)o(as)g(pro)q(duced,)j(then)e(the)g(computed)h (co)o(v)o(erage)e(v)m(alue)i(is)g(applied)h(to)d(the)p eop %%Page: 107 116 107 115 bop 120 137 a Fx(3.10.)34 b(ANTIALIASING)17 b(APPLICA)l(TION) 620 b FC(107)120 286 y(fragmen)o(t.)22 b(In)17 b(R)o(GBA)f(mo)q(de,)h (the)f(v)m(alue)h(is)g(m)o(ultiplied)i(b)o(y)d(the)h(fragmen)o(t's)d (alpha)120 343 y(\(A\))f(v)m(alue)i(to)d(yield)j(a)e(\014nal)h(alpha)g (v)m(alue.)21 b(In)14 b(color)f(index)i(mo)q(de,)e(the)h(v)m(alue)g(is) g(used)120 399 y(to)f(set)f(the)i(lo)o(w)e(order)h(bits)h(of)e(the)h (color)g(index)h(v)m(alue)h(as)d(describ)q(ed)j(in)f(section)g(3.2.)p eop %%Page: 108 117 108 116 bop 332 605 a Ft(Chapter)31 b(4)332 820 y FA(P)m(er-F)-10 b(ragmen)m(t)39 b(Op)s(erations)332 945 y(and)f(the)h(F)-10 b(ramebu\013er)332 1175 y FC(The)20 b(framebu\013er)f(consists)g(of)g (a)g(set)h(of)f(pixels)i(arranged)d(as)h(a)h(t)o(w)o(o-dimensional)332 1231 y(arra)o(y)l(.)31 b(The)20 b(heigh)o(t)f(and)h(width)f(of)g(this)h (arra)o(y)e(ma)o(y)g(v)m(ary)i(from)e(one)h(GL)h(imple-)332 1288 y(men)o(tation)h(to)f(another.)36 b(F)l(or)20 b(purp)q(oses)h(of)g (this)g(discussion,)i(eac)o(h)e(pixel)i(in)e(the)332 1344 y(framebu\013er)f(is)h(simply)h(a)e(set)g(of)g(some)g(n)o(um)o(b)q (er)h(of)f(bits.)36 b(The)20 b(n)o(um)o(b)q(er)h(of)f(bits)332 1401 y(p)q(er)c(pixel)h(ma)o(y)d(also)h(v)m(ary)g(dep)q(ending)j(on)d (the)g(particular)h(GL)f(implemen)o(tation)i(or)332 1457 y(con)o(text.)403 1521 y(Corresp)q(onding)h(bits)h(from)e(eac)o(h)i (pixel)h(in)f(the)f(framebu\013er)f(are)h(group)q(ed)h(to-)332 1577 y(gether)f(in)o(to)g(a)f Fv(bitplane)p FC(;)i(eac)o(h)e(bitplane)j (con)o(tains)e(a)f(single)j(bit)e(from)f(eac)o(h)h(pixel.)332 1634 y(These)c(bitplanes)g(are)f(group)q(ed)h(in)o(to)f(sev)o(eral)g Fv(lo)n(gic)n(al)g(bu\013ers)p FC(.)19 b(These)14 b(are)f(the)g Fv(c)n(olor)p FC(,)332 1690 y Fv(depth)p FC(,)k Fv(stencil)p FC(,)e(and)i Fv(ac)n(cumulation)g FC(bu\013ers.)24 b(The)17 b(color)f(bu\013er)h(actually)g(consists)332 1747 y(of)f(a)f(n)o(um)o (b)q(er)i(of)e(bu\013ers:)21 b(the)16 b Fv(fr)n(ont)h(left)e FC(bu\013er,)h(the)g Fv(fr)n(ont)h(right)f FC(bu\013er,)g(the)g Fv(b)n(ack)332 1803 y(left)d FC(bu\013er,)g(the)g Fv(b)n(ack)h(right)f FC(bu\013er,)h(and)f(some)g(n)o(um)o(b)q(er)g(of)g Fv(auxiliary)g FC(bu\013ers.)20 b(T)o(yp-)332 1860 y(ically)14 b(the)f(con)o(ten)o(ts) f(of)g(the)h(fron)o(t)e(bu\013ers)i(are)f(displa)o(y)o(ed)i(on)e(a)g (color)h(monitor)f(while)332 1916 y(the)j(con)o(ten)o(ts)g(of)f(the)i (bac)o(k)e(bu\013ers)h(are)g(in)o(visible.)23 b(\(Monoscopic)15 b(con)o(texts)f(displa)o(y)332 1973 y(only)19 b(the)g(fron)o(t)e(left)i (bu\013er;)g(stereoscopic)g(con)o(texts)f(displa)o(y)i(b)q(oth)e(the)h (fron)o(t)e(left)332 2029 y(and)e(the)h(fron)o(t)e(righ)o(t)h (bu\013ers.\))20 b(The)15 b(con)o(ten)o(ts)g(of)f(the)i(auxiliary)g (bu\013ers)f(are)g(nev)o(er)332 2086 y(visible.)22 b(All)16 b(color)f(bu\013ers)f(m)o(ust)g(ha)o(v)o(e)g(the)h(same)f(n)o(um)o(b)q (er)h(of)f(bitplanes,)i(although)332 2142 y(an)e(implemen)o(tation)h (or)f(con)o(text)f(ma)o(y)h(c)o(ho)q(ose)g(not)f(to)g(pro)o(vide)i (righ)o(t)f(bu\013ers,)g(bac)o(k)332 2198 y(bu\013ers,)k(or)g (auxiliary)i(bu\013ers)e(at)f(all.)30 b(F)l(urther,)18 b(an)g(implemen)o(tation)h(or)f(con)o(text)332 2255 y(ma)o(y)d(not)f (pro)o(vide)i(depth,)g(stencil,)g(or)f(accum)o(ulation)h(bu\013ers.)403 2319 y(Color)k(bu\013ers)g(consist)g(of)g(either)h(unsigned)h(in)o (teger)e(color)h(indices)h(or)e(R,)g(G,)332 2375 y(B,)h(and,)i (optionally)l(,)h(A)e(unsigned)h(in)o(teger)e(v)m(alues.)40 b(The)22 b(n)o(um)o(b)q(er)g(of)f(bitplanes)332 2432 y(in)g(eac)o(h)g(of)f(the)h(color)f(bu\013ers,)i(the)e(depth)h (bu\013er,)h(the)e(stencil)i(bu\013er,)g(and)e(the)332 2488 y(accum)o(ulation)f(bu\013er)g(is)g(\014xed)g(and)g(windo)o(w)f (dep)q(enden)o(t.)61 b(If)19 b(an)g(accum)o(ulation)1045 2613 y(108)p eop %%Page: 109 118 109 117 bop 120 137 a Fx(4.1.)34 b(PER-FRA)o(GMENT)15 b(OPERA)l(TIONS)621 b FC(109)p 139 242 1459 2 v 139 1275 2 1033 v 193 317 a 21313290 12787974 3354869 11182899 45455196 36837785 startTexFig 193 317 a %%BeginDocument: pics/pixop.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave gsave matrix currentmatrix [1 0 0 1 51 477] concat newpath 0 0 M 0 71 L 76.69 71 L 76.69 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 49 475 M 49 550.471 L 129.69 550.471 L 129.69 475 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 51 477] concat 6.453 59.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 6.453 59.4706 M (Fragment) 63.784 S 34.257 40.4706 M 34.257 40.4706 M (+) 8.176 S 1 21.4706 M 1 21.4706 M (Associated) 74.69 S 23.176 2.47059 M 23.176 2.47059 M (Data) 30.338 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 176 488] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 191 492] concat newpath 0 0 M 0 52 L 74.352 52 L 74.352 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 189 490 M 189 546.471 L 267.352 546.471 L 267.352 490 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 191 492] concat 20.831 40.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 20.831 40.4706 M (Pixel) 32.69 S 1 21.4706 M 1 21.4706 M (Ownership) 72.352 S 22.784 2.47059 M 22.784 2.47059 M (Test) 28.784 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 177 524 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 120 524 M 158 524 L stroke grestore gsave matrix currentmatrix [104 0 0 72 320 488] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 347 503] concat newpath 0 0 M 0 33 L 52.582 33 L 52.582 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 345 501 M 345 538.471 L 401.582 538.471 L 401.582 501 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 347 503] concat 1 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 21.4706 M (Scissor) 50.582 S 11.899 2.47059 M 11.899 2.47059 M (Test) 28.784 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 464 488] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 419 367] concat newpath 0 0 M 0 33 L 51.798 33 L 51.798 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 417 365 M 417 402.471 L 472.798 402.471 L 472.798 365 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 419 367] concat 2.946 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 2.946 21.4706 M (Stencil ) 49.798 S 11.507 2.47059 M 11.507 2.47059 M (Test) 28.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 331 306] concat newpath 0 0 M 0 19 L 78.244 19 L 78.244 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 329 304 M 329 327 L 411.244 327 L 411.244 304 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 331 306] concat /Helvetica-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Framebuffer) 76.244 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 392 352] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 498 514] concat newpath 0 0 M 0 33 L 40.892 33 L 40.892 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 496 512 M 496 549.471 L 540.892 549.471 L 540.892 512 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 498 514] concat 1 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 21.4706 M (Alpha) 38.892 S 6.054 2.47059 M 6.054 2.47059 M (Test) 28.784 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 248 352] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 256 369] concat newpath 0 0 M 0 33 L 85.216 33 L 85.216 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 254 367 M 254 404.471 L 343.216 404.471 L 343.216 367 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 256 369] concat 1 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 21.4706 M (Depth buffer) 83.216 S 28.216 2.47059 M 28.216 2.47059 M (Test) 28.784 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 464 216] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 191 233] concat newpath 0 0 M 0 31 L 72.008 31 L 72.008 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 189 231 M 189 266.471 L 265.008 266.471 L 265.008 231 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 191 233] concat 6.058 19.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 6.058 19.4706 M (Blending) 59.892 S 1 2.4 M /Helvetica-SHOWISO findfont 12 scalefont setfont 1 2.4 M (\(RGBA Only\)) 70.008 S setmatrix grestore gsave matrix currentmatrix [104 0 0 72 320 216] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 339 242] concat newpath 0 0 M 0 14 L 63.446 14 L 63.446 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 337 240 M 337 258.471 L 404.446 258.471 L 404.446 240 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 339 242] concat 1 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 2.47059 M (Dithering) 61.446 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 444 353 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 411 316 translate 180 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth newpath 444 334 M 444 316 L 430 316 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 187 306] concat newpath 0 0 M 0 19 L 78.244 19 L 78.244 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 185 304 M 185 327 L 267.244 327 L 267.244 304 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 187 306] concat /Helvetica-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Framebuffer) 76.244 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 300 353 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore gsave 0 setlinejoin 267 316 translate 180 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth newpath 300 334 M 300 316 L 286 316 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 115 170] concat newpath 0 0 M 0 19 L 78.244 19 L 78.244 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 113 168 M 113 191 L 195.244 191 L 195.244 168 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 115 170] concat /Helvetica-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Framebuffer) 76.244 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 228 217 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth newpath 228 198 M 228 180 L 196 180 L stroke grestore gsave matrix currentmatrix [104 0 0 72 176 216] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 0.857143 489 244] concat newpath 0 0 M 0 14 L 56.446 14 L 56.446 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 487 242.286 M 487 258.118 L 547.446 258.118 L 547.446 242.286 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 0.857143 489 244] concat 1 2.47059 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 1 2.47059 M (Logicop) 54.446 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 321 524 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 280 524 M 302 524 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 465 524 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 424 524 M 446 524 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 351 388 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 392 388 M 370 388 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 321 252 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 280 252 M 302 252 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 465 252 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 424 252 M 446 252 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 495 388 translate 180 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 568 524 M 608 524 L 608 388 L 514 388 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 177 252 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 248 388 M 96 388 L 96 252 L 158 252 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 617 252 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 568 252 M 598 252 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 607 231] concat newpath 0 0 M 0 33 L 83.676 33 L 83.676 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 605 229 M 605 266.471 L 692.676 266.471 L 692.676 229 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 607 231] concat 33.284 21.4706 M /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 33.284 21.4706 M (To) 17.108 S 1 2.47059 M 1 2.47059 M (Framebuffer) 81.676 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 403 170] concat newpath 0 0 M 0 19 L 78.244 19 L 78.244 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 401 168 M 401 191 L 483.244 191 L 483.244 168 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 403 170] concat /Helvetica-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Framebuffer) 76.244 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 515 217 translate 90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1.000000 setlinewidth newpath 515 198 M 515 180 L 483 180 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 480 498] concat newpath 0 0 M 0 12 L 72.008 12 L 72.008 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 478 496 M 478 512.4 L 554.008 512.4 L 554.008 496 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 480 498] concat 1 2.4 M /Helvetica-SHOWISO findfont 12 scalefont setfont 0 0 0 setrgbcolor 1 2.4 M (\(RGBA Only\)) 70.008 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1245 a Fm(Figure)14 b(4.1.)j(P)o(er-fragmen)o(t)c(op)q(erations.)p 1595 1275 2 1033 v 139 1277 1459 2 v 120 1457 a FC(bu\013er)i(is)h(pro) o(vided,)f(it)g(m)o(ust)f(ha)o(v)o(e)h(at)f(least)h(as)f(man)o(y)h (bitplanes)h(p)q(er)g(R,)e(G,)h(and)g(B)120 1513 y(color)h(comp)q(onen) o(t)f(as)g(do)g(the)g(color)g(bu\013ers.)191 1570 y(The)g(initial)j (state)c(of)h(all)h(pro)o(vided)g(bitplanes)h(is)e(unde\014ned.)120 1719 y Fs(4.1)67 b(P)n(er-F)-6 b(ragmen)n(t)23 b(Op)r(erations)120 1822 y FC(A)16 b(fragmen)o(t)f(pro)q(duced)i(b)o(y)f(rasterization)g (with)g(windo)o(w)g(co)q(ordinates)g(of)f(\()p Fy(x)1498 1829 y Fu(w)1526 1822 y Fy(;)8 b(y)1569 1829 y Fu(w)1597 1822 y FC(\))120 1878 y(mo)q(di\014es)16 b(the)g(pixel)g(in)g(the)f (framebu\013er)g(at)f(that)g(lo)q(cation)i(based)f(on)g(a)g(n)o(um)o(b) q(er)g(of)120 1935 y(parameters)g(and)h(conditions.)21 b(W)l(e)16 b(describ)q(e)h(these)e(mo)q(di\014cations)i(and)f(tests,)e (dia-)120 1991 y(grammed)e(in)h(Figure)g(4.1,)e(in)i(the)g(order)f(in)h (whic)o(h)g(they)f(are)g(p)q(erformed.)19 b(Figure)13 b(4.1)120 2048 y(diagrams)i(these)h(mo)q(di\014cations)g(and)f(tests.) 120 2175 y Fl(4.1.1)56 b(Pixel)17 b(Ownership)i(T)-5 b(est)120 2262 y FC(The)17 b(\014rst)e(test)h(is)g(to)g(determine)h(if) g(the)f(pixel)h(at)f(lo)q(cation)h(\()p Fy(x)1222 2269 y Fu(w)1250 2262 y Fy(;)8 b(y)1293 2269 y Fu(w)1320 2262 y FC(\))16 b(in)h(the)f(frame-)120 2319 y(bu\013er)e(is)g(curren)o(tly) g(o)o(wned)f(b)o(y)g(the)h(GL)f(\(more)g(precisely)l(,)i(b)o(y)f(this)g (GL)f(con)o(text\).)18 b(If)120 2375 y(it)f(is)h(not,)e(the)h(windo)o (w)g(system)f(decides)j(the)e(fate)f(the)h(incoming)h(fragmen)o(t.)23 b(P)o(os-)120 2432 y(sible)d(results)d(are)h(that)f(the)g(fragmen)o(t)g (is)h(discarded)h(or)e(that)f(some)i(subset)g(of)f(the)120 2488 y(subsequen)o(t)g(p)q(er-fragmen)o(t)f(op)q(erations)h(are)f (applied)i(to)e(the)g(fragmen)o(t.)22 b(This)17 b(test)p eop %%Page: 110 119 110 118 bop 332 137 a FC(110)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)332 286 y FC(allo)o(ws)h(the)g(windo)o(w)g(system)f(to)g(con)o(trol)h(the)g(GL's) f(b)q(eha)o(vior,)h(for)g(instance,)g(when)332 343 y(a)f(GL)g(windo)o (w)h(is)f(obscured.)332 475 y Fl(4.1.2)55 b(Scissor)19 b(test)332 564 y FC(The)11 b(scissor)f(test)g(determines)h(if)g(\()p Fy(x)948 571 y Fu(w)976 564 y Fy(;)d(y)1019 571 y Fu(w)1047 564 y FC(\))h(lies)j(within)g(the)e(scissor)g(rectangle)h(de\014ned)332 621 y(b)o(y)k(four)g(v)m(alues.)21 b(These)16 b(v)m(alues)g(are)f(set)g (with)446 722 y Fw(void)78 b Fz(Scissor)p FC(\()f Fw(int)39 b Fv(left)p Fw(,)45 b(int)38 b Fv(b)n(ottom)p Fw(,)46 b(sizei)38 b Fv(width)p Fw(,)514 778 y(sizei)14 b Fv(height)i FC(\))f Fw(;)332 879 y FC(If)k Fv(left)g FB(\024)g Fy(x)542 886 y Fu(w)590 879 y Fy(<)g Fv(left)12 b FC(+)h Fv(width)20 b FC(and)f Fv(b)n(ottom)h FB(\024)f Fy(y)1211 886 y Fu(w)1259 879 y Fy(<)g Fv(b)n(ottom)13 b FC(+)g Fv(height)p FC(,)20 b(then)f(the)332 936 y(scissor)e(test)e(passes.)23 b(Otherwise,)17 b(the)g(test)f(fails)h(and)f(the)h(fragmen)o(t)e(is)i(discarded.)332 992 y(The)j(test)g(is)g(enabled)i(or)d(disabled)j(using)f Fz(Enable)g FC(or)e Fz(Disable)i FC(using)g(the)f(con-)332 1049 y(stan)o(t)14 b Fr(SCISSOR)p 604 1049 14 2 v 14 w(TEST)p FC(.)g(When)h(disabled,)h(it)f(is)h(as)e(if)i(the)f(scissor)f (test)h(alw)o(a)o(ys)f(passes.)332 1105 y(If)19 b(either)h Fv(width)g FC(or)e Fv(height)i FC(is)f(less)h(than)f(zero,)g(then)g (the)g(error)g Fr(INVALID)p 1657 1105 V 14 w(VALUE)f FC(is)332 1161 y(generated.)44 b(The)24 b(state)e(required)i(consists)g (of)f(four)g(in)o(teger)g(v)m(alues)i(and)e(a)g(bit)332 1218 y(indicating)j(whether)e(the)h(test)e(is)i(enabled)g(or)f (disabled.)48 b(In)25 b(the)f(initial)i(state)332 1274 y Fy(l)q(ef)5 b(t)21 b FC(=)h Fy(bottom)f FC(=)h(0;)g Fy(w)q(idth)e FC(and)h Fy(heig)r(ht)f FC(are)g(determined)i(b)o(y)e (the)g(size)h(of)f(the)332 1331 y(GL)15 b(windo)o(w.)20 b(Initially)l(,)e(the)d(scissor)h(test)e(is)i(disabled.)332 1463 y Fl(4.1.3)55 b(Alpha)19 b(test)332 1552 y FC(This)c(step)f (applies)i(only)f(in)g(R)o(GBA)f(mo)q(de.)20 b(In)15 b(color)f(index)h(mo)q(de,)g(pro)q(ceed)g(to)e(the)332 1609 y(next)g(step.)19 b(The)13 b(alpha)g(test)g(discards)g(a)g (fragmen)o(t)e(conditional)k(on)e(the)f(outcome)h(of)332 1665 y(a)j(comparison)g(b)q(et)o(w)o(een)h(the)f(incoming)h(fragmen)o (t's)e(alpha)i(v)m(alue)g(and)f(a)g(constan)o(t)332 1722 y(v)m(alue.)21 b(The)16 b(comparison)f(is)h(enabled)g(or)f(disabled)i (with)e(the)h(generic)g Fz(Enable)g FC(and)332 1778 y Fz(Disable)d FC(commands)e(using)h(the)g(sym)o(b)q(olic)h(constan)o(t)d Fr(ALPHA)p 1400 1778 V 15 w(TEST)p FC(.)g(When)i(disabled,)332 1834 y(it)k(is)f(as)g(if)h(the)f(comparison)g(alw)o(a)o(ys)g(passes.)20 b(The)15 b(test)g(is)g(con)o(trolled)h(with)446 1935 y Fw(void)29 b Fz(AlphaF)l(unc)p FC(\()i Fw(enum)14 b Fv(func)p Fw(,)h(clampf)g Fv(r)n(ef)f FC(\))h Fw(;)332 2037 y Fv(func)f FC(is)h(a)f(sym)o(b)q(olic)i(constan)o(t)d(indicating) k(the)d(alpha)h(test)f(function;)h Fv(r)n(ef)f FC(is)h(a)f(refer-)332 2093 y(ence)g(v)m(alue.)20 b Fv(r)n(ef)13 b FC(is)h(clamp)q(ed)g(to)f (lie)h(in)g([0)p Fy(;)8 b FC(1],)j(and)j(then)f(con)o(v)o(erted)g(to)f (a)h(\014xed-p)q(oin)o(t)332 2149 y(v)m(alue)i(according)e(to)g(the)g (rules)h(giv)o(en)g(for)f(an)g(A)g(comp)q(onen)o(t)h(in)g(section)g (2.13.9.)j(F)l(or)332 2206 y(purp)q(oses)j(of)f(the)h(alpha)g(test,)g (the)g(fragmen)o(t's)e(alpha)i(v)m(alue)h(is)f(also)g(rounded)g(to)332 2262 y(the)c(nearest)g(in)o(teger.)22 b(The)16 b(p)q(ossible)i(constan) o(ts)d(sp)q(ecifying)j(the)e(test)f(function)i(are)332 2319 y Fr(NEVER)p FC(,)g Fr(ALWAYS)p FC(,)f Fr(LESS)p FC(,)h Fr(LEQUAL)p FC(,)f Fr(EQUAL)p FC(,)h Fr(GEQUAL)p FC(,)f Fr(GREATER)p FC(,)g(or)i Fr(NOTEQUAL)p FC(,)e(meaning)332 2375 y(pass)g(the)h(fragmen)o(t)e(nev)o(er,)i(alw)o(a)o(ys,)f(if)h(the) f(fragmen)o(t's)f(alpha)i(v)m(alue)h(is)f(less)g(than,)332 2432 y(less)d(than)f(or)g(equal)h(to,)f(equal)h(to,)f(greater)f(than)i (or)e(equal)j(to,)d(greater)h(than,)g(or)g(not)332 2488 y(equal)j(to)f(the)g(reference)h(v)m(alue,)g(resp)q(ectiv)o(ely)l(.)p eop %%Page: 111 120 111 119 bop 120 137 a Fx(4.1.)34 b(PER-FRA)o(GMENT)15 b(OPERA)l(TIONS)621 b FC(111)191 286 y(The)12 b(required)g(state)f (consists)h(of)f(the)g(\015oating-p)q(oin)o(t)i(reference)f(v)m(alue,)h (an)e(eigh)o(t-)120 343 y(v)m(alued)j(in)o(teger)e(indicating)i(the)e (comparison)g(function,)i(and)e(a)g(bit)g(indicating)i(if)f(the)120 399 y(comparison)g(is)g(enabled)h(or)e(disabled.)20 b(The)13 b(initial)i(state)c(is)i(for)f(the)g(reference)i(v)m(alue)120 456 y(to)h(b)q(e)h(0)f(and)g(the)g(function)h(to)f(b)q(e)h Fr(ALWAYS)p FC(.)d(Initially)l(,)18 b(the)d(alpha)h(test)f(is)g (disabled.)120 578 y Fl(4.1.4)56 b(Stencil)17 b(test)120 663 y FC(The)c(stencil)i(test)d(conditionally)j(discards)e(a)f(fragmen) o(t)g(based)h(on)g(the)f(outcome)h(of)f(a)120 720 y(comparison)k(b)q (et)o(w)o(een)g(the)f(v)m(alue)i(in)f(the)g(stencil)g(bu\013er)g(at)f (lo)q(cation)h(\()p Fy(x)1410 727 y Fu(w)1438 720 y Fy(;)8 b(y)1481 727 y Fu(w)1508 720 y FC(\))16 b(and)120 776 y(a)f(reference)h(v)m(alue.)21 b(The)16 b(test)e(is)i(con)o(trolled)g (with)234 870 y Fw(void)30 b Fz(StencilF)l(unc)p FC(\()h Fw(enum)15 b Fv(func)p Fw(,)g(int)f Fv(r)n(ef)p Fw(,)h(uint)g Fv(mask)g FC(\))g Fw(;)234 927 y(void)30 b Fz(StencilOp)p FC(\()i Fw(enum)14 b Fv(sfail)p Fw(,)h(enum)f Fv(dpfail)p Fw(,)h(enum)g Fv(dpp)n(ass)g FC(\))g Fw(;)120 1020 y FC(The)c(test)f(is)i(enabled)g(or)e(disabled)i(with)f(the)g Fz(Enable)h FC(and)f Fz(Disable)g FC(commands,)g(us-)120 1077 y(ing)j(the)g(sym)o(b)q(olic)g(constan)o(t)f Fr(STENCIL)p 796 1077 14 2 v 14 w(TEST)p FC(.)f(When)i(disabled,)h(the)e(stencil)i (test)e(and)120 1133 y(asso)q(ciated)j(mo)q(di\014cations)g(are)f(not)g (made,)g(and)g(the)g(fragmen)o(t)f(is)i(alw)o(a)o(ys)e(passed.)191 1190 y Fv(r)n(ef)f FC(is)i(an)f(in)o(teger)g(reference)g(v)m(alue)h (that)f(is)g(used)g(in)h(the)f(unsigned)h(stencil)h(com-)120 1246 y(parison.)k(It)15 b(is)g(clamp)q(ed)g(to)f(the)h(range)f([0)p Fy(;)8 b FC(2)906 1230 y Fu(s)931 1246 y FB(\000)h FC(1],)k(where)i Fy(s)f FC(is)h(the)g(n)o(um)o(b)q(er)f(of)g(bits)120 1303 y(in)h(the)f(stencil)h(bu\013er.)20 b Fv(func)13 b FC(is)i(a)e(sym)o(b)q(olic)i(constan)o(t)e(that)g(determines)i(the)f (stencil)120 1359 y(comparison)j(function;)h(the)e(eigh)o(t)h(sym)o(b)q (olic)g(constan)o(ts)f(are)g Fr(NEVER)p FC(,)f Fr(ALWAYS)p FC(,)g Fr(LESS)p FC(,)120 1416 y Fr(LEQUAL)p FC(,)k Fr(EQUAL)p FC(,)g Fr(GEQUAL)p FC(,)g Fr(GREATER)p FC(,)f(or)i Fr(NOTEQUAL)p FC(.)e(Accordingly)l(,)23 b(the)d(stencil)i(test)120 1472 y(passes)13 b(nev)o(er,)g(alw)o(a)o(ys,)g(if)g(the)g(reference)h (v)m(alue)g(is)g(less)f(than,)g(less)h(than)f(or)f(equal)i(to,)120 1528 y(equal)i(to,)d(greater)h(than)h(or)f(equal)h(to,)f(greater)g (than,)g(or)g(not)g(equal)h(to)f(the)h(mask)o(ed)120 1585 y(stored)k(v)m(alue)g(in)h(the)e(stencil)i(bu\013er.)30 b(The)19 b Fy(s)g FC(least)g(signi\014can)o(t)g(bits)g(of)g Fv(mask)f FC(are)120 1641 y(bit)o(wise)h(ANDed)g(with)g(b)q(oth)f(the)g (reference)h(and)g(the)f(stored)g(stencil)h(v)m(alue.)30 b(The)120 1698 y(ANDed)16 b(v)m(alues)g(are)f(those)g(that)g (participate)g(in)i(the)e(comparison.)191 1754 y Fz(StencilOp)23 b FC(tak)o(es)d(three)h(argumen)o(ts)f(that)g(indicate)i(what)f(happ)q (ens)g(to)g(the)120 1811 y(stored)h(stencil)h(v)m(alue)g(if)f(this)g (or)f(certain)h(subsequen)o(t)h(tests)e(fail)h(or)f(pass.)39 b Fv(sfail)120 1867 y FC(indicates)13 b(what)e(action)g(is)h(tak)o(en)e (if)i(the)f(stencil)i(test)e(fails.)19 b(The)11 b(sym)o(b)q(olic)i (constan)o(ts)120 1924 y(are)f Fr(KEEP)p FC(,)f Fr(ZERO)p FC(,)f Fr(REPLACE)p FC(,)g Fr(INCR)p FC(,)h Fr(DECR)p FC(,)g(and)h Fr(INVERT)p FC(.)e(These)i(corresp)q(ond)h(to)e(k)o (eeping)120 1980 y(the)19 b(curren)o(t)f(v)m(alue,)j(setting)d(it)h(to) f(zero,)h(replacing)g(it)g(with)g(the)g(reference)g(v)m(alue,)120 2037 y(incremen)o(ting)j(it,)e(decremen)o(ting)h(it,)g(or)e(bit)o(wise) i(in)o(v)o(erting)g(it.)34 b(F)l(or)19 b(purp)q(oses)h(of)120 2093 y(incremen)o(t)j(and)e(decremen)o(t,)i(the)e(stencil)i(bits)f(are) f(considered)i(as)e(an)g(unsigned)120 2149 y(in)o(teger;)14 b(v)m(alues)h(clamp)g(at)e(0)g(and)h(the)g(maxim)o(um)g(represen)o (table)g(v)m(alue.)21 b(The)14 b(same)120 2206 y(sym)o(b)q(olic)19 b(v)m(alues)g(are)e(giv)o(en)h(to)f(indicate)i(the)f(stencil)h(action)f (if)g(the)g(depth)g(bu\013er)120 2262 y(test)d(\(b)q(elo)o(w\))g(fails) h(\()p Fv(dpfail)p FC(\),)e(or)h(if)h(it)f(passes)g(\()p Fv(dpp)n(ass)p FC(\).)191 2319 y(If)k(the)f(stencil)i(test)e(fails,)h (the)g(incoming)g(fragmen)o(t)e(is)i(discarded.)31 b(The)19 b(state)120 2375 y(required)12 b(consists)f(of)f(the)h(most)e(recen)o (t)i(v)m(alues)h(passed)e(to)g Fz(StencilF)l(unc)i FC(and)f Fz(Sten-)120 2432 y(cilOp)p FC(,)20 b(and)e(a)f(bit)i(indicating)g (whether)f(stencil)i(testing)d(is)i(enabled)g(or)e(disabled.)120 2488 y(In)f(the)f(initial)i(state,)d(stenciling)k(is)d(disabled,)i(the) e(stencil)h(reference)g(v)m(alue)h(is)e(zero,)p eop %%Page: 112 121 112 120 bop 332 137 a FC(112)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)332 286 y FC(the)i(stencil)i(comparison)e(function)g(is)h Fr(ALWAYS)p FC(,)d(and)i(the)g(stencil)i Fv(mask)d FC(is)i(all)g(ones.)332 343 y(Initially)l(,)e(all)f(three)e(stencil)i(op)q(erations)f(are)f Fr(KEEP)p FC(.)f(If)h(there)h(is)g(no)f(stencil)i(bu\013er,)f(no)332 399 y(stencil)19 b(mo)q(di\014cation)f(can)g(o)q(ccur,)f(and)h(it)f(is) h(as)f(if)h(the)f(stencil)i(tests)e(alw)o(a)o(ys)f(pass,)332 456 y(regardless)f(of)g(an)o(y)g(calls)h(to)f Fz(StencilOp)p FC(.)332 581 y Fl(4.1.5)55 b(Depth)19 b(bu\013er)f(test)332 668 y FC(The)c(depth)g(bu\013er)f(test)g(discards)h(the)g(incoming)g (fragmen)o(t)e(if)i(a)f(depth)h(comparison)332 725 y(fails.)26 b(The)17 b(comparison)g(is)g(enabled)i(or)d(disabled)j(with)e(the)g (generic)h Fz(Enable)g FC(and)332 781 y Fz(Disable)13 b FC(commands)e(using)h(the)g(sym)o(b)q(olic)h(constan)o(t)d Fr(DEPTH)p 1400 781 14 2 v 15 w(TEST)p FC(.)g(When)i(disabled,)332 838 y(the)k(depth)g(comparison)g(and)g(subsequen)o(t)h(p)q(ossible)h (up)q(dates)e(to)f(the)h(depth)g(bu\013er)332 894 y(v)m(alue)i(are)f(b) o(ypassed)g(and)g(the)g(fragmen)o(t)f(is)h(passed)h(to)e(the)h(next)g (op)q(eration.)25 b(The)332 951 y(stencil)17 b(v)m(alue,)f(ho)o(w)o(ev) o(er,)f(is)h(mo)q(di\014ed)h(as)e(indicated)i(b)q(elo)o(w)f(as)f(if)h (the)f(depth)h(bu\013er)332 1007 y(test)c(passed.)19 b(If)13 b(enabled,)h(the)e(comparison)h(tak)o(es)e(place)j(and)e(the)h (depth)g(bu\013er)f(and)332 1064 y(stencil)17 b(v)m(alue)f(ma)o(y)f (subsequen)o(tly)h(b)q(e)g(mo)q(di\014ed.)403 1121 y(The)f(comparison)g (is)h(sp)q(eci\014ed)h(with)446 1217 y Fw(void)29 b Fz(DepthF)l(unc)p FC(\()i Fw(enum)14 b Fv(func)h FC(\))g Fw(;)332 1314 y FC(This)f(command)g(tak)o(es)f(a)g(single)i(sym)o(b)q(olic)g(constan) o(t:)j(one)13 b(of)h Fr(NEVER)p FC(,)e Fr(ALWAYS)p FC(,)g Fr(LESS)p FC(,)332 1370 y Fr(LEQUAL)p FC(,)g Fr(EQUAL)p FC(,)g Fr(GREATER)p FC(,)g Fr(GEQUAL)p FC(,)g Fr(NOTEQUAL)p FC(.)f(Accordingly)l(,)16 b(the)d(depth)h(bu\013er)g(test)332 1427 y(passes)k(nev)o(er,)f(alw)o(a)o(ys,)g(if)h(the)g(incoming)h (fragmen)o(t's)c Fy(z)1336 1434 y Fu(w)1382 1427 y FC(v)m(alue)k(is)f (less)g(than,)g(less)332 1483 y(than)11 b(or)f(equal)i(to,)e(equal)i (to,)f(greater)f(than,)h(greater)f(than)g(or)h(equal)g(to,)g(or)f(not)h (equal)332 1540 y(to)k(the)h(depth)h(v)m(alue)g(stored)f(at)f(the)h(lo) q(cation)h(giv)o(en)f(b)o(y)g(the)g(incoming)h(fragmen)o(t's)332 1596 y(\()p Fy(x)376 1603 y Fu(w)404 1596 y Fy(;)8 b(y)447 1603 y Fu(w)475 1596 y FC(\))15 b(co)q(ordinates.)403 1653 y(If)j(the)g(depth)g(bu\013er)g(test)g(fails,)h(the)f(incoming)h (fragmen)o(t)e(is)h(discarded.)29 b(The)332 1710 y(stencil)16 b(v)m(alue)g(at)e(the)g(fragmen)o(t's)f(\()p Fy(x)988 1717 y Fu(w)1016 1710 y Fy(;)8 b(y)1059 1717 y Fu(w)1087 1710 y FC(\))14 b(co)q(ordinates)h(is)g(up)q(dated)g(according)g(to)332 1766 y(the)h(function)g(curren)o(tly)g(in)g(e\013ect)g(for)f(depth)h (bu\013er)f(test)g(failure.)22 b(Otherwise,)16 b(the)332 1823 y(fragmen)o(t)f(con)o(tin)o(ues)h(to)f(the)g(next)h(op)q(eration)g (and)g(the)f(v)m(alue)i(of)f(the)f(depth)h(bu\013er)332 1879 y(at)e(the)g(fragmen)o(t's)e(\()p Fy(x)729 1886 y Fu(w)757 1879 y Fy(;)c(y)800 1886 y Fu(w)828 1879 y FC(\))14 b(lo)q(cation)h(is)f(set)g(to)f(the)i(fragmen)o(t's)d Fy(z)1520 1886 y Fu(w)1563 1879 y FC(v)m(alue.)20 b(In)15 b(this)332 1935 y(case)e(the)f(stencil)i(v)m(alue)g(is)f(up)q(dated)g (according)g(to)f(the)h(function)g(curren)o(tly)g(in)h(e\013ect)332 1992 y(for)h(depth)g(bu\013er)h(test)e(success.)403 2049 y(The)g(necessary)f(state)g(is)h(an)g(eigh)o(t-v)m(alued)h(in)o(teger)f (and)g(a)f(single)i(bit)g(indicating)332 2105 y(whether)23 b(depth)g(bu\013ering)g(is)h(enabled)g(or)e(disabled.)44 b(In)23 b(the)g(initial)i(state)c(the)332 2162 y(function)16 b(is)g Fr(LESS)e FC(and)i(the)f(test)f(is)i(disabled.)403 2219 y(If)e(there)h(is)f(no)h(depth)g(bu\013er,)f(it)g(is)h(as)f(if)h (the)f(depth)h(bu\013er)g(test)e(alw)o(a)o(ys)h(passes.)332 2345 y Fl(4.1.6)55 b(Blending)332 2432 y FC(Blending)16 b(com)o(bines)f(the)f(incoming)i(fragmen)o(t's)c(R,)j(G,)e(B,)h(and)g (A)h(v)m(alues)g(with)f(the)332 2488 y(R,)h(G,)e(B,)i(and)f(A)h(v)m (alues)g(stored)f(in)i(the)e(framebu\013er)g(at)g(the)g(incoming)i (fragmen)o(t's)p eop %%Page: 113 122 113 121 bop 120 137 a Fx(4.1.)34 b(PER-FRA)o(GMENT)15 b(OPERA)l(TIONS)621 b FC(113)p 341 242 1054 2 v 340 299 2 57 v 366 282 a(V)l(alue)p 786 299 V 335 w(Blend)17 b(F)l(actors)p 1394 299 V 341 301 1054 2 v 341 309 V 340 365 2 57 v 366 348 a Fr(ZERO)p 786 365 V 357 w FC(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)g FC(0)o(\))p 1394 365 V 341 367 1054 2 v 340 423 2 57 v 366 406 a Fr(ONE)p 786 423 V 379 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))p 1394 423 V 341 425 1054 2 v 340 482 2 57 v 366 465 a Fr(DST)p 435 465 14 2 v 15 w(COLOR)p 786 482 2 57 v 254 w Fy(R)846 472 y Fu(d)866 465 y Fy(;)g(G)923 472 y Fu(d)942 465 y Fy(;)g(B)997 472 y Fu(d)1017 465 y Fy(;)g(A)1072 472 y Fu(d)p 1394 482 V 341 483 1054 2 v 340 540 2 57 v 366 523 a Fr(ONE)p 435 523 14 2 v 15 w(MINUS)p 560 523 V 14 w(DST)p 640 523 V 16 w(COLOR)p 786 540 2 57 v 48 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))f FB(\000)k FC(\()p Fy(R)1107 530 y Fu(d)1126 523 y Fy(;)d(G)1183 530 y Fu(d)1202 523 y Fy(;)g(B)1257 530 y Fu(d)1277 523 y Fy(;)g(A)1332 530 y Fu(d)1352 523 y FC(\))p 1394 540 V 341 541 1054 2 v 340 598 2 57 v 366 581 a Fr(SRC)p 435 581 14 2 v 15 w(ALPHA)p 786 598 2 57 v 254 w FC(\()p Fy(A)863 588 y Fu(s)881 581 y Fy(;)g(A)936 588 y Fu(s)954 581 y Fy(;)g(A)1009 588 y Fu(s)1027 581 y Fy(;)g(A)1082 588 y Fu(s)1100 581 y FC(\))p 1394 598 V 341 599 1054 2 v 340 656 2 57 v 366 639 a Fr(ONE)p 435 639 14 2 v 15 w(MINUS)p 560 639 V 14 w(SRC)p 640 639 V 16 w(ALPHA)p 786 656 2 57 v 48 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))f FB(\000)k FC(\()p Fy(A)1106 646 y Fu(s)1124 639 y Fy(;)d(A)1179 646 y Fu(s)1197 639 y Fy(;)g(A)1252 646 y Fu(s)1269 639 y Fy(;)g(A)1324 646 y Fu(s)1342 639 y FC(\))p 1394 656 V 341 658 1054 2 v 340 714 2 57 v 366 697 a Fr(DST)p 435 697 14 2 v 15 w(ALPHA)p 786 714 2 57 v 254 w FC(\()p Fy(A)863 704 y Fu(d)883 697 y Fy(;)g(A)938 704 y Fu(d)958 697 y Fy(;)g(A)1013 704 y Fu(d)1032 697 y Fy(;)g(A)1087 704 y Fu(d)1107 697 y FC(\))p 1394 714 V 341 716 1054 2 v 340 772 2 57 v 366 755 a Fr(ONE)p 435 755 14 2 v 15 w(MINUS)p 560 755 V 14 w(DST)p 640 755 V 16 w(ALPHA)p 786 772 2 57 v 48 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))f FB(\000)k FC(\()p Fy(A)1106 762 y Fu(d)1126 755 y Fy(;)d(A)1181 762 y Fu(d)1200 755 y Fy(;)g(A)1255 762 y Fu(d)1275 755 y Fy(;)g(A)1330 762 y Fu(d)1349 755 y FC(\))p 1394 772 V 341 774 1054 2 v 340 830 2 57 v 366 813 a Fr(SRC)p 435 813 14 2 v 15 w(ALPHA)p 560 813 V 14 w(SATURATE)p 786 830 2 57 v 64 w FC(\()p Fy(f)r(;)g(f)r(;)g(f)r(;)g FC(1\))p 1394 830 V 341 832 1054 2 v 120 909 a(T)l(able)20 b(4.1:)26 b(V)l(alues)19 b(con)o(trolling)h(the)e(source)h(blending)i (function)e(and)g(the)g(source)120 966 y(blending)f(v)m(alues)e(they)f (compute.)20 b Fy(f)e FC(=)13 b(min)q(\()p Fy(A)960 973 y Fu(s)978 966 y Fy(;)8 b FC(1)h FB(\000)i Fy(A)1111 973 y Fu(d)1131 966 y FC(\).)120 1144 y(\()p Fy(x)164 1151 y Fu(w)192 1144 y Fy(;)d(y)235 1151 y Fu(w)263 1144 y FC(\))18 b(lo)q(cation.)29 b(This)19 b(blending)h(is)e(dep)q(enden)o (t)i(on)e(the)g(incoming)h(fragmen)o(t's)120 1200 y(alpha)e(v)m(alue)g (and)f(that)f(of)h(the)g(corresp)q(onding)h(curren)o(tly)f(stored)g (pixel.)24 b(Blending)120 1257 y(applies)18 b(only)f(in)h(R)o(GBA)e(mo) q(de;)h(in)h(color)e(index)i(mo)q(de)f(it)g(is)g(b)o(ypassed.)24 b(Blending)120 1313 y(is)14 b(enabled)h(or)e(disabled)j(using)e Fz(Enable)h FC(or)e Fz(Disable)h FC(with)g(the)g(sym)o(b)q(olic)h (constan)o(t)120 1370 y Fr(BLEND)p FC(.)20 b(If)i(it)g(is)g(disabled,)i (or)d(if)h(logical)g(op)q(eration)g(on)f(color)h(v)m(alues)g(is)g (enabled)120 1426 y(\(section)16 b(4.1.8\),)d(pro)q(ceed)j(to)e(the)i (next)f(stage.)191 1483 y(The)g(command)g(that)g(con)o(trols)g (blending)i(is)234 1562 y Fw(void)30 b Fz(BlendF)l(unc)p FC(\()g Fw(enum)15 b Fv(sr)n(c)p Fw(,)f(enum)h Fv(dst)g FC(\))g Fw(;)120 1641 y Fv(sr)n(c)i FC(indicates)j(ho)o(w)d(to)g (compute)h(a)g(source)f(blending)j(factor,)d(while)j Fv(dst)d FC(indicates)120 1698 y(ho)o(w)k(to)g(compute)g(a)g (destination)h(factor.)36 b(The)22 b(p)q(ossible)h(argumen)o(ts)d(and)h (their)120 1754 y(corresp)q(onding)d(computed)g(source)f(and)g (destination)h(factors)e(are)h(summarized)h(in)120 1811 y(T)l(ables)c(4.1)f(and)g(4.2.)18 b(In)c(these)g(tables)g(a)e (subscript)j(of)e Fy(s)g FC(indicates)i(a)e(v)m(alue)h(from)f(an)120 1867 y(incoming)h(fragmen)o(t;)e(one)g(of)g Fy(d)g FC(indicates)i(the)f (corresp)q(onding)g(curren)o(t)f(framebu\013er)120 1924 y(v)m(alue.)21 b(Division)c(of)d(a)h(quadruplet)h(b)o(y)f(a)g(scalar)g (means)g(dividing)i(eac)o(h)e(elemen)o(t)h(b)o(y)120 1980 y(that)e(v)m(alue.)20 b(Addition)c(or)d(subtraction)h(of)f (quadruplets)i(or)e(triplets)i(means)f(adding)120 2037 y(or)h(subtracting)g(them)h(comp)q(onen)o(t-wise.)191 2093 y(The)21 b(computations)f(in)h(T)l(ables)h(4.1)d(and)i(4.2)e(are)h (e\013ectiv)o(ely)i(carried)f(out)f(in)120 2149 y(\015oating-p)q(oin)o (t)15 b(and)f(yield)h(\015oating-p)q(oin)o(t)f(blending)i(factors.)i (Destination)c(\(frame-)120 2206 y(bu\013er\))h(comp)q(onen)o(ts)f (referred)h(to)f(in)h(the)g(tables)g(are)f(tak)o(en)g(to)g(b)q(e)h (\014xed-p)q(oin)o(t)h(v)m(al-)120 2262 y(ues)e(represen)o(ted)g (according)g(to)f(the)g(sc)o(heme)h(giv)o(en)g(in)g(section)g(2.13.9)e (\(Final)i(Color)120 2319 y(Pro)q(cessing\),)i(as)g(are)g(source)g (\(fragmen)o(t\))e(comp)q(onen)o(ts.)22 b(An)o(y)16 b(implied)j(con)o (v)o(ersion)120 2375 y(to)c(\015oating-p)q(oin)o(t)h(m)o(ust)e(lea)o(v) o(e)i(0)f(and)g(1)g(in)o(v)m(arian)o(t.)191 2432 y(The)h(computed)g (source)g(and)g(destination)h(blending)h(quadruplets)e(are)g(applied) 120 2488 y(to)f(the)h(source)f(and)h(destination)g(R,)g(G,)f(B,)g(and)g (A)h(v)m(alues)h(to)d(obtain)i(a)f(new)h(set)f(of)p eop %%Page: 114 123 114 122 bop 332 137 a FC(114)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)p 554 242 1052 2 v 553 299 2 57 v 579 282 a FC(V)l(alue)p 999 299 V 335 w(Blend)i(factors)p 1604 299 V 554 301 1052 2 v 554 309 V 553 365 2 57 v 579 348 a Fr(ZERO)p 999 365 V 357 w FC(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)g FC(0)o(\))p 1604 365 V 554 367 1052 2 v 553 423 2 57 v 579 406 a Fr(ONE)p 999 423 V 379 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))p 1604 423 V 554 425 1052 2 v 553 482 2 57 v 579 465 a Fr(SRC)p 648 465 14 2 v 15 w(COLOR)p 999 482 2 57 v 254 w Fy(R)1059 472 y Fu(s)1077 465 y Fy(;)g(G)1134 472 y Fu(s)1151 465 y Fy(;)g(B)1206 472 y Fu(s)1225 465 y Fy(;)g(A)1280 472 y Fu(s)p 1604 482 V 554 483 1052 2 v 553 540 2 57 v 579 523 a Fr(ONE)p 648 523 14 2 v 15 w(MINUS)p 773 523 V 14 w(SRC)p 853 523 V 15 w(COLOR)p 999 540 2 57 v 49 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))f FB(\000)k FC(\()p Fy(R)1320 530 y Fu(s)1337 523 y Fy(;)d(G)1394 530 y Fu(s)1412 523 y Fy(;)g(B)1467 530 y Fu(s)1485 523 y Fy(;)g(A)1540 530 y Fu(s)1557 523 y FC(\))p 1604 540 V 554 541 1052 2 v 553 598 2 57 v 579 581 a Fr(SRC)p 648 581 14 2 v 15 w(ALPHA)p 999 598 2 57 v 254 w FC(\()p Fy(A)1076 588 y Fu(s)1094 581 y Fy(;)g(A)1149 588 y Fu(s)1167 581 y Fy(;)g(A)1222 588 y Fu(s)1240 581 y Fy(;)g(A)1295 588 y Fu(s)1312 581 y FC(\))p 1604 598 V 554 599 1052 2 v 553 656 2 57 v 579 639 a Fr(ONE)p 648 639 14 2 v 15 w(MINUS)p 773 639 V 14 w(SRC)p 853 639 V 15 w(ALPHA)p 999 656 2 57 v 49 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))f FB(\000)k FC(\()p Fy(A)1319 646 y Fu(s)1337 639 y Fy(;)d(A)1392 646 y Fu(s)1410 639 y Fy(;)g(A)1465 646 y Fu(s)1482 639 y Fy(;)g(A)1537 646 y Fu(s)1555 639 y FC(\))p 1604 656 V 554 658 1052 2 v 553 714 2 57 v 579 697 a Fr(DST)p 648 697 14 2 v 15 w(ALPHA)p 999 714 2 57 v 254 w FC(\()p Fy(A)1076 704 y Fu(d)1096 697 y Fy(;)g(A)1151 704 y Fu(d)1171 697 y Fy(;)g(A)1226 704 y Fu(d)1245 697 y Fy(;)g(A)1300 704 y Fu(d)1320 697 y FC(\))p 1604 714 V 554 716 1052 2 v 553 772 2 57 v 579 755 a Fr(ONE)p 648 755 14 2 v 15 w(MINUS)p 773 755 V 14 w(DST)p 853 755 V 15 w(ALPHA)p 999 772 2 57 v 49 w FC(\(1)p Fy(;)g FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1)o(\))f FB(\000)k FC(\()p Fy(A)1319 762 y Fu(d)1339 755 y Fy(;)d(A)1394 762 y Fu(d)1413 755 y Fy(;)g(A)1468 762 y Fu(d)1488 755 y Fy(;)g(A)1543 762 y Fu(d)1562 755 y FC(\))p 1604 772 V 554 774 1052 2 v 332 851 a(T)l(able)15 b(4.2:)j(V)l(alues)d(con)o (trolling)g(the)f(destination)g(blending)i(function)f(and)f(the)g(des-) 332 907 y(tination)i(blending)h(v)m(alues)g(they)e(compute.)332 1098 y(v)m(alues)j(that)f(are)f(sen)o(t)h(to)f(the)h(next)g(op)q (eration.)26 b(Let)17 b(the)g(source)g(and)h(destination)332 1155 y(blending)d(quadruplets)f(b)q(e)g Fy(S)h FC(and)e Fy(D)q FC(,)g(resp)q(ectiv)o(ely)l(.)21 b(Then)13 b(a)g(quadruplet)h (of)e(v)m(alues)332 1211 y(is)k(computed)f(as)959 1272 y Fy(C)992 1279 y Fu(s)1010 1272 y Fy(S)d FC(+)f Fy(C)1129 1279 y Fu(d)1148 1272 y Fy(D)q(;)332 1362 y FC(where)21 b(m)o(ultiplication)j(of)c(quadruplets)i(means)f(m)o(ultiplying)i(them) e(comp)q(onen)o(t-)332 1418 y(wise.)26 b(Then)17 b(eac)o(h)g(v)m(alue)h (in)g(this)f(quadruplet)h(is)f(clamp)q(ed)i(to)d(2)1485 1401 y Fu(n)1519 1418 y FB(\000)c FC(1,)17 b(where)g Fy(n)g FC(is)332 1474 y(the)j(n)o(um)o(b)q(er)g(of)f(bits)h(allo)q (cated)g(to)f(that)g(color)h(comp)q(onen)o(t)f(in)i(the)e (framebu\013er,)332 1531 y(and)c(the)h(four)f(v)m(alues)h(are)f(sen)o (t)g(to)f(the)i(next)f(op)q(eration.)403 1589 y(The)22 b(state)f(required)i(is)f(t)o(w)o(o)e(in)o(tegers)i(indicating)i(the)e (source)g(and)g(destina-)332 1645 y(tion)f(blending)i(functions)f(and)e (a)h(bit)g(indicating)i(whether)e(blending)i(is)e(enabled)332 1702 y(or)15 b(disabled.)21 b(The)16 b(initial)h(state)d(of)h(the)g (blending)j(functions)d(is)h Fr(ONE)f FC(for)f(the)h(source)332 1758 y(function)e(and)f Fr(ZERO)g FC(for)f(the)h(destination)h (function;)h(initially)l(,)h(blending)f(is)f(disabled.)403 1816 y(Blending)k(o)q(ccurs)f(once)g(for)f(eac)o(h)g(color)h(bu\013er)f (curren)o(tly)h(enabled)h(for)e(writing)332 1873 y(\(section)j(4.2.1\)) f(using)i(eac)o(h)f(bu\013er's)g(color)g(for)f Fy(C)1244 1880 y Fu(d)1264 1873 y FC(.)29 b(If)18 b(a)g(color)g(bu\013er)g(has)g (no)g(A)332 1929 y(v)m(alue,)e(then)g(it)f(is)h(as)f(if)g(the)h (destination)g(A)f(v)m(alue)h(is)g(1.)332 2060 y Fl(4.1.7)55 b(Dithering)332 2149 y FC(Dithering)15 b(selects)h(b)q(et)o(w)o(een)f (t)o(w)o(o)e(color)h(v)m(alues)i(or)e(indices.)22 b(In)15 b(R)o(GBA)g(mo)q(de,)f(con-)332 2206 y(sider)g(the)g(v)m(alue)h(of)e (an)o(y)g(of)g(the)h(color)g(comp)q(onen)o(ts)f(as)h(a)f(\014xed-p)q (oin)o(t)i(v)m(alue)g(with)f Fy(m)332 2262 y FC(bits)h(to)f(the)h(left) g(of)g(the)g(binary)g(p)q(oin)o(t,)g(where)g Fy(m)g FC(is)g(the)g(n)o (um)o(b)q(er)g(of)f(bits)h(allo)q(cated)332 2319 y(to)j(that)f(comp)q (onen)o(t)i(in)g(the)f(framebu\013er;)h(call)g(eac)o(h)g(suc)o(h)f(v)m (alue)i Fy(c)p FC(.)28 b(F)l(or)18 b(eac)o(h)g Fy(c)p FC(,)332 2375 y(dithering)f(selects)f(a)f(v)m(alue)h Fy(c)844 2382 y Fq(1)879 2375 y FC(suc)o(h)g(that)e Fy(c)1100 2382 y Fq(1)1132 2375 y FB(2)f(f)p FC(max)p FB(f)p FC(0)p Fy(;)8 b FB(d)p Fy(c)p FB(e)h(\000)h FC(1)p FB(g)p Fy(;)e FB(d)p Fy(c)p FB(eg)14 b FC(\(after)g(this)332 2432 y(selection,)20 b(treat)d Fy(c)667 2439 y Fq(1)705 2432 y FC(as)g(a)h(\014xed)h(p)q (oin)o(t)g(v)m(alue)g(in)g([0,1])d(with)j Fy(m)f FC(bits\).)28 b(This)19 b(selec-)332 2488 y(tion)d(ma)o(y)f(dep)q(end)i(on)e(the)h Fy(x)851 2495 y Fu(w)895 2488 y FC(and)f Fy(y)1005 2495 y Fu(w)1049 2488 y FC(co)q(ordinates)h(of)f(the)h(pixel.)22 b(In)17 b(color)e(index)p eop %%Page: 115 124 115 123 bop 120 137 a Fx(4.1.)34 b(PER-FRA)o(GMENT)15 b(OPERA)l(TIONS)621 b FC(115)120 286 y(mo)q(de,)14 b(the)f(same)g(rule) h(applies)h(with)f Fy(c)f FC(b)q(eing)h(a)f(single)i(color)e(index.)21 b Fy(c)12 b FC(m)o(ust)h(not)g(b)q(e)120 343 y(larger)k(than)g(the)g (maxim)o(um)g(v)m(alue)h(represen)o(table)g(in)f(the)g(framebu\013er)g (for)f(either)120 399 y(the)g(comp)q(onen)o(t)f(or)g(the)g(index,)h(as) f(appropriate.)191 459 y(Man)o(y)h(dithering)i(algorithms)f(are)g(p)q (ossible,)i(but)e(a)f(dithered)i(v)m(alue)h(pro)q(duced)120 515 y(b)o(y)12 b(an)o(y)g(algorithm)g(m)o(ust)g(dep)q(end)h(only)g(the) f(incoming)i(v)m(alue)f(and)f(the)g(fragmen)o(t's)f Fy(x)120 572 y FC(and)16 b Fy(y)i FC(windo)o(w)d(co)q(ordinates.)22 b(If)15 b(dithering)i(is)f(disabled,)h(then)f(eac)o(h)g(color)g(comp)q (o-)120 628 y(nen)o(t)d(is)h(truncated)e(to)h(a)f(\014xed-p)q(oin)o(t)i (v)m(alue)g(with)f(as)g(man)o(y)f(bits)h(as)g(there)g(are)f(in)i(the) 120 684 y(corresp)q(onding)g(comp)q(onen)o(t)e(in)i(the)e (framebu\013er;)h(a)f(color)g(index)i(is)f(rounded)g(to)f(the)120 741 y(nearest)j(in)o(teger)h(represen)o(table)g(in)g(the)f(color)g (index)i(p)q(ortion)e(of)g(the)g(framebu\013er.)191 800 y(Dithering)h(is)f(enabled)i(with)e Fz(Enable)h FC(and)g(disabled)g (with)g Fz(Disable)g FC(using)g(the)120 857 y(sym)o(b)q(olic)i(constan) o(t)e Fr(DITHER)p FC(.)f(The)h(state)g(required)i(is)f(th)o(us)f(a)g (single)i(bit.)24 b(Initially)l(,)120 913 y(dithering)17 b(is)f(enabled.)120 1051 y Fl(4.1.8)56 b(Logical)17 b(Op)r(eration)120 1143 y FC(Finally)l(,)e(a)d(logical)i(op)q(eration)f(is)h(applied)g(b)q (et)o(w)o(een)g(the)e(incoming)i(fragmen)o(t's)e(color)120 1199 y(or)19 b(index)h(v)m(alues)f(and)g(the)g(color)g(or)f(index)i(v)m (alues)g(stored)e(at)g(the)h(corresp)q(onding)120 1256 y(lo)q(cation)13 b(in)g(the)f(framebu\013er.)18 b(The)12 b(result)g(replaces)h(the)f(v)m(alues)h(in)f(the)g(framebu\013er)120 1312 y(at)k(the)g(fragmen)o(t's)f(\()p Fy(x;)8 b(y)r FC(\))14 b(co)q(ordinates.)23 b(The)17 b(logical)g(op)q(eration)f(on)g (color)h(indices)120 1369 y(is)d(enabled)h(or)e(disabled)j(with)e Fz(Enable)g FC(or)f Fz(Disable)i FC(using)f(the)g(sym)o(b)q(olic)h (constan)o(t)120 1425 y Fr(INDEX)p 233 1425 14 2 v 15 w(LOGIC)p 358 1425 V 15 w(OP)p FC(.)i(\(F)l(or)f(compatibilit)o(y)k (with)e(GL)g(v)o(ersion)g(1.0,)f(the)h(sym)o(b)q(olic)g(con-)120 1481 y(stan)o(t)e Fr(LOGIC)p 350 1481 V 15 w(OP)h FC(ma)o(y)f(also)h(b) q(e)h(used.\))26 b(The)17 b(logical)h(op)q(eration)g(on)f(color)g(v)m (alues)h(is)120 1538 y(enabled)i(or)d(disabled)j(with)e Fz(Enable)h FC(or)f Fz(Disable)h FC(using)f(the)g(sym)o(b)q(olic)i (constan)o(t)120 1594 y Fr(COLOR)p 233 1594 V 15 w(LOGIC)p 358 1594 V 15 w(OP)p FC(.)13 b(If)i(the)g(logical)g(op)q(eration)g(is)g (enabled)h(for)e(color)g(v)m(alues,)i(it)e(is)h(as)f(if)120 1651 y(blending)k(w)o(ere)d(disabled,)h(regardless)g(of)e(the)i(v)m (alue)g(of)f Fr(BLEND)p FC(.)191 1710 y(The)g(logical)i(op)q(eration)e (is)h(selected)g(b)o(y)234 1815 y Fw(void)30 b Fz(LogicOp)p FC(\()i Fw(enum)14 b Fv(op)i FC(\))f Fw(;)120 1921 y Fv(op)i FC(is)f(a)g(sym)o(b)q(olic)h(constan)o(t;)e(the)i(p)q(ossible)g (constan)o(ts)e(and)i(corresp)q(onding)g(op)q(era-)120 1977 y(tions)11 b(are)f(en)o(umerated)h(in)g(T)l(able)g(4.3.)18 b(In)11 b(this)g(table,)g Fy(s)g FC(is)g(the)f(v)m(alue)i(of)e(the)g (incoming)120 2034 y(fragmen)o(t)16 b(and)g Fy(d)h FC(is)g(the)f(v)m (alue)i(stored)e(in)h(the)g(framebu\013er.)23 b(The)17 b(n)o(umeric)h(v)m(alues)120 2090 y(assigned)i(to)f(the)g(sym)o(b)q (olic)i(constan)o(ts)d(are)h(the)h(same)f(as)g(those)g(assigned)h(to)f (the)120 2147 y(corresp)q(onding)e(sym)o(b)q(olic)f(v)m(alues)g(in)g (the)g(X)f(windo)o(w)g(system.)191 2206 y(Logical)25 b(op)q(erations)e(are)h(p)q(erformed)f(indep)q(enden)o(tl)q(y)j(for)d (eac)o(h)h(color)f(index)120 2262 y(bu\013er)c(that)f(is)i(selected)g (for)e(writing,)i(or)e(for)g(eac)o(h)h(red,)h(green,)f(blue,)i(and)e (alpha)120 2319 y(v)m(alue)e(of)f(eac)o(h)g(color)g(bu\013er)g(that)f (is)h(selected)h(for)f(writing.)22 b(The)16 b(required)h(state)e(is)120 2375 y(an)g(in)o(teger)h(indicating)h(the)e(logical)h(op)q(eration,)f (and)g(t)o(w)o(o)f(bits)i(indicating)h(whether)120 2432 y(the)e(logical)g(op)q(eration)g(is)f(enabled)i(or)e(disabled.)21 b(The)15 b(initial)h(state)d(is)i(for)f(the)g(logic)120 2488 y(op)q(eration)i(to)e(b)q(e)i(giv)o(en)g(b)o(y)f Fr(COPY)p FC(,)f(and)h(to)g(b)q(e)h(disabled.)p eop %%Page: 116 125 116 124 bop 332 137 a FC(116)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)p 771 242 618 2 v 770 299 2 57 v 795 282 a FC(Argumen)o(t)g(v)m(alue)p 1137 299 V 51 w(Op)q(eration)p 1387 299 V 771 301 618 2 v 770 357 2 57 v 795 340 a Fr(CLEAR)p 1137 357 V 257 w FC(0)p 1387 357 V 770 413 V 795 397 a Fr(AND)p 1137 413 V 301 w Fy(s)c FB(^)f Fy(d)p 1387 413 V 770 470 V 795 453 a Fr(AND)p 864 453 14 2 v 15 w(REVERSE)p 1137 470 2 57 v 132 w Fy(s)h FB(^)f(:)p Fy(d)p 1387 470 V 770 526 V 795 509 a Fr(COPY)p 1137 526 V 279 w Fy(s)p 1387 526 V 770 583 V 795 566 a Fr(AND)p 864 566 14 2 v 15 w(INVERTED)p 1137 583 2 57 v 110 w FB(:)p Fy(s)h FB(^)f Fy(d)p 1387 583 V 770 639 V 795 622 a Fr(NOOP)p 1137 639 V 279 w Fy(d)p 1387 639 V 770 696 V 795 679 a Fr(XOR)p 1137 696 V 301 w Fy(s)j FC(xor)f Fy(d)p 1387 696 V 770 752 V 795 735 a Fr(OR)p 1137 752 V 323 w Fy(s)f FB(_)f Fy(d)p 1387 752 V 770 809 V 795 792 a Fr(NOR)p 1137 809 V 301 w FB(:)p FC(\()p Fy(s)h FB(_)f Fy(d)p FC(\))p 1387 809 V 770 865 V 795 848 a Fr(EQUIV)p 1137 865 V 257 w FB(:)p FC(\()p Fy(s)j FC(xor)f Fy(d)p FC(\))p 1387 865 V 770 922 V 795 905 a Fr(INVERT)p 1137 922 V 235 w FB(:)p Fy(d)p 1387 922 V 770 978 V 795 961 a Fr(OR)p 842 961 14 2 v 16 w(REVERSE)p 1137 978 2 57 v 153 w Fy(s)f FB(_)f(:)p Fy(d)p 1387 978 V 770 1034 V 795 1018 a Fr(COPY)p 886 1018 14 2 v 15 w(INVERTED)p 1137 1034 2 57 v 88 w FB(:)p Fy(s)p 1387 1034 V 770 1091 V 795 1074 a Fr(OR)p 842 1074 14 2 v 16 w(INVERTED)p 1137 1091 2 57 v 131 w FB(:)p Fy(s)h FB(_)f Fy(d)p 1387 1091 V 770 1147 V 795 1130 a Fr(NAND)p 1137 1147 V 279 w FB(:)p FC(\()p Fy(s)h FB(^)f Fy(d)p FC(\))p 1387 1147 V 770 1204 V 795 1187 a Fr(SET)p 1137 1204 V 301 w FC(all)16 b(1's)p 1387 1204 V 771 1205 618 2 v 371 1283 a(T)l(able)g(4.3:)j(Argumen)o(ts)14 b(to)h Fz(LogicOp)i FC(and)e(their)h(corresp)q(onding)g(op)q(erations.) 332 1471 y Fs(4.2)66 b(Whole)23 b(F)-6 b(ramebu\013er)25 b(Op)r(erations)332 1574 y FC(The)c(preceding)h(sections)g(describ)q (ed)h(the)d(op)q(erations)h(that)g(o)q(ccur)g(as)f(individual)332 1631 y(fragmen)o(ts)g(are)h(sen)o(t)f(to)h(the)g(framebu\013er.)37 b(This)21 b(section)h(describ)q(es)g(op)q(erations)332 1687 y(that)15 b(con)o(trol)f(or)h(a\013ect)g(the)g(whole)h (framebu\013er.)332 1812 y Fl(4.2.1)55 b(Selecting)17 b(a)i(Bu\013er)f(for)h(W)-5 b(riting)332 1899 y FC(The)15 b(\014rst)f(suc)o(h)h(op)q(eration)f(is)h(con)o(trolling)h(the)e (bu\013er)h(in)o(to)f(whic)o(h)i(color)e(v)m(alues)i(are)332 1956 y(written.)k(This)c(is)f(accomplished)j(with)446 2052 y Fw(void)29 b Fz(Dra)o(wBu\013er)p FC(\()g Fw(enum)15 b Fv(buf)g FC(\))g Fw(;)332 2149 y Fv(buf)f FC(is)h(a)f(sym)o(b)q(olic) h(constan)o(t)e(sp)q(ecifying)j(zero,)e(one,)g(t)o(w)o(o,)f(or)g(four)h (bu\013ers)g(for)f(writ-)332 2205 y(ing.)19 b(The)12 b(constan)o(ts)e(are)h Fr(NONE)p FC(,)g Fr(FRONT)p 1008 2205 14 2 v 14 w(LEFT)p FC(,)f Fr(FRONT)p 1243 2205 V 15 w(RIGHT)p FC(,)g Fr(BACK)p 1479 2205 V 15 w(LEFT)p FC(,)g Fr(BACK)p 1693 2205 V 15 w(RIGHT)p FC(,)332 2262 y Fr(FRONT)p FC(,)g Fr(BACK)p FC(,)h Fr(LEFT)p FC(,)f Fr(RIGHT)p FC(,)h Fr(FRONT)p 935 2262 V 14 w(AND)p 1015 2262 V 15 w(BACK)p FC(,)g(and)h Fr(AUX0)f FC(through)g Fr(AUX)p Fh(n)p FC(,)h(where)g Fy(n)s FC(+)s(1)332 2318 y(is)k(the)f(n)o(um)o(b)q(er)h(of)e(a)o(v)m(ailable)j(auxiliary)g (bu\013ers.)403 2375 y(The)25 b(constan)o(ts)g(refer)g(to)g(the)h(four) f(p)q(oten)o(tially)i(visible)g(bu\013ers)f Fv(fr)n(ont)p 1739 2375 V 16 w(left)p FC(,)332 2432 y Fv(fr)n(ont)p 430 2432 V 16 w(right)p FC(,)d Fv(b)n(ack)p 658 2432 V 17 w(left)p FC(,)f(and)g Fv(b)n(ack)p 951 2432 V 16 w(right)p FC(,)h(and)f(to)e(the)i Fv(auxiliary)g FC(bu\013ers.)38 b(Argu-)332 2488 y(men)o(ts)13 b(other)g(than)h Fr(AUX)p Fh(i)f FC(that)g(omit)g(reference)h(to)f Fr(LEFT)g FC(or)g Fr(RIGHT)f FC(refer)i(to)e(b)q(oth)i(left)p eop %%Page: 117 126 117 125 bop 120 137 a Fx(4.2.)34 b(WHOLE)16 b(FRAMEBUFFER)f(OPERA)l (TIONS)452 b FC(117)p 347 242 1042 2 v 346 299 2 57 v 372 282 a(sym)o(b)q(olic)p 689 299 V 170 w(fron)o(t)p 835 299 V 49 w(fron)o(t)p 980 299 V 49 w(bac)o(k)p 1121 299 V 52 w(bac)o(k)p 1266 299 V 52 w(aux)p 1388 299 V 346 355 V 372 338 a(constan)o(t)p 689 355 V 189 w(left)p 835 355 V 67 w(righ)o(t)p 980 355 V 63 w(left)p 1121 355 V 64 w(righ)o(t)p 1266 355 V 78 w Fy(i)p 1388 355 V 347 357 1042 2 v 346 413 2 57 v 372 397 a Fr(NONE)p 689 413 V 835 413 V 980 413 V 1121 413 V 1266 413 V 1388 413 V 346 470 V 372 453 a(FRONT)p 485 453 14 2 v 14 w(LEFT)p 689 470 2 57 v 167 w FB(\017)p 835 470 V 980 470 V 1121 470 V 1266 470 V 1388 470 V 346 526 V 372 509 a Fr(FRONT)p 485 509 14 2 v 14 w(RIGHT)p 689 526 2 57 v 835 526 V 291 w FB(\017)p 980 526 V 1121 526 V 1266 526 V 1388 526 V 346 583 V 372 566 a Fr(BACK)p 463 566 14 2 v 15 w(LEFT)p 689 583 2 57 v 835 583 V 980 583 V 477 w FB(\017)p 1121 583 V 1266 583 V 1388 583 V 346 639 V 372 622 a Fr(BACK)p 463 622 14 2 v 15 w(RIGHT)p 689 639 2 57 v 835 639 V 980 639 V 1121 639 V 598 w FB(\017)p 1266 639 V 1388 639 V 346 696 V 372 679 a Fr(FRONT)p 689 696 V 269 w FB(\017)p 835 696 V 123 w(\017)p 980 696 V 1121 696 V 1266 696 V 1388 696 V 346 752 V 372 735 a Fr(BACK)p 689 752 V 835 752 V 980 752 V 580 w FB(\017)p 1121 752 V 120 w(\017)p 1266 752 V 1388 752 V 346 809 V 372 792 a Fr(LEFT)p 689 809 V 291 w FB(\017)p 835 809 V 980 809 V 266 w(\017)p 1121 809 V 1266 809 V 1388 809 V 346 865 V 372 848 a Fr(RIGHT)p 689 865 V 835 865 V 415 w FB(\017)p 980 865 V 1121 865 V 263 w(\017)p 1266 865 V 1388 865 V 346 922 V 372 905 a Fr(FRONT)p 485 905 14 2 v 14 w(AND)p 565 905 V 15 w(BACK)p 689 922 2 57 v 86 w FB(\017)p 835 922 V 123 w(\017)p 980 922 V 120 w(\017)p 1121 922 V 120 w(\017)p 1266 922 V 1388 922 V 346 978 V 372 961 a Fr(AUX)p Fh(i)p 689 978 V 835 978 V 980 978 V 1121 978 V 1266 978 V 864 w FB(\017)p 1388 978 V 347 980 1042 2 v 133 1057 a FC(T)l(able)16 b(4.4:)j(Argumen)o(ts)14 b(to)h Fz(Dra)o(wBu\013er)f FC(and)h(the)g(bu\013ers)g(that)g(they)g (indicate.)120 1268 y(and)i(righ)o(t)f(bu\013ers.)24 b(Argumen)o(ts)16 b(other)h(than)f Fr(AUX)p Fh(i)g FC(that)g(omit)h (reference)g(to)f Fr(FRONT)120 1324 y FC(or)h Fr(BACK)f FC(refer)h(to)g(b)q(oth)g(fron)o(t)f(and)i(bac)o(k)f(bu\013ers.)25 b Fr(AUX)p Fh(i)17 b FC(enables)i(dra)o(wing)e(only)g(to)120 1380 y Fv(auxiliary)f FC(bu\013er)f Fy(i)p FC(.)20 b(Eac)o(h)15 b Fr(AUX)p Fh(i)g FC(adheres)g(to)g Fr(AUX)p Fh(i)d FC(=)h Fr(AUX0)d FC(+)g Fy(i)p FC(.)20 b(The)15 b(constan)o(ts)g(and)120 1437 y(the)k(bu\013ers)f(they)g(indicate)i(are)e(summarized)h(in)g(T)l (able)g(4.4.)28 b(If)18 b Fz(Dra)o(wBu\013er)f FC(is)120 1493 y(is)g(supplied)h(with)e(a)f(constan)o(t)g(\(other)g(than)g Fr(NONE)p FC(\))g(that)f(do)q(es)i(not)g(indicate)h(an)o(y)e(of)120 1550 y(the)j(color)f(bu\013ers)g(allo)q(cated)i(to)e(the)g(GL)g(con)o (text,)g(the)h(error)e Fr(INVALID)p 1407 1550 14 2 v 15 w(OPERATION)120 1606 y FC(results.)191 1674 y(Indicating)d(a)f (bu\013er)g(or)f(bu\013ers)h(using)g Fz(Dra)o(wBu\013er)f FC(causes)h(subsequen)o(t)g(pixel)120 1731 y(color)20 b(v)m(alue)i(writes)e(to)f(a\013ect)g(the)i(indicated)g(bu\013ers.)35 b(If)20 b(more)g(than)g(one)g(color)120 1787 y(bu\013er)14 b(is)h(selected)g(for)e(dra)o(wing,)h(blending)i(and)e(logical)i(op)q (erations)e(are)f(computed)120 1844 y(and)22 b(applied)h(indep)q (endently)h(for)d(eac)o(h)g(bu\013er.)39 b(Calling)23 b Fz(Dra)o(wBu\013er)d FC(with)i(a)120 1900 y(v)m(alue)17 b(of)e Fr(NONE)f FC(inhibits)j(the)f(writing)f(of)g(color)g(v)m(alues)i (to)d(an)o(y)h(bu\013er.)191 1968 y(Monoscopic)c(con)o(texts)g(include) i(only)f(left)f(bu\013ers,)g(while)i(stereoscopic)e(con)o(texts)120 2025 y(include)j(b)q(oth)e(left)g(and)g(righ)o(t)g(bu\013ers.)18 b(Lik)o(ewise,)c(single)f(bu\013ered)f(con)o(texts)f(include)120 2081 y(only)g(fron)o(t)f(bu\013ers,)h(while)g(double)h(bu\013ered)f (con)o(texts)f(include)i(b)q(oth)f(fron)o(t)e(and)i(bac)o(k)120 2138 y(bu\013ers.)20 b(The)c(t)o(yp)q(e)f(of)g(con)o(text)f(is)i (selected)g(at)f(GL)g(initialization.)191 2206 y(The)g(state)f (required)h(to)f(handle)i(bu\013er)f(selection)h(is)f(a)f(set)h(of)f (up)h(to)f(4)9 b(+)g Fy(n)15 b FC(bits.)120 2262 y(4)k(bits)g(indicate) h(if)g(the)e(fron)o(t)g(left)h(bu\013er,)h(the)e(fron)o(t)g(righ)o(t)h (bu\013er,)g(the)g(bac)o(k)f(left)120 2319 y(bu\013er,)f(or)f(the)h (bac)o(k)f(righ)o(t)g(bu\013er,)h(are)f(enabled)i(for)e(color)h (writing.)24 b(The)17 b(other)f Fy(n)120 2375 y FC(bits)i(indicate)h (whic)o(h)f(of)e(the)i(auxiliary)g(bu\013ers)f(is)h(enabled)g(for)f (color)g(writing.)26 b(In)120 2432 y(the)16 b(initial)i(state,)d(the)g (fron)o(t)g(bu\013er)h(or)f(bu\013ers)g(are)h(enabled)h(if)f(there)g (are)f(no)h(bac)o(k)120 2488 y(bu\013ers;)f(otherwise,)g(only)h(the)f (bac)o(k)g(bu\013er)g(or)g(bu\013ers)g(are)g(enabled.)p eop %%Page: 118 127 118 126 bop 332 137 a FC(118)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)332 286 y Fl(4.2.2)55 b(Fine)18 b(Con)n(trol)i(of)e(Bu\013er)g(Up)r(dates)332 378 y FC(F)l(our)e(commands)h(are)f(used)h(to)f(mask)g(the)h(writing)g (of)g(bits)g(to)f(eac)o(h)g(of)g(the)h(logical)332 434 y(framebu\013ers)i(after)g(all)i(p)q(er-fragmen)o(t)e(op)q(erations)h (ha)o(v)o(e)f(b)q(een)i(p)q(erformed.)33 b(The)332 491 y(commands)446 596 y Fw(void)c Fz(IndexMask)p FC(\()g Fw(uint)15 b Fv(mask)g FC(\))g Fw(;)446 653 y(void)58 b Fz(ColorMask)p FC(\()f Fw(boolean)29 b Fv(r)p Fw(,)k(boolean)28 b Fv(g)p Fw(,)33 b(boolean)28 b Fv(b)p Fw(,)514 709 y(boolean)14 b Fv(a)h FC(\))g Fw(;)332 815 y FC(con)o(trol)f(the)g(color)f(bu\013er) h(or)g(bu\013ers)f(\(dep)q(ending)j(on)e(whic)o(h)h(bu\013ers)e(are)h (curren)o(tly)332 871 y(indicated)19 b(for)d(writing\).)25 b(The)18 b(least)f(signi\014can)o(t)h Fy(n)f FC(bits)g(of)g Fv(mask)p FC(,)g(where)g Fy(n)g FC(is)g(the)332 928 y(n)o(um)o(b)q(er)g (of)f(bits)h(in)h(a)e(color)h(index)h(bu\013er,)e(sp)q(ecify)i(a)e (mask.)24 b(Where)17 b(a)f(1)g(app)q(ears)332 984 y(in)h(this)g(mask,)f (the)h(corresp)q(onding)g(bit)g(in)g(the)g(color)f(index)i(bu\013er)e (\(or)g(bu\013ers\))g(is)332 1041 y(written;)d(where)h(a)e(0)h(app)q (ears,)g(the)g(bit)g(is)h(not)e(written.)20 b(This)13 b(mask)g(applies)h(only)g(in)332 1097 y(color)f(index)h(mo)q(de.)19 b(In)13 b(R)o(GBA)g(mo)q(de,)g Fz(ColorMask)f FC(is)i(used)f(to)f(mask) g(the)h(writing)332 1154 y(of)g(R,)h(G,)f(B)g(and)h(A)g(v)m(alues)h(to) e(the)g(color)h(bu\013er)g(or)f(bu\013ers.)19 b Fv(r)p FC(,)14 b Fv(g)p FC(,)f Fv(b)p FC(,)g(and)h Fv(a)g FC(indicate)332 1210 y(whether)19 b(R,)f(G,)f(B,)h(or)g(A)g(v)m(alues,)i(resp)q(ectiv)o (ely)l(,)h(are)d(written)g(or)g(not)g(\(a)f(v)m(alue)j(of)332 1267 y Fr(TRUE)13 b FC(means)h(that)g(the)g(corresp)q(onding)h(v)m (alue)g(is)g(written\).)k(In)c(the)f(initial)i(state,)e(all)332 1323 y(bits)g(\(in)g(color)f(index)i(mo)q(de\))e(and)g(all)i(color)e(v) m(alues)h(\(in)g(R)o(GBA)g(mo)q(de\))f(are)g(enabled)332 1380 y(for)i(writing.)403 1439 y(The)g(depth)g(bu\013er)g(can)g(b)q(e)h (enabled)g(or)f(disabled)i(for)d(writing)h Fy(z)1544 1446 y Fu(w)1588 1439 y FC(v)m(alues)h(using)446 1545 y Fw(void)29 b Fz(DepthMask)p FC(\()h Fw(boolean)14 b Fv(mask)h FC(\))g Fw(;)332 1650 y FC(If)h Fv(mask)g FC(is)h(non-zero,)f (the)g(depth)h(bu\013er)f(is)g(enabled)i(for)d(writing;)i(otherwise,)f (it)g(is)332 1707 y(disabled.)22 b(In)16 b(the)f(initial)i(state,)d (the)h(depth)h(bu\013er)f(is)h(enabled)h(for)d(writing.)403 1766 y(The)h(command)446 1872 y Fw(void)29 b Fz(StencilMask)p FC(\()i Fw(uint)15 b Fv(mask)g FC(\))g Fw(;)332 1977 y FC(con)o(trols)21 b(the)h(writing)g(of)g(particular)g(bits)g(in)o(to) g(the)g(stencil)h(planes.)40 b(The)22 b(least)332 2034 y(signi\014can)o(t)16 b Fy(s)f FC(bits)h(of)e Fv(mask)h FC(comprise)g(an)g(in)o(teger)g(mask)g(\()p Fy(s)g FC(is)g(the)g(n)o (um)o(b)q(er)g(of)g(bits)332 2090 y(in)k(the)f(stencil)i(bu\013er\),)e (just)g(as)g(for)g Fz(IndexMask)p FC(.)27 b(The)18 b(initial)j(state)c (is)i(for)e(the)332 2146 y(stencil)g(plane)f(mask)f(to)f(b)q(e)i(all)g (ones.)403 2206 y(The)c(state)f(required)i(for)e(the)h(v)m(arious)h (masking)f(op)q(erations)g(is)h(t)o(w)o(o)d(in)o(tegers)i(and)332 2262 y(a)19 b(bit:)27 b(an)19 b(in)o(teger)g(for)g(color)g(indices,)i (an)e(in)o(teger)g(for)f(stencil)j(v)m(alues,)f(and)f(a)g(bit)332 2319 y(for)e(depth)h(v)m(alues.)28 b(A)17 b(set)h(of)f(four)g(bits)h (is)g(also)f(required)i(indicating)g(whic)o(h)f(color)332 2375 y(comp)q(onen)o(ts)f(of)g(an)g(R)o(GBA)g(v)m(alue)h(should)g(b)q (e)g(written.)25 b(In)18 b(the)f(initial)i(state,)d(the)332 2432 y(in)o(teger)e(masks)e(are)h(all)h(ones)g(as)e(are)h(the)h(bits)f (con)o(trolling)i(depth)e(v)m(alue)i(and)e(R)o(GBA)332 2488 y(comp)q(onen)o(t)i(writing.)p eop %%Page: 119 128 119 127 bop 120 137 a Fx(4.2.)34 b(WHOLE)16 b(FRAMEBUFFER)f(OPERA)l (TIONS)452 b FC(119)120 286 y Fl(4.2.3)56 b(Clearing)18 b(the)g(Bu\013ers)120 373 y FC(The)e(GL)f(pro)o(vides)h(a)f(means)g (for)g(setting)g(p)q(ortions)g(of)g(ev)o(ery)g(pixel)i(in)f(a)f (particular)120 430 y(bu\013er)h(to)e(the)h(same)g(v)m(alue.)21 b(The)16 b(argumen)o(t)e(to)234 526 y Fw(void)30 b Fz(Clear)p FC(\()g Fw(bitfield)14 b Fv(buf)h FC(\))g Fw(;)120 622 y FC(is)36 b(the)f(bit)o(wise)g(OR)h(of)e(a)h(n)o(um)o(b)q(er)g(of)f(v) m(alues)i(indicating)h(whic)o(h)f(bu\013ers)120 679 y(are)26 b(to)g(b)q(e)h(cleared.)54 b(The)27 b(v)m(alues)g(are)f Fr(COLOR)p 1003 679 14 2 v 15 w(BUFFER)p 1150 679 V 14 w(BIT)p FC(,)g Fr(DEPTH)p 1379 679 V 14 w(BUFFER)p 1525 679 V 15 w(BIT)p FC(,)120 735 y Fr(STENCIL)p 277 735 V 15 w(BUFFER)p 424 735 V 14 w(BIT)p FC(,)17 b(and)h Fr(ACCUM)p 735 735 V 15 w(BUFFER)p 882 735 V 14 w(BIT)p FC(,)f(indicating)j(the)d(bu\013ers)h(curren)o(tly)120 792 y(enabled)f(for)d(color)g(writing,)h(the)g(depth)h(bu\013er,)e(the) h(stencil)h(bu\013er,)e(and)h(the)g(accu-)120 848 y(m)o(ulation)h (bu\013er)g(\(see)f(b)q(elo)o(w\),)g(resp)q(ectiv)o(ely)l(.)22 b(The)16 b(v)m(alue)h(to)d(whic)o(h)i(eac)o(h)g(bu\013er)f(is)120 905 y(cleared)g(dep)q(ends)g(on)e(the)g(setting)h(of)f(the)g(clear)h(v) m(alue)h(for)d(that)h(bu\013er.)19 b(If)14 b(the)f(mask)120 961 y(is)k(not)f(a)g(bit)o(wise)h(OR)h(of)e(the)g(sp)q(eci\014ed)i(v)m (alues,)g(then)f(the)f(error)g Fr(INVALID)p 1448 961 V 14 w(VALUE)f FC(is)120 1018 y(generated.)234 1114 y Fw(void)20 b Fz(ClearColor)p FC(\()g Fw(clampf)9 b Fv(r)p Fw(,)i(clampf)f Fv(g)p Fw(,)h(clampf)e Fv(b)p Fw(,)i(clampf)e Fv(a)h FC(\))g Fw(;)120 1210 y FC(sets)h(the)g(clear)g(v)m(alue)h(for)e (the)h(color)f(bu\013ers)h(in)h(R)o(GBA)e(mo)q(de.)19 b(Eac)o(h)11 b(of)f(the)h(sp)q(eci\014ed)120 1267 y(comp)q(onen)o(ts)19 b(is)g(clamp)q(ed)h(to)e([0)p Fy(;)8 b FC(1])16 b(and)j(con)o(v)o (erted)f(to)g(\014xed-p)q(oin)o(t)h(according)g(to)120 1323 y(the)d(rules)g(of)e(section)i(2.13.9.)234 1419 y Fw(void)30 b Fz(ClearIndex)p FC(\()f Fw(float)15 b Fv(index)g FC(\))g Fw(;)120 1515 y FC(sets)20 b(the)g(clear)h(color)f (index.)36 b Fv(index)19 b FC(is)i(con)o(v)o(erted)f(to)f(a)h (\014xed-p)q(oin)o(t)h(v)m(alue)g(with)120 1572 y(unsp)q(eci\014ed)d (precision)f(to)e(the)g(left)h(of)e(the)i(binary)g(p)q(oin)o(t;)f(the)g (in)o(teger)h(part)e(of)h(this)120 1628 y(v)m(alue)i(is)e(then)h(mask)o (ed)e(with)i(2)675 1612 y Fu(m)717 1628 y FB(\000)11 b FC(1,)j(where)h Fy(m)g FC(is)h(the)f(n)o(um)o(b)q(er)g(of)g(bits)g (in)h(a)f(color)120 1685 y(index)i(v)m(alue)f(stored)f(in)h(the)f (framebu\013er.)234 1781 y Fw(void)30 b Fz(ClearDepth)p FC(\()g Fw(clampd)15 b Fv(d)g FC(\))g Fw(;)120 1877 y FC(tak)o(es)21 b(a)h(\015oating-p)q(oin)o(t)g(v)m(alue)h(that)f(is)g (clamp)q(ed)h(to)e(the)h(range)g([0)p Fy(;)8 b FC(1])19 b(and)j(con-)120 1934 y(v)o(erted)c(to)g(\014xed-p)q(oin)o(t)h (according)g(to)f(the)g(rules)h(for)e(a)h(windo)o(w)h Fy(z)h FC(v)m(alue)f(giv)o(en)g(in)120 1990 y(section)d(2.10.1.)i (Similarly)l(,)234 2087 y Fw(void)30 b Fz(ClearStencil)p FC(\()i Fw(int)14 b Fv(s)h FC(\))g Fw(;)120 2183 y FC(tak)o(es)d(a)h (single)h(in)o(teger)f(argumen)o(t)f(that)g(is)h(the)g(v)m(alue)h(to)e (whic)o(h)h(to)f(clear)h(the)g(stencil)120 2239 y(bu\013er.)20 b Fv(s)15 b FC(is)h(mask)o(ed)f(to)f(the)h(n)o(um)o(b)q(er)h(of)f (bitplanes)h(in)g(the)g(stencil)g(bu\013er.)234 2335 y Fw(void)30 b Fz(ClearAccum)p FC(\()g Fw(float)14 b Fv(r)p Fw(,)h(float)g Fv(g)p Fw(,)g(float)f Fv(b)p Fw(,)h(float)f Fv(a)i FC(\))f Fw(;)120 2432 y FC(tak)o(es)i(four)g(\015oating-p)q(oin) o(t)h(argumen)o(ts)e(that)g(are)h(the)h(v)m(alues,)g(in)g(order,)f(to)g (whic)o(h)120 2488 y(to)g(set)h(the)f(R,)h(G,)f(B,)g(and)h(A)g(v)m (alues)g(of)g(the)f(accum)o(ulation)i(bu\013er)e(\(see)h(the)g(next)p eop %%Page: 120 129 120 128 bop 332 137 a FC(120)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)332 286 y FC(section\).)20 b(These)14 b(v)m(alues)i(are)d(clamp)q(ed)j(to)d(the)i (range)e([)p FB(\000)p FC(1)p Fy(;)8 b FC(1])13 b(when)h(they)h(are)e (sp)q(ec-)332 343 y(i\014ed.)403 399 y(When)g Fz(Clear)g FC(is)g(called,)i(the)d(only)i(p)q(er-fragmen)o(t)e(op)q(erations)h (that)f(are)h(applied)332 456 y(\(if)g(enabled\))g(are)g(the)f(pixel)i (o)o(wnership)g(test,)e(the)g(scissor)h(test,)f(and)h(dithering.)20 b(The)332 512 y(masking)14 b(op)q(erations)h(describ)q(ed)h(in)f(the)f (last)g(section)h(\(4.2.2\))d(are)i(also)g(e\013ectiv)o(e.)20 b(If)332 569 y(a)15 b(bu\013er)g(is)h(not)f(presen)o(t,)f(then)i(a)f Fz(Clear)g FC(directed)i(at)d(that)h(bu\013er)g(has)g(no)g(e\013ect.) 403 625 y(The)d(state)f(required)h(for)f(clearing)i(is)f(a)g(clear)g(v) m(alue)h(for)e(eac)o(h)h(of)f(the)h(color)g(bu\013er,)332 682 y(the)17 b(depth)h(bu\013er,)f(the)g(stencil)h(bu\013er,)g(and)f (the)g(accum)o(ulation)h(bu\013er.)25 b(Initially)l(,)332 738 y(the)17 b(R)o(GBA)g(color)g(clear)g(v)m(alue)h(is)f(\(0,0,0,0\),)d (the)j(clear)h(color)e(index)j(is)e(0,)f(and)h(the)332 795 y(stencil)23 b(bu\013er)e(and)h(accum)o(ulation)g(bu\013er)f(clear) h(v)m(alues)g(are)f(all)h(0.)38 b(The)22 b(depth)332 851 y(bu\013er)15 b(clear)h(v)m(alue)g(is)g(initially)i(1.0.)332 973 y Fl(4.2.4)55 b(The)19 b(Accum)n(ulation)e(Bu\013er)332 1059 y FC(Eac)o(h)11 b(p)q(ortion)g(of)f(a)h(pixel)h(in)g(the)f(accum)o (ulation)h(bu\013er)e(consists)i(of)e(four)g(v)m(alues:)19 b(one)332 1115 y(for)12 b(eac)o(h)g(of)g(R,)h(G,)f(B,)g(and)g(A.)h(The) f(accum)o(ulation)i(bu\013er)e(is)h(con)o(trolled)g(exclusiv)o(ely)332 1171 y(through)i(the)g(use)h(of)446 1265 y Fw(void)29 b Fz(Accum)p FC(\()h Fw(enum)15 b Fv(op)p Fw(,)g(float)g Fv(value)g FC(\))g Fw(;)332 1359 y FC(\(except)i(for)f(clearing)i (it\).)25 b Fv(op)17 b FC(is)h(a)e(sym)o(b)q(olic)i(constan)o(t)e (indicating)j(an)e(accum)o(ula-)332 1416 y(tion)f(bu\013er)g(op)q (eration,)g(and)g Fv(value)g FC(is)g(a)g(\015oating-p)q(oin)o(t)g(v)m (alue)h(to)e(b)q(e)i(used)f(in)h(that)332 1472 y(op)q(eration.)j(The)c (p)q(ossible)h(op)q(erations)e(are)g Fr(ACCUM)p FC(,)f Fr(LOAD)p FC(,)f Fr(RETURN)p FC(,)h Fr(MULT)p FC(,)g(and)h Fr(ADD)p FC(.)403 1528 y(The)i(accum)o(ulation)h(bu\013er)f(op)q (erations)g(apply)g(iden)o(tically)j(to)c(ev)o(ery)h(pixel,)i(so)332 1585 y(w)o(e)11 b(describ)q(e)h(the)f(e\013ect)f(of)g(eac)o(h)h(op)q (eration)g(on)g(an)f(individual)k(pixel.)20 b(Accum)o(ulation)332 1641 y(bu\013er)14 b(v)m(alues)h(are)f(tak)o(en)g(to)f(b)q(e)i(signed)g (v)m(alues)g(in)g(the)f(range)g([)p FB(\000)p FC(1)p Fy(;)8 b FC(1].)18 b(Using)d Fr(ACCUM)332 1698 y FC(obtains)j(R,)f(G,)g (B,)g(and)h(A)g(comp)q(onen)o(ts)f(from)g(the)h(bu\013er)f(curren)o (tly)h(selected)h(for)332 1754 y(reading)e(\(section)g(4.3.2\).)22 b(Eac)o(h)16 b(comp)q(onen)o(t,)g(considered)i(as)e(a)g(\014xed-p)q (oin)o(t)i(v)m(alue)332 1811 y(in)12 b([0,1])e(\(see)h(section)h (2.13.9\),)e(is)h(con)o(v)o(erted)g(to)g(\015oating-p)q(oin)o(t.)19 b(Eac)o(h)11 b(result)h(is)g(then)332 1867 y(m)o(ultiplied)k(b)o(y)e Fv(value)p FC(.)19 b(The)13 b(results)h(of)f(this)h(m)o(ultiplication)i (are)d(then)h(added)g(to)e(the)332 1924 y(corresp)q(onding)21 b(color)f(comp)q(onen)o(t)f(curren)o(tly)i(in)f(the)g(accum)o(ulation)h (bu\013er,)f(and)332 1980 y(the)11 b(resulting)h(color)f(v)m(alue)h (replaces)g(the)e(curren)o(t)h(accum)o(ulation)h(bu\013er)f(color)g(v)m (alue.)332 2037 y(The)17 b Fr(LOAD)f FC(op)q(eration)h(has)f(the)h (same)g(e\013ect)f(as)g Fr(ACCUM)p FC(,)g(but)g(the)h(computed)g(v)m (alues)332 2093 y(replace)11 b(the)g(corresp)q(onding)g(accum)o (ulation)g(bu\013er)f(comp)q(onen)o(ts)g(rather)g(than)g(b)q(eing)332 2149 y(added)16 b(to)e(them.)403 2206 y(The)24 b Fr(RETURN)g FC(op)q(eration)g(tak)o(es)g(eac)o(h)h(color)f(v)m(alue)i(from)e(the)h (accum)o(ulation)332 2262 y(bu\013er,)20 b(m)o(ultiplies)i(eac)o(h)d (of)g(the)g(R,)h(G,)e(B,)h(and)h(A)f(comp)q(onen)o(ts)h(b)o(y)f Fv(value)p FC(.)32 b(The)332 2319 y(resulting)14 b(color)f(v)m(alue)h (is)g(placed)g(in)g(the)f(bu\013ers)g(curren)o(tly)h(enabled)g(for)e (color)h(writ-)332 2375 y(ing)f(as)g(if)g(it)g(w)o(ere)f(a)h(fragmen)o (t)e(pro)q(duced)j(from)e(rasterization,)h(except)g(that)f(the)h(only) 332 2432 y(p)q(er-fragmen)o(t)g(op)q(erations)g(applied)i(are)d(the)i (pixel)g(o)o(wnership)g(test)e(and,)i(if)f(enabled,)332 2488 y(dithering)17 b(\(section)e(4.1\);)f(color)h(masking)g(\(section) h(4.2.2\))d(is)j(also)f(applied.)p eop %%Page: 121 130 121 129 bop 120 137 a Fx(4.3.)34 b(DRA)-5 b(WING,)15 b(READING,)g(AND)h(COPYING)f(PIXELS)298 b FC(121)191 286 y(The)15 b Fr(MULT)f FC(op)q(eration)h(m)o(ultiplies)i(eac)o(h)e (R,)g(G,)g(B,)f(and)h(A)g(in)h(the)f(accum)o(ulation)120 343 y(bu\013er)f(b)o(y)g Fv(value)g FC(and)g(then)g(returns)g(the)g (scaled)h(color)e(comp)q(onen)o(ts)h(to)g(their)g(corre-)120 399 y(sp)q(onding)h(accum)o(ulation)f(bu\013er)f(lo)q(cations.)20 b Fr(ADD)13 b FC(is)h(the)f(same)g(as)g Fr(MULT)g FC(except)g(that)120 456 y Fv(value)j FC(is)f(added)h(to)f(eac)o(h)g(of)g(the)g(color)g (comp)q(onen)o(ts.)191 513 y(The)g(color)h(comp)q(onen)o(ts)f(op)q (erated)g(on)g(b)o(y)g Fz(Accum)g FC(m)o(ust)f(b)q(e)i(clamp)q(ed)h (only)e(if)120 569 y(the)e(op)q(eration)f(is)h Fr(RETURN)p FC(.)d(In)j(this)g(case,)g(a)e(v)m(alue)j(sen)o(t)e(to)g(the)g(enabled) i(color)e(bu\013ers)120 626 y(is)k(\014rst)e(clamp)q(ed)i(to)e([0)p Fy(;)8 b FC(1].)17 b(Otherwise,)f(results)f(are)f(unde\014ned)j(if)e (the)f(result)i(of)e(an)120 682 y(op)q(eration)f(on)g(a)f(color)h(comp) q(onen)o(t)g(is)g(out)f(of)g(the)h(range)g([)p FB(\000)p FC(1)p Fy(;)8 b FC(1].)17 b(When)c(the)g(scissor)120 739 y(test)21 b(is)i(enabled)g(\(section)f(4.1.2\),)f(then)g(only)i (those)e(pixels)i(within)g(the)f(curren)o(t)120 795 y(scissor)c(b)q(o)o (x)g(are)f(up)q(dated)h(b)o(y)g(an)o(y)f Fz(Accum)g FC(op)q(eration;)i (otherwise,)f(all)h(pixels)g(in)120 852 y(the)d(windo)o(w)f(are)g(up)q (dated.)21 b(If)16 b(there)f(is)h(no)f(accum)o(ulation)h(bu\013er,)f (or)g(if)h(the)f(GL)g(is)120 908 y(in)h(color)g(index)g(mo)q(de,)f Fz(Accum)g FC(generates)g(the)g(error)g Fr(INVALID)p 1263 908 14 2 v 14 w(OPERATION)p FC(.)191 965 y(No)f(state)f(\(b)q(ey)o (ond)h(the)g(accum)o(ulation)h(bu\013er)f(itself)t(\))g(is)g(required)h (for)e(accum)o(u-)120 1022 y(lation)j(bu\013ering.)120 1169 y Fs(4.3)67 b(Dra)n(wing,)22 b(Reading,)g(and)h(Cop)n(ying)g (Pixels)120 1272 y FC(Pixels)c(ma)o(y)e(b)q(e)i(written)e(to)g(and)h (read)g(from)f(the)h(framebu\013er)f(using)h(the)g Fz(Dra)o(w-)120 1328 y(Pixels)h FC(and)f Fz(ReadPixels)h FC(commands.)29 b Fz(Cop)o(yPixels)17 b FC(can)h(b)q(e)h(used)g(to)f(cop)o(y)g(a)120 1385 y(blo)q(c)o(k)e(of)f(pixels)i(from)d(one)i(p)q(ortion)f(of)g(the)g (framebu\013er)g(to)f(another.)120 1510 y Fl(4.3.1)56 b(W)-5 b(riting)17 b(to)i(the)f(Stencil)f(Bu\013er)120 1597 y FC(The)g(op)q(eration)f(of)f Fz(Dra)o(wPixels)g FC(w)o(as)h(describ)q(ed)h(in)g(section)g(3.6.3,)d(except)i(if)h(the) 120 1654 y Fv(format)12 b FC(argumen)o(t)e(w)o(as)g Fr(STENCIL)p 702 1654 V 14 w(INDEX)p FC(.)g(In)h(this)g(case,)h(all)g(op)q(erations) f(describ)q(ed)h(for)120 1710 y Fz(Dra)o(wPixels)g FC(tak)o(e)f(place,) i(but)g(windo)o(w)f(\()p Fy(x;)c(y)r FC(\))i(co)q(ordinates,)j(eac)o(h) f(with)h(the)f(corre-)120 1767 y(sp)q(onding)k(stencil)g(index,)g(are)e (pro)q(duced)i(in)g(lieu)g(of)e(fragmen)o(ts.)19 b(Eac)o(h)14 b(co)q(ordinate-)120 1823 y(stencil)j(index)f(pair)g(is)f(sen)o(t)g (directly)h(to)f(the)g(p)q(er-fragmen)o(t)g(op)q(erations,)f(b)o (ypassing)120 1880 y(the)k(texture,)g(fog,)f(and)h(an)o(tialiasing)h (application)g(stages)e(of)h(rasterization.)27 b(Eac)o(h)120 1936 y(pair)18 b(is)f(then)h(treated)e(as)h(a)g(fragmen)o(t)f(for)g (purp)q(oses)i(of)e(the)h(pixel)i(o)o(wnership)f(and)120 1992 y(scissor)f(tests;)g(all)h(other)f(p)q(er-fragmen)o(t)f(op)q (erations)i(are)e(b)o(ypassed.)26 b(Finally)l(,)19 b(eac)o(h)120 2049 y(stencil)f(index)f(is)f(written)g(to)f(its)h(indicated)i(lo)q (cation)e(in)h(the)f(framebu\013er,)f(sub)s(ject)120 2105 y(to)g(the)g(curren)o(t)g(setting)h(of)e Fz(StencilMask)p FC(.)191 2163 y(The)h(error)g Fr(INVALID)p 553 2163 V 14 w(OPERATION)e FC(results)j(if)g(there)f(is)h(no)f(stencil)h (bu\013er.)120 2288 y Fl(4.3.2)56 b(Reading)18 b(Pixels)120 2375 y FC(The)i(metho)q(d)g(for)f(reading)h(pixels)i(from)d(the)g (framebu\013er)g(and)h(placing)h(them)f(in)120 2432 y(clien)o(t)e (memory)f(is)g(diagrammed)g(in)g(Figure)g(4.2.)23 b(W)l(e)17 b(describ)q(e)i(the)d(stages)g(of)h(the)120 2488 y(pixel)g(reading)f (pro)q(cess)f(in)h(the)g(order)f(in)h(whic)o(h)g(they)f(o)q(ccur.)p eop %%Page: 122 131 122 130 bop 332 137 a FC(122)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)p 350 551 1459 2 v 350 2128 2 1578 v 404 625 a 21313290 19821357 2039234 592035 43218616 39074365 startTexFig 404 625 a %%BeginDocument: pics/pixread.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /pmask34 { } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 66 /patchar34 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar34 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask34 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 144 580.5 M 198 580.5 L 198 108 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 468 580.5 M 522 580.5 L 522 108 L stroke grestore gsave matrix currentmatrix [486 0 0 -207 117 495] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 256 16.08 512 { 96 exch M (BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) show } for grestore gsave matrix currentmatrix [486 0 0 -207 117 261] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 32 16.08 272 { 96 exch M (BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) show } for grestore gsave matrix currentmatrix [432 0 0 -45 144 108] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 63] concat newpath 0 0 M 0 31.5 L 432 31.5 L 432 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 60 M 141 97.5 L 579 97.5 L 579 60 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 63] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 200.047 19.9706 M (pack) 31.906 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 549] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 495] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 492 M 141 543 L 255 543 L 255 492 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 495] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 28.716 33.4706 M (convert) 50.568 S 31.054 19.4706 M (to [0,1]) 45.892 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 252] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 198] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 195 M 141 246 L 255 246 L 255 195 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 198] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 28.716 33.4706 M (convert) 50.568 S 23.669 19.4706 M (RGB to L) 60.662 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 459] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 405] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 402 M 141 453 L 255 453 L 255 402 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 405] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 36.486 33.4706 M (scale) 35.028 S 25.601 19.4706 M (and bias) 56.798 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 369] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 135 315] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 132 312 M 132 363 L 264 363 L 264 312 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 135 315] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 11.284 33.4706 M (RGBA to RGBA ) 107.324 S 40.054 19.4706 M (lookup) 45.892 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 180] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 135 126] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 132 123 M 132 174 L 264 174 L 264 123 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 135 126] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 42.77 33.4706 M (clamp) 40.46 S 40.054 19.4706 M (to [0,1]) 45.892 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 193.5 567 M 198 549 L 202.5 567 L 198 564 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 567 M 198 549 L 202.5 567 L 198 564 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 270 M 198 252 L 202.5 270 L 198 267 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 270 M 198 252 L 202.5 270 L 198 267 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 477 M 198 459 L 202.5 477 L 198 474 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 477 M 198 459 L 202.5 477 L 198 474 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 387 M 198 369 L 202.5 387 L 198 384 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 387 M 198 369 L 202.5 387 L 198 384 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 468 459] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 468 405] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 465 402 M 465 453 L 579 453 L 579 402 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 468 405] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 39.223 33.4706 M (shift) 29.554 S 20.554 19.4706 M (and offset) 66.892 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 517.5 477 M 522 459 L 526.5 477 L 522 474 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 477 M 522 459 L 526.5 477 L 522 474 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 468 369] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 459 315] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 456 312 M 456 363 L 588 363 L 588 312 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 459 315] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 15.932 33.4706 M (index to index ) 98.028 S 40.054 19.4706 M (look) 28.784 S 68.838 19.4706 M (up) 17.108 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 517.5 387 M 522 369 L 526.5 387 L 522 384 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 387 M 522 369 L 526.5 387 L 522 384 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 306 369] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 297 315] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 294 312 M 294 363 L 426 363 L 426 312 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 297 315] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 13.608 33.4706 M (index to RGBA ) 102.676 S 40.054 19.4706 M (looku) 37.338 S 77.392 19.4706 M (p) 8.554 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 355.5 387 M 360 369 L 364.5 387 L 360 384 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 355.5 387 M 360 369 L 364.5 387 L 360 384 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 468 180] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 459 130.5] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 456 127.5 M 456 178.5 L 588 178.5 L 588 127.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 459 130.5] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 36.547 33.4706 M (mask to) 52.906 S 38.297 13.8706 M (\(2) 12.446 S 50.743 19.4706 M (n) 8.554 S 59.297 13.8706 M ( - 1\)) 28.406 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 324 M 360 306 L 198 306 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 522 396 M 360 396 L 360 369 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 63 M 360 36 L 414 36 L stroke grestore gsave 0 0 0 setrgbcolor newpath 396 31.5 M 414 36 L 396 40.5 L 399 36 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 396 31.5 M 414 36 L 396 40.5 L 399 36 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 288 427.5] concat newpath 0 0 M 0 49.5 L 144 49.5 L 144 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 285.5 425 M 285.5 480.913 L 434.5 480.913 L 434.5 425 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 288 427.5] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 12.474 35.413 M (Pixel Transfer) 119.052 S 24.489 17.413 M (Operations) 95.022 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 423 9] concat newpath 0 0 M 0 31.5 L 234 31.5 L 234 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 420.5 6.5 M 420.5 43 L 659.5 43 L 659.5 6.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 423 9] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 23.256 19.9706 M (byte, short, int, o) 112.798 S 136.054 19.9706 M (r float pixel) 74.69 S 4.202 5.97059 M (data stream \(index ) 127.596 S 131.798 5.97059 M (or component\)) 98 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 31.5 558] concat newpath 0 0 M 0 36 L 126 36 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 29 555.5 M 29 596.5 L 160 596.5 L 160 555.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 31.5 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 24.493 24.4706 M (RGBA pixel) 77.014 S 40.439 10.4706 M (data in) 45.122 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 333 558] concat newpath 0 0 M 0 36 L 126 36 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 330.5 555.5 M 330.5 596.5 L 461.5 596.5 L 461.5 555.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 333 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 7.756 24.4706 M (color index pixel) 110.488 S 40.439 10.4706 M (data in) 45.122 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 517.5 198 M 522 180 L 526.5 198 L 522 195 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 198 M 522 180 L 526.5 198 L 522 195 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 517.5 126 M 522 108 L 526.5 126 L 522 123 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 126 M 522 108 L 526.5 126 L 522 123 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 126 M 198 108 L 202.5 126 L 198 123 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 126 M 198 108 L 202.5 126 L 198 123 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 198 M 198 180 L 202.5 198 L 198 195 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 198 M 198 180 L 202.5 198 L 198 195 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 288 193.5] concat newpath 0 0 M 0 49.5 L 144 49.5 L 144 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 285.5 191 M 285.5 246.913 L 434.5 246.913 L 434.5 191 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 288 193.5] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 14.976 35.413 M (Pixel Storage) 114.048 S 24.489 17.413 M (Operations) 95.022 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 1999 a Fm(Figure)h(4.2.)24 b(Op)q(eration)16 b(of)f Fk(ReadPixels)p Fm(.)22 b(R)o(GBA)15 b(and)h(color)g(index)g(pixel)f (paths)389 2049 y(are)j(sho)o(wn;)f(depth)h(and)f(stencil)g(pixel)f (paths)i(are)f(not)g(sho)o(wn.)27 b(R)o(GBA-to-R)o(GBA)389 2099 y(lo)q(okup,)13 b(index-to-index)g(lo)q(okup,)g(and)h(R)o(GB-to-L) e(con)o(v)o(ersion)i(are)h(optional.)p 1807 2128 2 1578 v 350 2130 1459 2 v eop %%Page: 123 132 123 131 bop 120 137 a Fx(4.3.)34 b(DRA)-5 b(WING,)15 b(READING,)g(AND)h(COPYING)f(PIXELS)298 b FC(123)p 278 242 1180 2 v 277 299 2 57 v 303 282 a(P)o(arameter)14 b(Name)p 664 299 V 75 w(T)o(yp)q(e)p 868 299 V 76 w(Initial)j(V)l(alue) p 1164 299 V 51 w(V)l(alid)g(Range)p 1456 299 V 278 301 1180 2 v 278 309 V 277 365 2 57 v 314 348 a Fr(PACK)p 405 348 14 2 v 15 w(SWAP)p 508 348 V 15 w(BYTES)p 664 365 2 57 v 59 w FC(b)q(o)q(olean)p 868 365 V 120 w Fr(FALSE)p 1164 365 V 129 w(TRUE)p FC(/)p Fr(FALSE)p 1456 365 V 278 367 1180 2 v 277 423 2 57 v 325 406 a(PACK)p 416 406 14 2 v 15 w(LSB)p 497 406 V 15 w(FIRST)p 664 423 2 57 v 70 w FC(b)q(o)q(olean)p 868 423 V 120 w Fr(FALSE)p 1164 423 V 129 w(TRUE)p FC(/)p Fr(FALSE)p 1456 423 V 278 425 1180 2 v 277 482 2 57 v 314 465 a(PACK)p 405 465 14 2 v 15 w(ROW)p 486 465 V 15 w(LENGTH)p 664 482 2 57 v 69 w FC(in)o(teger)p 868 482 V 171 w(0)p 1164 482 V 223 w([0)p Fy(;)8 b FB(1)p FC(\))p 1456 482 V 278 483 1180 2 v 277 540 2 57 v 325 523 a Fr(PACK)p 416 523 14 2 v 15 w(SKIP)p 519 523 V 14 w(ROWS)p 664 540 2 57 v 81 w FC(in)o(teger)p 868 540 V 171 w(0)p 1164 540 V 223 w([0)p Fy(;)g FB(1)p FC(\))p 1456 540 V 278 541 1180 2 v 277 598 2 57 v 303 581 a Fr(PACK)p 394 581 14 2 v 15 w(SKIP)p 497 581 V 15 w(PIXELS)p 664 598 2 57 v 58 w FC(in)o(teger)p 868 598 V 171 w(0)p 1164 598 V 223 w([0)p Fy(;)g FB(1)p FC(\))p 1456 598 V 278 599 1180 2 v 277 656 2 57 v 322 639 a Fr(PACK)p 413 639 14 2 v 15 w(ALIGNMENT)p 664 656 2 57 v 76 w FC(in)o(teger)p 868 656 V 171 w(4)p 1164 656 V 218 w(1,2,4,8)p 1456 656 V 278 658 1180 2 v 245 735 a(T)l(able)16 b(4.5:)j Fz(PixelStore)c FC(parameters)g(p)q(ertaining)h(to)f Fz(ReadPixels)p FC(.)191 917 y(Pixels)h(are)f(read)g(using)234 1005 y Fw(void)28 b Fz(ReadPixels)p FC(\()g Fw(int)14 b Fv(x)p Fw(,)g(int)g Fv(y)p Fw(,)g(sizei)g Fv(width)p Fw(,)h(sizei)e Fv(height)p Fw(,)302 1061 y(enum)i Fv(format)p Fw(,)h(enum)e Fv(typ)n(e)p Fw(,)h(void)g Fv(*data)h FC(\))f Fw(;)120 1149 y FC(The)g(argumen)o(ts)e(after)g Fv(x)h FC(and)h Fv(y)f FC(to)f Fz(ReadPixels)i FC(corresp)q(ond)f(to)g(those)f(of)h Fz(Dra)o(w-)120 1205 y(Pixels)p FC(.)19 b(The)11 b(pixel)i(storage)d (mo)q(des)h(that)f(apply)i(to)f Fz(ReadPixels)g FC(are)g(summarized)120 1262 y(in)16 b(T)l(able)g(4.5.)120 1380 y Fz(Obtaining)k(Pixels)d(from) g(the)h(F)l(ramebu\013er)120 1466 y FC(If)g(the)g Fv(format)h FC(is)f Fr(DEPTH)p 560 1466 14 2 v 15 w(COMPONENT)p FC(,)d(then)j(v)m (alues)h(are)f(obtained)g(from)f(the)h(depth)120 1523 y(bu\013er.)29 b(If)19 b(there)f(is)h(no)f(depth)h(bu\013er,)g(the)f (error)g Fr(INVALID)p 1192 1523 V 14 w(OPERATION)e FC(o)q(ccurs.)29 b(If)120 1579 y(the)18 b Fv(format)g FC(is)g Fr(STENCIL)p 555 1579 V 14 w(INDEX)p FC(,)e(then)i(v)m(alues)h(are)e(tak)o(en)g (from)g(the)g(stencil)i(bu\013er;)120 1636 y(again,)e(if)f(there)h(is)g (no)f(stencil)i(bu\013er,)e(the)g(error)g Fr(INVALID)p 1163 1636 V 14 w(OPERATION)f FC(o)q(ccurs.)23 b(F)l(or)120 1692 y(all)d(other)e(formats,)g(the)h(bu\013er)f(from)g(whic)o(h)i(v)m (alues)g(are)e(obtained)h(is)h(one)e(of)h(the)120 1749 y(color)d(bu\013ers;)e(the)i(selection)g(of)f(color)g(bu\013er)g(is)h (con)o(trolled)g(with)g Fz(ReadBu\013er)p FC(.)191 1805 y(The)f(command)234 1893 y Fw(void)30 b Fz(ReadBu\013er)p FC(\()g Fw(enum)14 b Fv(sr)n(c)h FC(\))f Fw(;)120 1980 y FC(tak)o(es)g(a)g(sym)o(b)q(olic)h(constan)o(t)f(as)g(argumen)o(t.)k (The)d(p)q(ossible)h(v)m(alues)f(are)f Fr(FRONT)p 1503 1980 V 15 w(LEFT)p FC(,)120 2037 y Fr(FRONT)p 233 2037 V 15 w(RIGHT)p FC(,)26 b Fr(BACK)p 485 2037 V 15 w(LEFT)p FC(,)g Fr(BACK)p 715 2037 V 15 w(RIGHT)p FC(,)f Fr(FRONT)p FC(,)h Fr(BACK)p FC(,)g Fr(LEFT)p FC(,)g Fr(RIGHT)p FC(,)g(and)i Fr(AUX0)120 2093 y FC(through)22 b Fr(AUX)p Fh(n)p FC(.)41 b Fr(FRONT)21 b FC(and)i Fr(LEFT)e FC(refer)h(to)g(the)h(fron)o(t)e (left)i(bu\013er,)g Fr(BACK)f FC(refers)120 2149 y(to)15 b(the)g(bac)o(k)g(left)g(bu\013er,)f(and)i Fr(RIGHT)d FC(refers)i(to)f(the)h(fron)o(t)f(righ)o(t)h(bu\013er.)20 b(The)15 b(other)120 2206 y(constan)o(ts)c(corresp)q(ond)h(directly)h (to)e(the)g(bu\013ers)h(that)f(they)g(name.)19 b(If)12 b(the)f(requested)120 2262 y(bu\013er)19 b(is)g(missing,)h(then)f(the)g (error)e Fr(INVALID)p 942 2262 V 15 w(OPERATION)f FC(is)j(generated.)30 b(The)19 b(ini-)120 2319 y(tial)j(setting)e(for)g Fz(ReadBu\013er)h FC(is)g Fr(FRONT)f FC(if)h(there)g(is)g(no)g(bac)o(k)f(bu\013er)h(and)g Fr(BACK)120 2375 y FC(otherwise.)191 2432 y Fz(ReadPixels)12 b FC(obtains)g(v)m(alues)h(from)e(the)h(selected)h(bu\013er)f(from)f (eac)o(h)h(pixel)h(with)120 2488 y(lo)o(w)o(er)20 b(left)h(hand)g (corner)f(at)f(\()p Fy(x)13 b FC(+)h Fy(i;)8 b(y)15 b FC(+)e Fy(j)s FC(\))20 b(for)f(0)i FB(\024)g Fy(i)g(<)h(w)q(idth)d FC(and)i(0)g FB(\024)g Fy(j)i(<)p eop %%Page: 124 133 124 132 bop 332 137 a FC(124)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)332 286 y Fy(heig)r(ht)p FC(;)h(this)h(pixel)h(is)f(said)f(to)g(b)q(e)h(the)f Fy(i)p FC(th)g(pixel)i(in)f(the)f Fy(j)s FC(th)g(ro)o(w.)22 b(If)16 b(an)o(y)g(of)g(these)332 343 y(pixels)k(lies)f(outside)g(of)e (the)h(windo)o(w)g(allo)q(cated)h(to)f(the)g(curren)o(t)g(GL)g(con)o (text,)f(the)332 399 y(v)m(alues)i(obtained)g(for)f(those)g(pixels)i (are)e(unde\014ned.)30 b(Results)20 b(are)d(also)i(unde\014ned)332 456 y(for)14 b(individual)k(pixels)f(that)d(are)h(not)f(o)o(wned)h(b)o (y)g(the)g(curren)o(t)g(con)o(text.)k(Otherwise,)332 512 y Fz(ReadPixels)13 b FC(obtains)f(v)m(alues)i(from)d(the)i (selected)g(bu\013er,)g(regardless)f(of)g(ho)o(w)g(those)332 569 y(v)m(alues)k(w)o(ere)f(placed)i(there.)403 626 y(If)12 b(the)g(GL)h(is)f(in)h(R)o(GBA)f(mo)q(de,)h(and)f Fv(format)h FC(is)g(one)f(of)g Fr(RED)p FC(,)f Fr(GREEN)p FC(,)g Fr(BLUE)p FC(,)g Fr(ALPHA)p FC(,)332 683 y Fr(RGB)p FC(,)16 b Fr(RGBA)p FC(,)g Fr(LUMINANCE)p FC(,)f(or)i Fr(LUMINANCE)p 1029 683 14 2 v 14 w(ALPHA)p FC(,)e(then)j(red,)f(green,)h(blue,)h(and) e(alpha)332 739 y(v)m(alues)j(are)e(obtained)h(from)e(the)i(selected)g (bu\013er)g(at)e(eac)o(h)i(pixel)h(lo)q(cation.)30 b(If)18 b(the)332 796 y(framebu\013er)h(do)q(es)g(not)g(supp)q(ort)h(alpha)f(v) m(alues)i(then)e(the)h(A)f(that)f(is)i(obtained)g(is)332 852 y(1.0.)j(If)17 b Fv(format)g FC(is)g Fr(COLOR)p 782 852 V 15 w(INDEX)f FC(and)g(the)h(GL)g(is)g(in)g(R)o(GBA)g(mo)q(de)g (then)f(the)h(error)332 908 y Fr(INVALID)p 489 908 V 14 w(OPERATION)e FC(o)q(ccurs.)24 b(If)17 b(the)g(GL)g(is)g(in)g(color) g(index)h(mo)q(de,)f(and)g Fv(format)g FC(is)332 965 y(not)h Fr(DEPTH)p 529 965 V 14 w(COMPONENT)f FC(or)g Fr(STENCIL)p 970 965 V 14 w(INDEX)p FC(,)g(then)h(the)g(color)g(index)i (is)e(obtained)h(at)332 1021 y(eac)o(h)c(pixel)i(lo)q(cation.)332 1147 y Fz(Con)o(v)o(ersion)f(of)h(R)o(GBA)g(v)m(alues)332 1235 y FC(This)f(step)e(applies)j(only)e(if)h(the)f(GL)g(is)g(in)h(R)o (GBA)f(mo)q(de,)g(and)g(then)g(only)g(if)h Fv(format)332 1291 y FC(is)j(neither)h Fr(STENCIL)p 696 1291 V 14 w(INDEX)d FC(nor)i Fr(DEPTH)p 1032 1291 V 14 w(COMPONENT)p FC(.)e(The)h(R,)h(G,)f (B,)g(and)h(A)f(v)m(alues)332 1348 y(form)13 b(a)g(group)g(of)g(elemen) o(ts.)20 b(Eac)o(h)13 b(elemen)o(t)h(is)g(tak)o(en)f(to)f(b)q(e)i(a)f (\014xed-p)q(oin)o(t)i(v)m(alue)g(in)332 1404 y([0,1])f(with)h Fy(m)g FC(bits,)g(where)h Fy(m)f FC(is)h(the)f(n)o(um)o(b)q(er)g(of)g (bits)h(in)g(the)f(corresp)q(onding)h(color)332 1461 y(comp)q(onen)o(t)f(of)g(the)g(selected)i(bu\013er)e(\(see)g(section)h (2.13.9\).)332 1586 y Fz(Con)o(v)o(ersion)g(of)h(Depth)h(v)m(alues)332 1674 y FC(This)f(step)e(applies)j(only)e(if)g Fv(format)h FC(is)f Fr(DEPTH)p 1135 1674 V 15 w(COMPONENT)p FC(.)e(An)i(elemen)o(t) g(is)h(tak)o(en)e(to)332 1730 y(b)q(e)g(a)f(\014xed-p)q(oin)o(t)h(v)m (alue)g(in)g([0,1])e(with)h Fy(m)g FC(bits,)h(where)f Fy(m)g FC(is)h(the)f(n)o(um)o(b)q(er)g(of)g(bits)h(in)332 1787 y(the)g(depth)h(bu\013er)f(\(see)g(section)h(2.10.1\).)332 1913 y Fz(Pixel)i(T)l(ransfer)e(Op)q(erations)332 2000 y FC(This)g(step)f(is)h(actually)g(the)g(sequence)g(of)f(steps)h(that)e (w)o(as)h(describ)q(ed)i(separately)f(in)332 2057 y(section)j(3.6.4.)27 b(After)18 b(the)g(pro)q(cessing)h(describ)q(ed)h(in)f(that)e(section)i (is)g(completed,)332 2113 y(groups)c(are)g(pro)q(cessed)h(as)f(describ) q(ed)i(in)f(the)f(follo)o(wing)h(sections.)332 2239 y Fz(Con)o(v)o(ersion)g(to)i(L)332 2327 y FC(This)e(step)g(applies)h (only)g(to)e(R)o(GBA)h(comp)q(onen)o(t)f(groups,)h(and)f(only)i(if)f (the)g Fv(format)332 2383 y FC(is)g(either)g Fr(LUMINANCE)d FC(or)i Fr(LUMINANCE)p 975 2383 V 14 w(ALPHA)p FC(.)e(A)i(v)m(alue)i(L) e(is)h(computed)g(as)924 2488 y Fy(L)d FC(=)g Fy(R)d FC(+)g Fy(G)g FC(+)h Fy(B)p eop %%Page: 125 134 125 133 bop 120 137 a Fx(4.3.)34 b(DRA)-5 b(WING,)15 b(READING,)g(AND)h(COPYING)f(PIXELS)298 b FC(125)p 551 242 634 2 v 550 299 2 57 v 576 282 a Fv(typ)n(e)15 b FC(P)o(arameter)p 901 299 V 49 w(Index)h(Mask)p 1183 299 V 551 301 634 2 v 551 309 V 550 365 2 57 v 588 348 a Fr(UNSIGNED)p 767 348 14 2 v 14 w(BYTE)p 901 365 2 57 v 61 w FC(2)950 332 y Fq(8)979 348 y FB(\000)11 b FC(1)p 1183 365 V 551 367 634 2 v 550 423 2 57 v 661 406 a Fr(BITMAP)p 901 423 V 134 w FC(1)p 1183 423 V 551 425 634 2 v 550 482 2 57 v 683 465 a Fr(BYTE)p 901 482 V 156 w FC(2)950 448 y Fq(7)979 465 y FB(\000)g FC(1)p 1183 482 V 551 483 634 2 v 550 540 2 57 v 577 523 a Fr(UNSIGNED)p 756 523 14 2 v 14 w(SHORT)p 901 540 2 57 v 50 w FC(2)950 506 y Fq(16)997 523 y FB(\000)f FC(1)p 1183 540 V 551 541 634 2 v 550 598 2 57 v 672 581 a Fr(SHORT)p 901 598 V 145 w FC(2)950 564 y Fq(15)997 581 y FB(\000)g FC(1)p 1183 598 V 551 599 634 2 v 550 656 2 57 v 599 639 a Fr(UNSIGNED)p 778 639 14 2 v 14 w(INT)p 901 656 2 57 v 72 w FC(2)950 622 y Fq(32)997 639 y FB(\000)g FC(1)p 1183 656 V 551 658 634 2 v 550 714 2 57 v 694 697 a Fr(INT)p 901 714 V 167 w FC(2)950 681 y Fq(31)997 697 y FB(\000)g FC(1)p 1183 714 V 551 716 634 2 v 120 793 a(T)l(able)18 b(4.6:)j(Index)d (masks)d(used)i(b)o(y)g Fz(ReadPixels)p FC(.)24 b(Floating)16 b(p)q(oin)o(t)h(data)f(are)g(not)120 849 y(mask)o(ed.)120 1051 y(where)k Fy(R)p FC(,)g Fy(G)p FC(,)f(and)g Fy(B)j FC(are)d(the)h(v)m(alues)g(of)f(the)g(R,)g(G,)g(and)g(B)h(comp)q(onen)o (ts.)31 b(The)120 1108 y(single)17 b(computed)f(L)g(comp)q(onen)o(t)g (replaces)h(the)e(R,)h(G,)f(and)h(B)f(comp)q(onen)o(ts)h(in)h(the)120 1164 y(group.)120 1351 y Fz(Final)i(Con)o(v)o(ersion)120 1459 y FC(F)l(or)e(an)h(index,)h(if)f(the)g Fv(typ)n(e)g FC(is)g(not)f Fr(FLOAT)p FC(,)f(\014nal)j(con)o(v)o(ersion)f(consists)f (of)h(masking)120 1516 y(the)23 b(index)g(with)g(the)f(v)m(alue)h(giv)o (en)g(T)l(able)g(4.6;)i(if)d(the)g Fv(typ)n(e)h FC(is)f Fr(FLOAT)p FC(,)f(then)i(the)120 1572 y(in)o(teger)g(index)h(is)g(con)o (v)o(erted)e(to)g(a)h(GL)f(\015oat)h(data)f(v)m(alue.)43 b(F)l(or)23 b(a)f(comp)q(onen)o(t,)120 1629 y(eac)o(h)16 b(comp)q(onen)o(t)f(is)h(\014rst)e(clamp)q(ed)j(to)d([0)p Fy(;)8 b FC(1].)18 b(Then,)d(the)g(appropriate)h(con)o(v)o(ersion)120 1685 y(form)o(ula)f(from)g(T)l(able)h(4.7)e(is)i(applied)h(to)d(the)h (comp)q(onen)o(t.)120 1872 y Fz(Placemen)o(t)j(in)g(Clien)o(t)g(Memory) 120 1980 y FC(Groups)c(of)g(elemen)o(ts)g(are)g(placed)h(in)g(memory)f (just)f(as)h(they)g(are)g(tak)o(en)f(from)h(mem-)120 2037 y(ory)i(for)f Fz(Dra)o(wPixels)p FC(.)20 b(That)c(is,)g(the)f Fy(i)p FC(th)h(group)f(of)h(the)f Fy(j)s FC(th)g(ro)o(w)g(\(corresp)q (onding)120 2093 y(to)d(the)h Fy(i)p FC(th)f(pixel)i(in)g(the)f Fy(j)s FC(th)e(ro)o(w\))h(is)h(placed)h(in)f(memory)f(just)g(where)h (the)g Fy(i)p FC(th)f(group)120 2149 y(of)k(the)f Fy(j)s FC(th)g(ro)o(w)g(w)o(ould)g(b)q(e)i(tak)o(en)e(from)g(for)g Fz(Dra)o(wPixels)p FC(.)20 b(See)c Fz(Unpac)o(king)g FC(un-)120 2206 y(der)h(section)h(3.6.3.)k(The)17 b(only)g (di\013erence)h(is)f(that)f(the)h(storage)f(mo)q(de)h(parameters)120 2262 y(whose)h(names)g(b)q(egin)i(with)e Fr(PACK)p 722 2262 14 2 v 33 w FC(are)g(used)h(instead)f(of)g(those)g(whose)g(names)g (b)q(e-)120 2319 y(gin)j(with)g Fr(UNPACK)p 445 2319 V 15 w FC(.)35 b(If)21 b(the)f Fv(format)i FC(is)f Fr(RED)p FC(,)e Fr(GREEN)p FC(,)g Fr(BLUE)p FC(,)g Fr(ALPHA)p FC(,)g(or)h Fr(LUMINANCE)p FC(,)120 2375 y(only)e(the)g(corresp)q (onding)g(single)g(elemen)o(t)g(is)g(written.)26 b(Lik)o(ewise)19 b(if)f(the)f Fv(format)h FC(is)120 2432 y Fr(LUMINANCE)p 321 2432 V 14 w(ALPHA)g FC(or)g Fr(RGB)p FC(,)g(only)h(the)g(corresp)q (onding)g(t)o(w)o(o)f(or)g(three)h(elemen)o(ts)g(are)120 2488 y(written.)h(Otherwise)c(all)g(the)g(elemen)o(ts)g(of)e(eac)o(h)i (group)f(are)f(written.)p eop %%Page: 126 135 126 134 bop 332 137 a FC(126)208 b Fx(CHAPTER)15 b(4.)35 b(FRA)o(GMENTS)15 b(AND)g(THE)g(FRAMEBUFFER)p 386 242 1388 2 v 385 299 2 57 v 411 282 a Fv(typ)n(e)g FC(P)o(arameter)p 735 299 V 48 w(GL)g(Data)f(T)o(yp)q(e)p 1080 299 V 50 w(Comp)q(onen)o(t)h(Con)o(v)o(ersion)g(F)l(orm)o(ula)p 1772 299 V 386 301 1388 2 v 386 309 V 385 365 2 57 v 422 348 a Fr(UNSIGNED)p 601 348 14 2 v 14 w(BYTE)p 735 365 2 57 v 153 w FC(ub)o(yte)p 1080 365 V 141 w Fy(c)e FC(=)g(\(2)1227 332 y Fq(8)1256 348 y FB(\000)d FC(1\))p Fy(f)p 1772 365 V 386 367 1388 2 v 385 423 2 57 v 517 406 a Fr(BYTE)p 735 423 V 260 w FC(b)o(yte)p 1080 423 V 154 w Fy(c)j FC(=)g([\(2)1240 390 y Fq(8)1269 406 y FB(\000)d FC(1\))p Fy(f)15 b FB(\000)10 b FC(1])p Fy(=)p FC(2)p 1772 423 V 386 425 1388 2 v 385 482 2 57 v 411 465 a Fr(UNSIGNED)p 590 465 14 2 v 14 w(SHORT)p 735 482 2 57 v 134 w FC(ushort)p 1080 482 V 133 w Fy(c)j FC(=)g(\(2)1227 448 y Fq(16)1274 465 y FB(\000)d FC(1\))p Fy(f)p 1772 482 V 386 483 1388 2 v 385 540 2 57 v 506 523 a Fr(SHORT)p 735 540 V 242 w FC(short)p 1080 540 V 145 w Fy(c)j FC(=)g([\(2)1240 506 y Fq(16)1286 523 y FB(\000)e FC(1\))p Fy(f)j FB(\000)d FC(1])p Fy(=)p FC(2)p 1772 540 V 386 541 1388 2 v 385 598 2 57 v 433 581 a Fr(UNSIGNED)p 612 581 14 2 v 14 w(INT)p 735 598 2 57 v 180 w FC(uin)o(t)p 1080 598 V 157 w Fy(c)i FC(=)g(\(2)1227 564 y Fq(32)1274 581 y FB(\000)d FC(1\))p Fy(f)p 1772 598 V 386 599 1388 2 v 385 656 2 57 v 528 639 a Fr(INT)p 735 656 V 287 w FC(in)o(t)p 1080 656 V 170 w Fy(c)j FC(=)g([\(2)1240 622 y Fq(32)1286 639 y FB(\000)e FC(1\))p Fy(f)j FB(\000)d FC(1])p Fy(=)p FC(2)p 1772 656 V 386 658 1388 2 v 385 714 2 57 v 506 697 a Fr(FLOAT)p 735 714 V 248 w FC(\015oat)p 1080 714 V 152 w Fy(c)i FC(=)g Fy(f)p 1772 714 V 386 716 1388 2 v 332 793 a FC(T)l(able)20 b(4.7:)27 b(Rev)o(ersed)20 b(comp)q(onen)o(t)f(con)o(v)o(ersions)h(-)f(used)h(when)g(comp)q(onen)o (t)f(data)332 849 y(are)14 b(b)q(eing)h(returned)f(to)f(clien)o(t)j (memory)l(.)j(Color,)13 b(normal,)h(and)g(depth)g(comp)q(onen)o(ts)332 906 y(are)f(con)o(v)o(erted)g(from)f(the)h(in)o(ternal)h(\015oating-p)q (oin)o(t)g(represen)o(tation)f(\()p Fy(f)5 b FC(\))12 b(to)h(a)g(datum)332 962 y(of)f(the)h(sp)q(eci\014ed)i(GL)e(data)f(t)o (yp)q(e)g(\()p Fy(c)p FC(\))g(using)h(the)g(equations)g(in)h(this)f (table.)19 b(All)14 b(arith-)332 1019 y(metic)h(is)f(done)h(in)f(the)h (in)o(ternal)f(\015oating)g(p)q(oin)o(t)h(format.)j(These)d(con)o(v)o (ersions)f(apply)332 1075 y(to)19 b(comp)q(onen)o(t)h(data)f(returned)h (b)o(y)g(GL)g(query)g(commands)f(and)h(to)f(comp)q(onen)o(ts)332 1132 y(of)g(pixel)i(data)d(returned)i(to)e(clien)o(t)j(memory)l(.)31 b(The)19 b(equations)h(remain)g(the)f(same)332 1188 y(ev)o(en)f(if)g (the)f(implemen)o(ted)i(ranges)e(of)g(the)g(GL)h(data)e(t)o(yp)q(es)i (are)f(greater)f(than)h(the)332 1245 y(minim)o(um)f(required)h(ranges.) i(\(Refer)d(to)e(table)i(2.2\))332 1432 y Fl(4.3.3)55 b(Cop)n(ying)19 b(Pixels)332 1517 y Fz(Cop)o(yPixels)h FC(transfers)g(a)h(rectangle)h(of)e(pixel)j(v)m(alues)g(from)d(one)h (region)h(of)e(the)332 1574 y(framebu\013er)15 b(to)f(another.)20 b(Pixel)c(cop)o(ying)g(is)g(diagrammed)f(in)h(Figure)f(4.3.)446 1664 y Fw(void)27 b Fz(Cop)o(yPixels)p FC(\()g Fw(int)13 b Fv(x)p Fw(,)i(int)e Fv(y)p Fw(,)h(sizei)g Fv(width)p Fw(,)g(sizei)g Fv(height)p Fw(,)514 1720 y(enum)h Fv(typ)n(e)g FC(\))f Fw(;)332 1811 y Fv(typ)n(e)k FC(is)h(a)g(sym)o(b)q(olic)g (constan)o(t)f(that)g(m)o(ust)g(b)q(e)h(one)f(of)g Fr(COLOR)p FC(,)f Fr(STENCIL)p FC(,)g(or)h Fr(DEPTH)p FC(,)332 1867 y(indicating)12 b(that)e(the)h(v)m(alues)g(to)f(b)q(e)h(transferred)f (are)g(colors,)h(stencil)h(v)m(alues,)g(or)e(depth)332 1924 y(v)m(alues,)17 b(resp)q(ectiv)o(ely)l(.)25 b(The)16 b(\014rst)g(four)f(argumen)o(ts)h(ha)o(v)o(e)f(the)h(same)g(in)o (terpretation)332 1980 y(as)f(the)g(corresp)q(onding)h(argumen)o(ts)f (to)f Fz(ReadPixels)p FC(.)403 2037 y(V)l(alues)22 b(are)f(obtained)h (from)e(the)i(framebu\013er,)g(con)o(v)o(erted)f(\(if)g(appropriate\),) 332 2093 y(then)k(sub)s(jected)g(to)f(the)h(pixel)h(transfer)e(op)q (erations)h(\(see)g(section)g(3.6.4\),)g(just)332 2149 y(as)c(if)h Fz(ReadPixels)f FC(w)o(ere)g(called)i(with)e(the)h(corresp) q(onding)g(argumen)o(ts.)37 b(If)21 b(the)332 2206 y Fv(typ)n(e)e FC(is)g Fr(STENCIL)e FC(or)h Fr(DEPTH)p FC(,)f(then)i(it)g(is)g(as)f(if)h(the)g Fv(format)h FC(for)e Fz(ReadPixels)h FC(w)o(ere)332 2262 y Fr(STENCIL)p 489 2262 14 2 v 14 w(INDEX)c FC(or)g Fr(DEPTH)p 794 2262 V 15 w(COMPONENT)p FC(,)e(resp)q(ectiv)o(ely)l(.)23 b(If)16 b(the)g Fv(typ)n(e)g FC(is)g Fr(COLOR)p FC(,)e(then)i(if)332 2319 y(the)g(GL)h(is)f(in)h(R)o(GBA)g(mo)q(de,)f(it)g(is)h(as)f(if)h (the)f Fv(format)h FC(w)o(ere)f Fr(RGBA)p FC(,)f(while)i(if)g(the)f(GL) 332 2375 y(is)g(in)g(color)f(index)i(mo)q(de,)e(it)g(is)h(as)f(if)g (the)h Fv(format)g FC(w)o(ere)e Fr(COLOR)p 1431 2375 V 15 w(INDEX)p FC(.)403 2432 y(The)h(groups)h(of)f(elemen)o(ts)h(so)f (obtained)h(are)f(then)h(written)g(to)e(the)i(framebu\013er)332 2488 y(just)j(as)g(if)g Fz(Dra)o(wPixels)g FC(had)g(b)q(een)h(giv)o(en) g Fy(w)q(idth)f FC(and)g Fy(heig)r(ht)p FC(,)h(b)q(eginning)h(with)p eop %%Page: 127 136 127 135 bop 120 137 a Fx(4.3.)34 b(DRA)-5 b(WING,)15 b(READING,)g(AND)h(COPYING)f(PIXELS)298 b FC(127)p 139 242 1459 2 v 139 1262 2 1020 v 193 317 a 21313290 10230372 263127 15656058 48875847 39074365 startTexFig 193 317 a %%BeginDocument: pics/pixcopy.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /pmask34 { } def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 66 /patchar34 put /CharProcs 2 dict def CharProcs begin /.notdef {} def /patchar34 { 16 16 true [16.08 0 0 -16.08 0 16.08] pmask34 imagemask } def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 162 580.5 M 198 580.5 L 198 261 L 234 261 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 468 580.5 M 522 580.5 L 522 261 L 576 261 L stroke grestore gsave matrix currentmatrix [486 0 0 -207 117 495] concat B setmatrix /PatternFont findfont 16.08 scalefont setfont clip 0 0 0 setrgbcolor 256 16.08 512 { 96 exch M (BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) show } for grestore gsave matrix currentmatrix [108 0 0 -45 144 549] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 495] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 492 M 141 543 L 255 543 L 255 492 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 495] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 28.716 33.4706 M (convert) 50.568 S 31.054 19.4706 M (to [0,1]) 45.892 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 459] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 144 405] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 141 402 M 141 453 L 255 453 L 255 402 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 144 405] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 36.486 33.4706 M (scale) 35.028 S 25.601 19.4706 M (and bias) 56.798 S setmatrix grestore gsave matrix currentmatrix [108 0 0 -45 144 369] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 135 315] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 132 312 M 132 363 L 264 363 L 264 312 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 135 315] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 11.284 33.4706 M (RGBA to RGBA ) 107.324 S 40.054 19.4706 M (lookup) 45.892 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 193.5 567 M 198 549 L 202.5 567 L 198 564 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 567 M 198 549 L 202.5 567 L 198 564 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 477 M 198 459 L 202.5 477 L 198 474 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 477 M 198 459 L 202.5 477 L 198 474 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 193.5 387 M 198 369 L 202.5 387 L 198 384 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 193.5 387 M 198 369 L 202.5 387 L 198 384 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 468 459] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 468 405] concat newpath 0 0 M 0 45 L 108 45 L 108 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 465 402 M 465 453 L 579 453 L 579 402 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 468 405] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 39.223 33.4706 M (shift) 29.554 S 20.554 19.4706 M (and offset) 66.892 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 517.5 477 M 522 459 L 526.5 477 L 522 474 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 477 M 522 459 L 526.5 477 L 522 474 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 468 369] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 459 315] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 456 312 M 456 363 L 588 363 L 588 312 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 459 315] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 15.932 33.4706 M (index to index ) 98.028 S 40.054 19.4706 M (look) 28.784 S 68.838 19.4706 M (up) 17.108 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 517.5 387 M 522 369 L 526.5 387 L 522 384 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 517.5 387 M 522 369 L 526.5 387 L 522 384 L closepath stroke grestore gsave matrix currentmatrix [108 0 0 -45 306 369] concat B setmatrix 1 1 1 setrgbcolor gsave fill grestore 0 0 0 setrgbcolor 3.000000 setlinewidth [4] 0 setdash gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 297 315] concat newpath 0 0 M 0 45 L 126 45 L 126 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 294 312 M 294 363 L 426 363 L 426 312 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 297 315] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 13.608 33.4706 M (index to RGBA ) 102.676 S 40.054 19.4706 M (looku) 37.338 S 77.392 19.4706 M (p) 8.554 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 355.5 387 M 360 369 L 364.5 387 L 360 384 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 355.5 387 M 360 369 L 364.5 387 L 360 384 L closepath stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 360 324 M 360 306 L 198 306 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 522 396 M 360 396 L 360 369 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 288 427.5] concat newpath 0 0 M 0 49.5 L 144 49.5 L 144 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 285.5 425 M 285.5 480.913 L 434.5 480.913 L 434.5 425 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 288 427.5] concat /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 12.474 35.413 M (Pixel Transfer) 119.052 S 24.489 17.413 M (Operations) 95.022 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 4.49998 558] concat newpath 0 0 M 0 36 L 157.5 36 L 157.5 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 1.99998 555.5 M 1.99998 596.5 L 164.5 596.5 L 164.5 555.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 4.49998 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 40.243 24.4706 M (RGBA pixel) 77.014 S 6.02001 10.4706 M (data from framebuff) 132.23 S 138.25 10.4706 M (er) 13.23 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 301.5 558] concat newpath 0 0 M 0 36 L 180 36 L 180 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 299 555.5 M 299 596.5 L 484 596.5 L 484 555.5 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 301.5 558] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 34.756 24.4706 M (color index pixel) 110.488 S 17.27 10.4706 M (data from framebuff) 132.23 S 149.5 10.4706 M (er) 13.23 S setmatrix grestore gsave 0 0 0 setrgbcolor newpath 234 256.5 M 252 261 L 234 265.5 L 237 261 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 234 256.5 M 252 261 L 234 265.5 L 237 261 L closepath stroke grestore gsave 0 0 0 setrgbcolor newpath 558 256.5 M 576 261 L 558 265.5 L 561 261 L closepath eofill 0 0 0 setrgbcolor 3.000000 setlinewidth newpath 558 256.5 M 576 261 L 558 265.5 L 561 261 L closepath stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 247.5 238.5] concat newpath 0 0 M 0 36 L 157.5 36 L 157.5 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 245 236 M 245 277 L 407.5 277 L 407.5 236 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 247.5 238.5] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 40.243 24.4706 M (RGBA pixel) 77.014 S 14.966 10.4706 M (data to framebuffer) 127.568 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 562.5 238.5] concat newpath 0 0 M 0 36 L 180 36 L 180 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 560 236 M 560 277 L 745 277 L 745 236 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 562.5 238.5] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 34.756 24.4706 M (color index pixel) 110.488 S 26.216 10.4706 M (data to framebuffer) 127.568 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 178 1083 a Fm(Figure)16 b(4.3.)22 b(Op)q(eration)17 b(of)e Fk(Cop)o(yPixels)p Fm(.)22 b(R)o(GBA)15 b(and)h(color)f(index)h (pixel)f(paths)178 1133 y(are)i(sho)o(wn;)h(depth)f(and)g(stencil)g (pixel)g(paths)g(are)g(not)g(sho)o(wn.)27 b(R)o(GBA-to-R)o(GBA)178 1183 y(and)13 b(index-to-index)g(lo)q(okup)g(are)h(optional.)i (Index-to-R)o(GBA)d(lo)q(okup)g(is)h(curren)o(tly)178 1233 y(nev)o(er)g(p)q(erformed.)p 1595 1262 2 1020 v 139 1264 1459 2 v 120 1442 a FC(\014nal)f(con)o(v)o(ersion)f(of)g (elemen)o(ts.)19 b(The)12 b(e\013ectiv)o(e)h Fv(format)f FC(is)h(the)f(same)g(as)f(that)g(already)120 1499 y(describ)q(ed.)120 1620 y Fl(4.3.4)56 b(Pixel)17 b(dra)n(w/read)j(state)120 1706 y FC(The)d(state)g(required)h(for)e(pixel)i(op)q(erations)f (consists)g(of)g(the)g(parameters)f(that)g(are)120 1763 y(set)e(with)h Fz(PixelStore)p FC(,)f Fz(PixelT)l(ransfer)p FC(,)f(and)h Fz(PixelMap)p FC(.)20 b(This)15 b(state)e(has)h(b)q(een) 120 1819 y(summarized)f(in)g(T)l(ables)g(3.1,)e(3.2,)h(and)g(3.3.)18 b(The)12 b(curren)o(t)g(setting)h(of)e Fz(ReadBu\013er)p FC(,)120 1876 y(a)k(t)o(w)o(elv)o(e-v)m(alued)i(in)o(teger,)e(is)g (also)g(required,)h(along)f(with)h(the)f(curren)o(t)g(raster)f(p)q (osi-)120 1932 y(tion)i(\(section)f(2.12\).)k(State)14 b(set)h(with)h Fz(PixelStore)f FC(is)h(GL)f(clien)o(t)i(state.)p eop %%Page: 128 137 128 136 bop 332 598 a Ft(Chapter)31 b(5)332 805 y FA(Sp)s(ecial)39 b(F)-10 b(unctions)332 1028 y FC(This)18 b(c)o(hapter)g(describ)q(es)h (additional)g(GL)e(functionalit)o(y)i(that)e(do)q(es)h(not)f(\014t)g (easily)332 1084 y(in)o(to)j(an)o(y)f(of)g(the)h(preceding)h(c)o (hapters.)33 b(This)20 b(functionalit)o(y)h(consists)f(of)f(ev)m(alua-) 332 1141 y(tors)14 b(\(used)h(to)f(mo)q(del)i(curv)o(es)f(and)g (surfaces\),)f(selection)i(\(used)f(to)f(lo)q(cate)i(rendered)332 1197 y(primitiv)o(es)g(on)e(the)h(screen\),)g(feedbac)o(k)f(\(whic)o(h) i(returns)e(GL)g(results)h(b)q(efore)g(raster-)332 1254 y(ization\),)h(displa)o(y)h(lists)f(\(used)g(to)g(designate)g(a)f (group)h(of)f(GL)h(commands)f(for)g(later)332 1310 y(execution)20 b(b)o(y)e(the)g(GL\),)g(\015ushing)i(and)f(\014nishing)h(\(used)f(to)e (sync)o(hronize)j(the)e(GL)332 1367 y(command)d(stream\),)f(and)h(hin)o (ts.)332 1510 y Fs(5.1)66 b(Ev)l(aluators)332 1611 y FC(Ev)m(aluators)12 b(pro)o(vide)g(a)f(means)h(to)f(use)h(a)f(p)q (olynomial)i(or)e(rational)h(p)q(olynomial)h(map-)332 1668 y(ping)19 b(to)e(pro)q(duce)i(v)o(ertex,)e(normal,)h(and)g (texture)g(co)q(ordinates,)g(and)g(colors.)28 b(The)332 1724 y(v)m(alues)19 b(so)f(pro)q(duced)i(are)e(sen)o(t)g(on)g(to)f (further)i(stages)e(of)h(the)g(GL)g(as)g(if)h(they)f(had)332 1781 y(b)q(een)j(pro)o(vided)f(directly)g(b)o(y)g(the)f(clien)o(t.)34 b(T)l(ransformations,)19 b(ligh)o(ting,)i(primitiv)o(e)332 1837 y(assem)o(bly)l(,)14 b(rasterization,)g(and)g(p)q(er-pixel)j(op)q (erations)d(are)g(not)f(a\013ected)h(b)o(y)g(the)g(use)332 1894 y(of)h(ev)m(aluators.)403 1950 y(Consider)g(the)h Fy(R)706 1934 y Fu(k)727 1950 y FC(-v)m(alued)h(p)q(olynomial)g Fz(p)p FC(\()p Fy(u)p FC(\))d(de\014ned)j(b)o(y)883 2083 y Fz(p)p FC(\()p Fy(u)p FC(\))12 b(=)1053 2030 y Fu(n)1034 2042 y Fi(X)1035 2133 y Fu(i)p Fq(=0)1101 2083 y Fy(B)1137 2064 y Fu(n)1135 2094 y(i)1161 2083 y FC(\()p Fy(u)p FC(\))p Fz(R)1262 2090 y Fu(i)1733 2083 y FC(\(5.1\))332 2227 y(with)k Fz(R)475 2234 y Fu(i)502 2227 y FB(2)c Fy(R)579 2211 y Fu(k)616 2227 y FC(and)814 2312 y Fy(B)850 2293 y Fu(n)848 2323 y(i)874 2312 y FC(\()p Fy(u)p FC(\))g(=)996 2240 y Fi( )1029 2281 y Fy(n)1035 2343 y(i)1056 2240 y Fi(!)1089 2312 y Fy(u)1115 2293 y Fu(i)1129 2312 y FC(\(1)e FB(\000)g Fy(u)p FC(\))1269 2293 y Fu(n)p FG(\000)p Fu(i)1332 2312 y Fy(;)332 2432 y FC(the)17 b Fy(i)p FC(th)f(Bernstein)i (p)q(olynomial)g(of)f(degree)g Fy(n)g FC(\(recall)g(that)g(0)1434 2415 y Fq(0)1468 2432 y FB(\021)f FC(1)g(and)1648 2397 y Fi(\000)1667 2412 y Fu(n)1669 2447 y Fq(0)1689 2397 y Fi(\001)1723 2432 y FB(\021)f FC(1\).)332 2488 y(Eac)o(h)g Fz(R)484 2495 y Fu(i)514 2488 y FC(is)g(a)g Fv(c)n(ontr)n(ol)h(p)n (oint)p FC(.)j(The)d(relev)m(an)o(t)f(command)g(is)1045 2613 y(128)p eop %%Page: 129 138 129 137 bop 120 137 a Fx(5.1.)34 b(EV)-5 b(ALUA)l(TORS)1009 b FC(129)p 152 242 1433 2 v 151 299 2 57 v 176 282 a Fv(tar)n(get)p 618 299 V 356 w Fy(k)p 693 299 V 51 w FC(V)l(alues)p 1583 299 V 152 301 1433 2 v 152 309 V 151 365 2 57 v 176 348 a Fr(MAP1)p 267 348 14 2 v 15 w(VERTEX)p 414 348 V 15 w(3)p 618 365 2 57 v 197 w FC(3)p 693 365 V 51 w Fy(x)p FC(,)14 b Fy(y)r FC(,)h Fy(z)i FC(v)o(ertex)e(co)q(ordinates)p 1583 365 V 152 367 1433 2 v 151 423 2 57 v 176 406 a Fr(MAP1)p 267 406 14 2 v 15 w(VERTEX)p 414 406 V 15 w(4)p 618 423 2 57 v 197 w FC(4)p 693 423 V 51 w Fy(x)p FC(,)f Fy(y)r FC(,)h Fy(z)r FC(,)g Fy(w)h FC(v)o(ertex)f(co)q(ordinates)p 1583 423 V 152 425 1433 2 v 151 482 2 57 v 176 465 a Fr(MAP1)p 267 465 14 2 v 15 w(INDEX)p 618 482 2 57 v 256 w FC(1)p 693 482 V 51 w(color)g(index)p 1583 482 V 152 483 1433 2 v 151 540 2 57 v 176 523 a Fr(MAP1)p 267 523 14 2 v 15 w(COLOR)p 392 523 V 15 w(4)p 618 540 2 57 v 219 w FC(4)p 693 540 V 51 w(R,)g(G,)f(B,)h(A)p 1583 540 V 152 541 1433 2 v 151 598 2 57 v 176 581 a Fr(MAP1)p 267 581 14 2 v 15 w(NORMAL)p 618 598 2 57 v 234 w FC(3)p 693 598 V 51 w Fy(x)p FC(,)f Fy(y)r FC(,)h Fy(z)i FC(normal)f(co)q (ordinates)p 1583 598 V 152 599 1433 2 v 151 656 2 57 v 176 639 a Fr(MAP1)p 267 639 14 2 v 15 w(TEXTURE)p 436 639 V 15 w(COORD)p 561 639 V 14 w(1)p 618 656 2 57 v 51 w FC(1)p 693 656 V 51 w Fy(s)f FC(texture)g(co)q(ordinate)p 1583 656 V 152 658 1433 2 v 151 714 2 57 v 176 697 a Fr(MAP1)p 267 697 14 2 v 15 w(TEXTURE)p 436 697 V 15 w(COORD)p 561 697 V 14 w(2)p 618 714 2 57 v 51 w FC(2)p 693 714 V 51 w Fy(s)p FC(,)g Fy(t)g FC(texture)g(co)q(ordinates)p 1583 714 V 152 716 1433 2 v 151 772 2 57 v 176 755 a Fr(MAP1)p 267 755 14 2 v 15 w(TEXTURE)p 436 755 V 15 w(COORD)p 561 755 V 14 w(3)p 618 772 2 57 v 51 w FC(3)p 693 772 V 51 w Fy(s)p FC(,)g Fy(t)p FC(,)g Fy(r)h FC(texture)f(co)q (ordinates)p 1583 772 V 152 774 1433 2 v 151 830 2 57 v 176 813 a Fr(MAP1)p 267 813 14 2 v 15 w(TEXTURE)p 436 813 V 15 w(COORD)p 561 813 V 14 w(4)p 618 830 2 57 v 51 w FC(4)p 693 830 V 51 w Fy(s)p FC(,)g Fy(t)p FC(,)g Fy(r)q FC(,)g Fy(q)i FC(texture)e(co)q(ordinates)p 1583 830 V 152 832 1433 2 v 120 959 a(T)l(able)i(5.1:)j(V)l(alues)d(sp)q (eci\014ed)h(b)o(y)d(the)h Fv(tar)n(get)g FC(to)f Fz(Map1)p FC(.)22 b(V)l(alues)16 b(are)g(giv)o(en)g(in)h(the)120 1015 y(order)e(in)h(whic)o(h)g(they)g(are)f(tak)o(en.)234 1142 y Fw(void)21 b Fz(Map1)p FB(f)p Fz(fd)p FB(g)p FC(\()g Fw(enum)10 b Fv(typ)n(e)p Fw(,)h(T)g Fy(u)892 1149 y Fq(1)912 1142 y Fw(,)g(T)g Fy(u)1008 1149 y Fq(2)1027 1142 y Fw(,)h(int)e Fv(stride)p Fw(,)i(int)e Fv(or)n(der)p Fw(,)302 1199 y(T)15 b Fv(p)n(oints)g FC(\))g Fw(;)120 1279 y Fv(typ)n(e)i FC(is)f(a)g(sym)o(b)q(olic)i(constan)o(t)d (indicating)j(the)f(range)f(of)f(the)i(de\014ned)g(p)q(olynomial.)120 1335 y(Its)d(p)q(ossible)i(v)m(alues,)f(along)f(with)g(the)g(ev)m (aluations)h(that)e(eac)o(h)h(indicates,)i(are)d(giv)o(en)120 1392 y(in)k(T)l(able)g(5.1.)k Fy(or)q(der)16 b FC(is)g(equal)h(to)e Fy(n)c FC(+)g(1;)k(The)h(error)f Fr(INVALID)p 1240 1392 14 2 v 15 w(VALUE)f FC(is)j(generated)120 1448 y(if)g Fy(or)q(der)g FC(is)g(less)f(than)h(one)f(or)g(greater)f(than)h Fr(MAX)p 1001 1448 V 15 w(EVAL)p 1104 1448 V 15 w(ORDER)p FC(.)f Fv(p)n(oints)h FC(is)g(a)g(p)q(oin)o(ter)120 1505 y(to)d(a)h(set)f(of)g Fy(n)7 b FC(+)g(1)14 b(blo)q(c)o(ks)h(of)e (storage.)18 b(Eac)o(h)c(blo)q(c)o(k)g(b)q(egins)h(with)f Fy(k)h FC(single-precision)120 1561 y(\015oating-p)q(oin)o(t)22 b(or)f(double-precision)j(\015oating-p)q(oin)o(t)e(v)m(alues,)h(resp)q (ectiv)o(ely)l(.)39 b(The)120 1618 y(rest)15 b(of)g(the)g(blo)q(c)o(k)h (ma)o(y)e(b)q(e)i(\014lled)h(with)e(arbitrary)g(data.)k(T)l(able)d(5.1) e(indicates)i(ho)o(w)120 1674 y Fy(k)h FC(dep)q(ends)f(on)g Fv(typ)n(e)f FC(and)g(what)g(the)g Fy(k)h FC(v)m(alues)h(represen)o(t)e (in)h(eac)o(h)f(case.)191 1731 y Fv(stride)d FC(is)g(the)g(n)o(um)o(b)q (er)g(of)f(single-)j(or)d(double-precision)k(v)m(alues)e(\(as)e (appropriate\))120 1787 y(in)i(eac)o(h)g(blo)q(c)o(k)g(of)e(storage.)18 b(The)12 b(error)g Fr(INVALID)p 965 1787 V 14 w(VALUE)f FC(results)i(if)f Fv(stride)g FC(is)h(less)g(than)120 1843 y Fy(k)q FC(.)19 b(The)12 b(order)f(of)g(the)g(p)q(olynomial,)j Fv(or)n(der)p FC(,)e(is)g(also)f(the)h(n)o(um)o(b)q(er)g(of)f(blo)q(c)o (ks)h(of)f(storage)120 1900 y(con)o(taining)16 b(con)o(trol)f(p)q(oin)o (ts.)191 1956 y Fy(u)217 1963 y Fq(1)251 1956 y FC(and)f Fy(u)364 1963 y Fq(2)398 1956 y FC(giv)o(e)g(t)o(w)o(o)f(\015oating-p)q (oin)o(t)h(v)m(alues)h(that)f(de\014ne)h(the)f(endp)q(oin)o(ts)h(of)f (the)120 2013 y(pre-image)22 b(of)e(the)h(map.)37 b(When)22 b(a)e(v)m(alue)j Fy(u)945 1996 y FG(0)977 2013 y FC(is)f(presen)o(ted)f (for)f(ev)m(aluation,)k(the)120 2069 y(form)o(ula)15 b(used)h(is)663 2139 y Fz(p)692 2120 y FG(0)704 2139 y FC(\()p Fy(u)748 2120 y FG(0)759 2139 y FC(\))d(=)g Fz(p)p FC(\()893 2108 y Fy(u)919 2092 y FG(0)941 2108 y FB(\000)e Fy(u)1013 2115 y Fq(1)p 890 2129 148 2 v 890 2170 a Fy(u)916 2177 y Fq(2)945 2170 y FB(\000)g Fy(u)1017 2177 y Fq(1)1041 2139 y FC(\))p Fy(:)120 2232 y FC(The)16 b(error)e Fr(INVALID)p 482 2232 14 2 v 15 w(VALUE)g FC(results)h(if)h Fy(u)830 2239 y Fq(1)862 2232 y FC(=)d Fy(u)936 2239 y Fq(2)956 2232 y FC(.)191 2288 y Fz(Map2)h FC(is)h(analogous)f(to)g Fz(Map1)p FC(,)g(except)h (that)f(it)g(describ)q(es)i(biv)m(ariate)g(p)q(olyno-)120 2345 y(mials)g(of)f(the)g(form)536 2450 y Fz(p)p FC(\()p Fy(u;)8 b(v)r FC(\))i(=)750 2397 y Fu(n)730 2409 y Fi(X)732 2500 y Fu(i)p Fq(=0)813 2397 y Fu(m)799 2409 y Fi(X)798 2500 y Fu(j)r Fq(=0)867 2450 y Fy(B)903 2431 y Fu(n)901 2461 y(i)927 2450 y FC(\()p Fy(u)p FC(\))p Fy(B)1025 2431 y Fu(m)1023 2461 y(j)1058 2450 y FC(\()p Fy(v)r FC(\))p Fz(R)1157 2457 y Fu(ij)1187 2450 y Fy(:)p eop %%Page: 130 139 130 138 bop 332 137 a FC(130)622 b Fx(CHAPTER)15 b(5.)35 b(SPECIAL)16 b(FUNCTIONS)p 350 242 1459 2 v 350 767 2 525 v 449 317 a 19892389 4774168 2039234 24339251 49336320 36048404 startTexFig 449 317 a %%BeginDocument: pics/evalmaps.ps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /S { /fixwidth exch def dup length /nchars exch def dup stringwidth pop fixwidth exch sub nchars div exch 0 exch ashow } def /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 1 1 scale 0 setlinewidth /drawtri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath stroke } bind def /filltri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath fill } bind def /cliptri { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 0 setgray newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto closepath clip } bind def /imgscanrgb { gsave translate /scandy exch def /scandx exch def /istr scandx 3 mul string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} false 3 colorimage grestore } bind def /imgscanbw { gsave translate /scandy exch def /scandx exch def /istr scandx string def scandx scandy scale scandx scandy 8 [scandx 0 0 scandy neg 0 scandy] {currentfile istr readhexstring pop} image grestore } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /showcasedingbatencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117 /a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19 /a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7 /a8 /a9 /a10 /a29 /a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39 /a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49 /a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59 /a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69 /a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78 /a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef /a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93 /a94 /a95 /a96 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108 /a112 /a111 /a110 /a109 /a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129 /a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139 /a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149 /a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159 /a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168 /a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177 /a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef /a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187 /a188 /a189 /a190 /a191 /.notdef ] def /Times-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Times-Bold-SHOWISO exch definefont pop /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Symbol findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall currentdict end /Symbol-SHOWISO exch definefont pop /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /saveit save def gsave gsave matrix currentmatrix [96 0 0 -112 176 528] concat B setmatrix 0 0 0 setrgbcolor 2.000000 setlinewidth gsave stroke grestore grestore gsave gsave matrix currentmatrix [1 0 0 1 31 447] concat newpath 0 0 M 0 46 L 79.004 46 L 79.004 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 29 445 M 29 495 L 112.004 495 L 112.004 445 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 31 447] concat /Times-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 26.4286 M (EvalMesh) 77.004 S 0 3.42857 M (EvalPoint) 76.014 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 187 390] concat newpath 0 0 M 0 23 L 75.008 23 L 75.008 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 185 388 M 185 415 L 264.008 415 L 264.008 388 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 187 390] concat /Times-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.42857 M (MapGrid) 73.008 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 459 390] concat newpath 0 0 M 0 23 L 38 23 L 38 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 457 388 M 457 415 L 499 415 L 499 388 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 459 390] concat /Times-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.42857 M (Map) 36 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 287 370] concat newpath 0 0 M 0 23 L 86.006 23 L 86.006 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 285 368 M 285 395 L 375.006 395 L 375.006 368 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 287 370] concat /Times-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 0 3.42857 M (EvalCoord) 84.006 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 177 472 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 72 472 M 158 472 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 163 478] concat newpath 0 0 M 0 19 L 9.784 19 L 9.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 161 476 M 161 499 L 174.784 499 L 174.784 476 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 163 478] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (k) 7.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 163 446] concat newpath 0 0 M 0 19 L 5.892 19 L 5.892 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 161 444 M 161 467 L 170.892 467 L 170.892 444 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 163 446] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (l) 3.892 S setmatrix grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 200 496 M 248 496 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 200 480 M 248 480 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 200 464 M 248 464 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 200 448 M 248 448 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 208 440 M 208 504 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 224 440 M 224 504 L stroke grestore gsave 0 0 0 setrgbcolor 1.000000 setlinewidth newpath 240 440 M 240 504 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 401 472 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 272 472 M 382 472 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 347 476] concat newpath 0 0 M 0 23 L 45.668 23 L 45.668 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 345 473.471 M 345 501 L 394.668 501 L 394.668 473.471 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 347 476] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 6.47059 M ([u) 13.216 S /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 13.216 0.470589 M (1) 6.672 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 19.888 6.47059 M (,u) 12.446 S /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 32.334 0.470589 M (2) 6.672 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 39.006 6.47059 M (]) 4.662 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 347 436] concat newpath 0 0 M 0 23 L 44.128 23 L 44.128 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 345 433.471 M 345 461 L 393.128 461 L 393.128 433.471 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 347 436] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 6.47059 M ([v) 12.446 S /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 12.446 0.470589 M (1) 6.672 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 19.118 6.47059 M (,v) 11.676 S /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 30.794 0.470589 M (2) 6.672 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 37.466 6.47059 M (]) 4.662 S setmatrix grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 328 473 translate 90 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 328 392 M 328 454 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 509 472 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 464 472 M 490 472 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 443 474] concat newpath 0 0 M 0 19 L 30.784 19 L 30.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 441 472 M 441 495 L 475.784 495 L 475.784 472 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 443 474] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M ([0,1]) 28.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 443 450] concat newpath 0 0 M 0 19 L 30.784 19 L 30.784 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 441 448 M 441 471 L 475.784 471 L 475.784 448 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 443 450] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M ([0,1]) 28.784 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 515 458] concat newpath 0 0 M 0 27 L 43.096 27 L 43.096 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 513 456 M 513 488 L 560.096 488 L 560.096 456 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 515 458] concat /Symbol findfont 24 scalefont setfont 0 0 0 setrgbcolor 0 6 M (S) 14.208 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 14.208 9 M (B) 10.108 S /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 24.316 3 M (i) 3.336 S /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 27.652 9 M (R) 10.108 S /Helvetica-Bold-SHOWISO findfont 12 scalefont setfont 37.76 3 M (i) 3.336 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 403 462] concat newpath 0 0 M 0 22 L 36.622 22 L 36.622 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 401 460 M 401 486 L 441.622 486 L 441.622 460 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 403 462] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Ax+b) 34.622 S setmatrix grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth [2] 0 setdash newpath 476 416 M 476 528 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 464 416 M 400 416 L 400 528 L 464 528 L stroke grestore gsave 0 0 0 setrgbcolor 2.000000 setlinewidth newpath 464 416 M 560 416 L 560 528 L 464 528 L stroke grestore gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 609 472 translate 0 rotate 1.2 1.2 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 2.000000 setlinewidth newpath 560 472 M 590 472 L stroke grestore gsave gsave matrix currentmatrix [1 0 0 1 611 433] concat newpath 0 0 M 0 88 L 138.136 88 L 138.136 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 609 431 M 609 523 L 751.136 523 L 751.136 431 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 611 433] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 68.4706 M (Vertices) 54.474 S 0 46.4706 M (Normals) 56.014 S 0 24.4706 M (Texture Coordinates) 136.136 S 0 2.47059 M (Colors) 44.338 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 75 526] concat newpath 0 0 M 0 22 L 56.46 22 L 56.46 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 73 524 M 73 550 L 133.46 550 L 133.46 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 75 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Integers) 54.46 S setmatrix grestore gsave gsave matrix currentmatrix [1 0 0 1 315 526] concat newpath 0 0 M 0 22 L 39.352 22 L 39.352 0 L closepath setmatrix 0 0 0 setrgbcolor grestore newpath 313 524 M 313 550 L 356.352 550 L 356.352 524 L closepath clip newpath 0 0 0 setrgbcolor matrix currentmatrix [1 0 0 1 315 526] concat /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor 0 2.47059 M (Reals) 37.352 S setmatrix grestore grestore showpage saveit restore grestore %%EndDocument endTexFig 389 738 a Fm(Figure)e(5.1.)j(Map)d(Ev)n(aluation.)p 1807 767 2 525 v 350 769 1459 2 v 332 952 a FC(The)i(form)e(of)h(the)g Fz(Map2)g FC(command)g(is)446 1055 y Fw(void)49 b Fz(Map2)p FB(f)p Fz(fd)p FB(g)p FC(\()h Fw(enum)25 b Fv(tar)n(get)p Fw(,)i(T)e Fy(u)1239 1062 y Fq(1)1259 1055 y Fw(,)j(T)d Fy(u)1386 1062 y Fq(2)1405 1055 y Fw(,)j(int)d Fv(ustride)p Fw(,)514 1111 y(int)12 b Fv(uor)n(der)p Fw(,)i(T)e Fy(v)821 1118 y Fq(1)841 1111 y Fw(,)h(T)g Fy(v)937 1118 y Fq(2)956 1111 y Fw(,)h(int)e Fv(vstride)p Fw(,)h(int)f Fv(vor)n(der)p Fw(,)h(T)g Fv(p)n(oints)f FC(\))g Fw(;)332 1214 y Fv(tar)n(get)18 b FC(is)h(a)f(range)g(t)o(yp)q(e)g(selected)h(from)f(the)g(same)g (group)g(as)g(is)g(used)h(for)f Fz(Map1)p FC(,)332 1270 y(except)i(that)f(the)h(string)f Fw(MAP1)g FC(is)h(replaced)h(with)f Fw(MAP2)p FC(.)32 b Fv(p)n(oints)19 b FC(is)h(a)f(p)q(oin)o(ter)h(to) 332 1327 y(\()p Fy(n)11 b FC(+)f(1\)\()p Fy(m)g FC(+)h(1\))k(blo)q(c)o (ks)h(of)f(storage)g(\()p Fy(uor)q(der)f FC(=)f Fy(n)e FC(+)g(1)k(and)h Fy(v)r(or)q(der)e FC(=)g Fy(m)c FC(+)h(1;)k(the)332 1383 y(error)g Fr(INVALID)p 601 1383 14 2 v 14 w(VALUE)g FC(is)h(generated)g(if)g(either)h Fy(uor)q(der)f FC(or)f Fy(v)r(or)q(der)h FC(is)g(less)h(than)e(one)332 1440 y(or)g(greater)f(than)h Fr(MAX)p 717 1440 V 15 w(EVAL)p 820 1440 V 15 w(ORDER)p FC(\).)e(The)j(v)m(alues)g(comprising)g Fz(R)1484 1447 y Fu(ij)1530 1440 y FC(are)f(lo)q(cated)853 1549 y(\()p Fy(ustr)q(ide)p FC(\))p Fy(i)9 b FC(+)h(\()p Fy(v)r(str)q(ide)p FC(\))p Fy(j)332 1658 y FC(v)m(alues)k(\(either)f (single-)h(or)f(double-precision)j(\015oating-p)q(oin)o(t,)d(as)f (appropriate\))h(past)332 1714 y(the)j(\014rst)f(v)m(alue)i(p)q(oin)o (ted)f(to)f(b)o(y)h Fv(p)n(oints)p FC(.)k Fy(u)1084 1721 y Fq(1)1103 1714 y FC(,)c Fy(u)1158 1721 y Fq(2)1177 1714 y FC(,)g Fy(v)1228 1721 y Fq(1)1247 1714 y FC(,)g(and)f Fy(v)1386 1721 y Fq(2)1422 1714 y FC(de\014ne)h(the)g(pre-image)332 1771 y(rectangle)g(of)e(the)i(map;)e(a)h(domain)h(p)q(oin)o(t)g(\()p Fy(u)1133 1754 y FG(0)1144 1771 y Fy(;)8 b(v)1189 1754 y FG(0)1199 1771 y FC(\))15 b(is)h(ev)m(aluated)g(as)763 1904 y Fz(p)792 1886 y FG(0)803 1904 y FC(\()p Fy(u)847 1886 y FG(0)859 1904 y Fy(;)8 b(v)904 1886 y FG(0)914 1904 y FC(\))13 b(=)g Fz(p)p FC(\()1048 1874 y Fy(u)1074 1857 y FG(0)1096 1874 y FB(\000)e Fy(u)1168 1881 y Fq(1)p 1045 1894 148 2 v 1045 1936 a Fy(u)1071 1943 y Fq(2)1100 1936 y FB(\000)g Fy(u)1172 1943 y Fq(1)1196 1904 y Fy(;)1225 1874 y(v)1249 1857 y FG(0)1270 1874 y FB(\000)g Fy(v)1338 1881 y Fq(1)p 1221 1894 140 2 v 1221 1936 a Fy(v)1243 1943 y Fq(2)1273 1936 y FB(\000)g Fy(v)1341 1943 y Fq(1)1366 1904 y FC(\))p Fy(:)403 2033 y FC(The)i(ev)m(aluation)h(of)e(a)h (de\014ned)h(map)e(is)i(enabled)g(or)e(disabled)j(with)e Fz(Enable)h FC(and)332 2089 y Fz(Disable)k FC(using)g(the)g(constan)o (t)e(corresp)q(onding)i(to)f(the)g(map)g(as)g(describ)q(ed)i(ab)q(o)o (v)o(e.)332 2146 y(The)d(error)e Fr(INVALID)p 694 2146 14 2 v 14 w(VALUE)h FC(results)g(if)h(either)g Fv(ustride)f FC(or)g Fv(vstride)g FC(is)h(less)g(than)f(k,)g(or)332 2202 y(if)h Fy(u)400 2209 y Fq(1)435 2202 y FC(is)f(equal)h(to)f Fy(u)682 2209 y Fq(2)702 2202 y FC(,)f(or)h(if)h Fy(v)849 2209 y Fq(1)884 2202 y FC(is)f(equal)h(to)f Fy(v)1127 2209 y Fq(2)1147 2202 y FC(.)403 2261 y(Figure)h(5.1)f(describ)q(es)i (map)f(ev)m(aluation)h(sc)o(hematically;)g(an)f(ev)m(aluation)h(of)f (en-)332 2317 y(abled)g(maps)f(is)h(e\013ected)f(in)h(one)g(of)e(t)o(w) o(o)g(w)o(a)o(ys.)19 b(The)d(\014rst)e(w)o(a)o(y)h(is)g(to)g(use)446 2420 y Fw(void)29 b Fz(Ev)m(alCo)q(ord)p FB(f)p Fz(12)p FB(gf)p Fz(fd)p FB(g)p FC(\()i Fw(T)15 b Fv(ar)n(g)g FC(\))g Fw(;)446 2477 y(void)29 b Fz(Ev)m(alCo)q(ord)p FB(f)p Fz(12)p FB(gf)p Fz(fd)p FB(g)p Fz(v)p FC(\()h Fw(T)15 b Fv(ar)n(g)g FC(\))g Fw(;)p eop %%Page: 131 140 131 139 bop 120 137 a Fx(5.1.)34 b(EV)-5 b(ALUA)l(TORS)1009 b FC(131)120 286 y Fz(Ev)m(alCo)q(ord1)15 b FC(causes)e(ev)m(aluation)i (of)d(the)i(enabled)g(1-dimensional)i(maps.)j(The)13 b(ar-)120 343 y(gumen)o(t)f(is)g(the)f(v)m(alue)i(\(or)d(a)i(p)q(oin)o (ter)g(to)e(the)i(v)m(alue\))g(that)f(is)h(the)g(domain)g(co)q (ordinate,)120 399 y Fy(u)146 383 y FG(0)158 399 y FC(.)19 b Fz(Ev)m(alCo)q(ord2)14 b FC(causes)g(ev)m(aluation)g(of)f(the)g (enabled)i(2-dimensional)g(maps.)j(The)120 456 y(t)o(w)o(o)c(v)m(alues) j(sp)q(ecify)f(the)f(t)o(w)o(o)f(domain)i(co)q(ordinates,)f Fy(u)1098 439 y FG(0)1125 456 y FC(and)g Fy(v)1237 439 y FG(0)1249 456 y FC(,)f(in)i(that)f(order.)191 512 y(When)g(one)g(of)f (the)h Fz(Ev)m(alCo)q(ord)g FC(commands)g(is)g(issued,)h(all)f(curren)o (tly)g(enabled)120 569 y(maps)d(of)g(the)g(indicated)i(dimension)g(are) d(ev)m(aluated.)20 b(Then,)13 b(for)f(eac)o(h)g(enabled)h(map,)120 625 y(it)18 b(is)f(as)g(if)g(a)g(corresp)q(onding)h(GL)f(command)g(w)o (ere)f(issued)i(with)g(the)f(resulting)h(co-)120 682 y(ordinates,)j(with)f(one)g(imp)q(ortan)o(t)f(di\013erence.)34 b(The)20 b(di\013erence)h(is)f(that)f(when)h(an)120 738 y(ev)m(aluation)i(is)f(p)q(erformed,)h(the)f(GL)g(uses)g(ev)m(aluated)g (v)m(alues)h(instead)g(of)e(curren)o(t)120 795 y(v)m(alues)d(for)e (those)g(ev)m(aluations)i(that)e(are)g(enabled)i(\(otherwise,)e(the)h (curren)o(t)g(v)m(alues)120 851 y(are)h(used\).)25 b(The)17 b(order)g(of)f(the)h(e\013ectiv)o(e)g(commands)g(is)g(immaterial,)h (except)f(that)120 907 y Fz(V)l(ertex)d FC(\(for)g(v)o(ertex)g(co)q (ordinate)i(ev)m(aluation\))g(m)o(ust)e(b)q(e)i(issued)g(last.)k(Use)15 b(of)g(ev)m(al-)120 964 y(uators)f(has)h(no)g(e\013ect)g(on)g(the)g (curren)o(t)g(color,)f(normal,)h(or)g(texture)f(co)q(ordinates.)20 b(If)120 1020 y Fz(ColorMaterial)h FC(is)f(enabled,)h(ev)m(aluated)f (color)f(v)m(alues)i(a\013ect)d(the)h(result)h(of)f(the)120 1077 y(ligh)o(ting)e(equation)g(as)e(if)i(the)f(curren)o(t)f(color)h(w) o(as)f(b)q(eing)j(mo)q(di\014ed,)f(but)f(no)g(c)o(hange)120 1133 y(is)g(made)f(to)g(the)g(trac)o(king)g(ligh)o(ting)h(parameters)f (or)f(to)h(the)g(curren)o(t)g(color.)191 1190 y(No)g(command)g(is)h (e\013ectiv)o(ely)g(issued)h(if)e(the)h(corresp)q(onding)g(map)f(\(of)g (the)g(indi-)120 1246 y(cated)d(dimension\))h(is)g(not)e(enabled.)20 b(If)12 b(more)g(than)f(one)h(ev)m(aluation)h(is)g(enabled)g(for)e(a) 120 1303 y(particular)k(dimension)h(\(e.g.)i Fr(MAP1)p 739 1303 14 2 v 15 w(TEXTURE)p 908 1303 V 14 w(COORD)p 1032 1303 V 15 w(1)c FC(and)g Fr(MAP1)p 1258 1303 V 15 w(TEXTURE)p 1427 1303 V 14 w(COORD)p 1551 1303 V 15 w(2)p FC(\),)120 1359 y(then)j(only)g(the)g(result)g(of)f(the)h(ev)m (aluation)h(of)e(the)g(map)h(with)g(the)f(highest)h(n)o(um)o(b)q(er)120 1416 y(of)e(co)q(ordinates)h(is)f(used.)191 1472 y(Finally)l(,)26 b(if)d(either)g Fr(MAP2)p 640 1472 V 15 w(VERTEX)p 787 1472 V 14 w(3)g FC(or)f Fr(MAP2)p 997 1472 V 14 w(VERTEX)p 1143 1472 V 15 w(4)g FC(is)h(enabled,)j(then)d(the)120 1528 y(normal)13 b(to)g(the)g(surface)g(is)h(computed.)19 b(Analytic)c(computation,)e(whic)o(h)h(sometimes)120 1585 y(yields)21 b(normals)d(of)h(length)g(zero)f(is)i(one)f(metho)q(d) f(whic)o(h)i(ma)o(y)e(b)q(e)h(used.)31 b(If)19 b(auto-)120 1641 y(matic)e(normal)g(generation)h(is)f(enabled,)i(then)e(this)h (computed)f(normal)g(is)h(used)f(as)120 1698 y(the)i(normal)g(asso)q (ciated)g(with)g(a)g(generated)g(v)o(ertex.)30 b(Automatic)19 b(normal)f(gener-)120 1754 y(ation)h(is)h(con)o(trolled)f(with)g Fz(Enable)h FC(and)f Fz(Disable)h FC(with)g(sym)o(b)q(olic)g(the)f (constan)o(t)120 1811 y Fr(AUTO)p 211 1811 V 15 w(NORMAL)p FC(.)12 b(If)j(automatic)e(normal)h(generation)g(is)g(disabled,)i(then) e(a)f(corresp)q(ond-)120 1867 y(ing)e(normal)g(map,)g(if)f(enabled,)j (is)e(used)g(to)f(pro)q(duce)h(a)f(normal.)18 b(If)11 b(neither)g(automatic)120 1924 y(normal)19 b(generation)g(nor)f(a)h (normal)f(map)h(are)f(enabled,)j(then)e(no)f(normal)h(is)g(sen)o(t)120 1980 y(with)i(a)e(v)o(ertex)h(resulting)h(from)e(an)h(ev)m(aluation)h (\(the)f(e\013ect)g(is)g(that)g(the)g(curren)o(t)120 2037 y(normal)c(is)f(used\).)191 2093 y(F)l(or)g Fr(MAP)p 342 2093 V 15 w(VERTEX)p 489 2093 V 14 w(3)p FC(,)g(let)h Fz(q)d FC(=)h Fz(p)p FC(.)21 b(F)l(or)15 b Fr(MAP)p 920 2093 V 15 w(VERTEX)p 1067 2093 V 14 w(4)p FC(,)g(let)h Fz(q)d FC(=)h(\()p Fy(x=w)q(;)8 b(y)r(=w)q(;)g(z)r(=w)p FC(\),)120 2149 y(where)16 b(\()p Fy(x;)8 b(y)r(;)g(z)r(;)g(w)q FC(\))h(=)k Fz(p)p FC(.)20 b(Then)c(let)717 2267 y Fz(m)c FC(=)826 2236 y Fy(@)s Fz(q)p 826 2256 55 2 v 827 2298 a Fy(@)s(u)896 2267 y FB(\002)946 2236 y Fy(@)s Fz(q)p 946 2256 V 948 2298 a Fy(@)s(v)1005 2267 y(:)120 2375 y FC(Then)k(the)f(generated)h(analytic)g(normal,)e Fz(n)p FC(,)h(is)h(giv)o(en)g(b)o(y)f Fz(n)d FC(=)h Fz(m)p Fy(=)p FB(k)p Fz(m)p FB(k)p FC(.)191 2432 y(The)19 b(second)h(w)o(a)o(y)e(to)g (carry)h(out)g(ev)m(aluations)h(is)g(to)e(use)i(a)e(set)h(of)g (commands)120 2488 y(that)d(pro)o(vide)h(for)e(e\016cien)o(t)i(sp)q (eci\014cation)h(of)e(a)g(series)g(of)g(ev)o(enly)h(spaced)g(v)m(alues) g(to)p eop %%Page: 132 141 132 140 bop 332 137 a FC(132)622 b Fx(CHAPTER)15 b(5.)35 b(SPECIAL)16 b(FUNCTIONS)332 286 y FC(b)q(e)h(mapp)q(ed.)23 b(This)17 b(metho)q(d)f(pro)q(ceeds)h(in)g(t)o(w)o(o)e(steps.)22 b(The)16 b(\014rst)g(step)g(is)h(to)e(de\014ne)332 343 y(a)g(grid)h(in)g(the)f(domain.)20 b(This)c(is)g(done)f(using)446 449 y Fw(void)29 b Fz(MapGrid1)p FB(f)p Fz(fd)p FB(g)p FC(\()h Fw(int)15 b Fy(n)p Fw(,)g(T)g Fy(u)1164 433 y FG(0)1164 461 y Fq(1)1184 449 y Fw(,)g(T)g Fy(u)1288 433 y FG(0)1288 461 y Fq(2)1323 449 y FC(\))g Fw(;)332 556 y FC(for)g(a)g(1-dimensional)i(map)e(or)446 662 y Fw(void)39 b Fz(MapGrid2)p FB(f)p Fz(fd)p FB(g)p FC(\()g Fw(int)19 b Fy(n)1083 669 y Fu(u)1106 662 y Fw(,)i(T)f Fy(u)1221 645 y FG(0)1221 673 y Fq(1)1240 662 y Fw(,)h(T)f Fy(u)1355 645 y FG(0)1355 673 y Fq(2)1375 662 y Fw(,)h(int)e Fy(n)1538 669 y Fu(v)1559 662 y Fw(,)i(T)e Fy(v)1671 645 y FG(0)1669 673 y Fq(1)1689 662 y Fw(,)514 718 y(T)c Fy(v)577 702 y FG(0)575 730 y Fq(2)610 718 y FC(\))g Fw(;)332 825 y FC(for)g(a)h(2-dimensional)i(map.)k(In)17 b(the)f(case)g(of)f Fz(MapGrid1)h Fy(u)1415 808 y FG(0)1415 836 y Fq(1)1451 825 y FC(and)g Fy(u)1566 808 y FG(0)1566 836 y Fq(2)1602 825 y FC(describ)q(e)i(an)332 881 y(in)o(terv)m(al,)23 b(while)e Fy(n)g FC(describ)q(es)h(the)f(n)o(um)o(b)q(er)f(of)g (partitions)h(of)f(the)h(in)o(terv)m(al.)36 b(The)332 938 y(error)15 b Fr(INVALID)p 601 938 14 2 v 15 w(VALUE)g FC(results)h(if)h Fy(n)d FB(\024)g FC(0.)23 b(F)l(or)15 b Fz(MapGrid2)p FC(,)h(\()p Fy(u)1466 921 y FG(0)1466 949 y Fq(1)1486 938 y Fy(;)8 b(v)1531 921 y FG(0)1529 949 y Fq(1)1548 938 y FC(\))15 b(sp)q(eci\014es)j(one)332 994 y(t)o(w)o(o-dimensional)c(p)q(oin)o(t)f(and)f(\()p Fy(u)911 978 y FG(0)911 1006 y Fq(2)931 994 y Fy(;)c(v)976 978 y FG(0)974 1006 y Fq(2)993 994 y FC(\))k(sp)q(eci\014es)j(another.) j Fy(n)1407 1001 y Fu(u)1442 994 y FC(giv)o(es)13 b(the)g(n)o(um)o(b)q (er)g(of)332 1050 y(partitions)f(b)q(et)o(w)o(een)h Fy(u)735 1034 y FG(0)735 1062 y Fq(1)766 1050 y FC(and)g Fy(u)878 1034 y FG(0)878 1062 y Fq(2)897 1050 y FC(,)g(and)f Fy(n)1035 1057 y Fu(v)1068 1050 y FC(giv)o(es)g(the)g(n)o(um)o(b)q(er)g(of)g (partitions)g(b)q(et)o(w)o(een)332 1107 y Fy(v)356 1090 y FG(0)354 1118 y Fq(1)389 1107 y FC(and)j Fy(v)501 1090 y FG(0)499 1118 y Fq(2)519 1107 y FC(.)20 b(If)15 b(either)h Fy(n)753 1114 y Fu(u)789 1107 y FB(\024)d FC(0)i(or)f Fy(n)957 1114 y Fu(v)991 1107 y FB(\024)f FC(0,)h(then)i(the)f(error)f Fr(INVALID)p 1539 1107 V 15 w(VALUE)g FC(o)q(ccurs.)403 1166 y(Once)g(a)e(grid)h(is)h(de\014ned,)g(an)f(ev)m(aluation)h(on)f(a) f(rectangular)h(subset)g(of)g(that)f(grid)332 1223 y(ma)o(y)j(b)q(e)g (carried)h(out)f(b)o(y)g(calling)446 1329 y Fw(void)29 b Fz(Ev)m(alMesh1)p FC(\()i Fw(enum)14 b Fv(mo)n(de)p Fw(,)i(int)e Fy(p)1229 1336 y Fq(1)1249 1329 y Fw(,)h(int)g Fy(p)1398 1336 y Fq(2)1432 1329 y FC(\))g Fw(;)332 1436 y Fv(mo)n(de)i FC(is)h(either)g Fr(POINT)d FC(or)i Fr(LINE)p FC(.)f(The)h(e\013ect)g(is)g(the)g(same)g(as)g(p)q(erforming)g(the)g (fol-)332 1492 y(lo)o(wing)f(co)q(de)g(fragmen)o(t,)d(with)j(\001)p Fy(u)952 1476 y FG(0)976 1492 y FC(=)d(\()p Fy(u)1068 1476 y FG(0)1068 1504 y Fq(2)1097 1492 y FB(\000)e Fy(u)1169 1476 y FG(0)1169 1504 y Fq(1)1189 1492 y FC(\))p Fy(=n)p FC(:)529 1602 y Fz(Begin)p Fw(\()p Fv(typ)n(e)p Fw(\);)590 1658 y Fz(for)j Fy(i)f FC(=)g Fy(p)768 1665 y Fq(1)802 1658 y FC(to)i Fy(p)881 1665 y Fq(2)916 1658 y FC(step)g(1)p Fy(:)p FC(0)650 1714 y Fz(Ev)m(alCo)q(ord1)p Fw(\()p Fy(i)25 b Fw(*)f FC(\001)p Fy(u)1093 1698 y FG(0)1128 1714 y Fw(+)g Fy(u)1202 1698 y FG(0)1202 1726 y Fq(1)1221 1714 y Fw(\);)529 1771 y Fz(End)p Fw(\(\);)332 1877 y FC(where)18 b Fz(Ev)m(alCo)q(ord1f)h FC(or)f Fz(Ev)m(alCo)q(ord1d)h FC(is)f(substituted)h(for)e Fz(Ev)m(alCo)q(ord1)i FC(as)332 1934 y(appropriate.)h(If)14 b Fv(mo)n(de)g FC(is)g Fr(POINT)p FC(,)e(then)j Fv(typ)n(e)e FC(is)i Fr(POINTS)p FC(;)d(if)i Fv(mo)n(de)g FC(is)h Fr(LINE)p FC(,)d(then)i Fv(typ)n(e)332 1990 y FC(is)i Fr(LINE)p 469 1990 V 14 w(STRIP)p FC(.)e(The)h(one)g (requiremen)o(t)h(is)f(that)f(if)i(either)g Fy(i)c FC(=)h(0)h(or)h Fy(i)d FC(=)h Fy(n)p FC(,)i(then)g(the)332 2047 y(v)m(alue)i(computed)e (from)g Fy(i)9 b FB(\003)h FC(\001)p Fy(u)889 2030 y FG(0)911 2047 y FC(+)g Fy(u)982 2030 y FG(0)982 2058 y Fq(1)1017 2047 y FC(is)16 b(precisely)h Fy(u)1275 2030 y FG(0)1275 2058 y Fq(1)1310 2047 y FC(or)d Fy(u)1391 2030 y FG(0)1391 2058 y Fq(2)1411 2047 y FC(,)h(resp)q(ectiv)o(ely)l(.) 403 2106 y(The)g(corresp)q(onding)h(commands)f(for)g(t)o(w)o (o-dimensional)h(maps)f(are)446 2212 y Fw(void)48 b Fz(Ev)m(alMesh2)p FC(\()g Fw(enum)23 b Fv(mo)n(de)p Fw(,)k(int)d Fy(p)1295 2219 y Fq(1)1314 2212 y Fw(,)j(int)c Fy(p)1483 2219 y Fq(2)1503 2212 y Fw(,)j(int)e Fy(q)1669 2219 y Fq(1)1689 2212 y Fw(,)514 2269 y(int)15 b Fy(q)621 2276 y Fq(2)656 2269 y FC(\))g Fw(;)332 2375 y Fv(mo)n(de)c FC(m)o(ust)f(b)q(e)h Fr(FILL)p FC(,)e Fr(LINE)p FC(,)h(or)g Fr(POINT)p FC(.)f(When)i Fv(mo)n(de)g FC(is)g Fr(FILL)p FC(,)e(then)i(these)g(commands)332 2432 y(are)18 b(equiv)m(alen)o(t)i(to)d(the)i(follo)o(wing,)g(with)f (\001)p Fy(u)1148 2415 y FG(0)1177 2432 y FC(=)g(\()p Fy(u)1274 2415 y FG(0)1274 2443 y Fq(2)1306 2432 y FB(\000)12 b Fy(u)1379 2415 y FG(0)1379 2443 y Fq(1)1399 2432 y FC(\))p Fy(=n)18 b FC(and)g(\001)p Fy(v)1638 2415 y FG(0)1667 2432 y FC(=)g(\()p Fy(v)1762 2415 y FG(0)1760 2443 y Fq(2)1791 2432 y FB(\000)332 2488 y Fy(v)356 2472 y FG(0)354 2500 y Fq(1)374 2488 y FC(\))p Fy(=m)p FC(:)p eop %%Page: 133 142 133 141 bop 120 137 a Fx(5.1.)34 b(EV)-5 b(ALUA)l(TORS)1009 b FC(133)317 286 y Fz(for)15 b Fy(i)d FC(=)h Fy(q)492 293 y Fq(1)528 286 y FC(to)h Fy(q)603 293 y Fq(2)633 286 y FB(\000)d FC(1)k(step)g(1)p Fy(:)p FC(0)378 343 y Fz(Begin)p Fw(\(QUAD)p 631 343 15 2 v 17 w(STRIP\);)439 399 y Fz(for)f Fy(j)h FC(=)e Fy(p)622 406 y Fq(1)657 399 y FC(to)i Fy(p)736 406 y Fq(2)770 399 y FC(step)h(1)p Fy(:)p FC(0)499 456 y Fz(Ev)m(alCo)q(ord2)p Fw(\()p Fy(j)27 b Fw(*)d FC(\001)p Fy(u)947 439 y FG(0)982 456 y Fw(+)g Fy(u)1056 439 y FG(0)1056 467 y Fq(1)1100 456 y Fw(,)g Fy(i)f Fw(*)h FC(\001)p Fy(v)1297 439 y FG(0)1332 456 y Fw(+)g Fy(v)1404 439 y FG(0)1402 467 y Fq(1)1421 456 y Fw(\);)499 512 y Fz(Ev)m(alCo)q(ord2)p Fw(\()p Fy(j)j Fw(*)d FC(\001)p Fy(u)947 496 y FG(0)982 512 y Fw(+)g Fy(u)1056 496 y FG(0)1056 524 y Fq(1)1100 512 y Fw(,)g FC(\()p Fy(i)9 b FC(+)h(1\))24 b Fw(*)f FC(\001)p Fy(v)1410 496 y FG(0)1445 512 y Fw(+)h Fy(v)1517 496 y FG(0)1515 524 y Fq(1)1535 512 y Fw(\);)378 569 y Fz(End)p Fw(\(\);)120 666 y FC(If)16 b Fv(mo)n(de)f FC(is)h Fr(LINE)p FC(,)e(then)h(a)g(call) i(to)d Fz(Ev)m(alMesh2)i FC(is)f(equiv)m(alen)o(t)i(to)317 764 y Fz(for)e Fy(i)d FC(=)h Fy(q)492 771 y Fq(1)528 764 y FC(to)h Fy(q)603 771 y Fq(2)638 764 y FC(step)h(1)p Fy(:)p FC(0)378 820 y Fz(Begin)p Fw(\(LINE)p 631 820 V 17 w(STRIP\);)378 877 y Fz(for)g Fy(j)g FC(=)e Fy(p)562 884 y Fq(1)596 877 y FC(to)i Fy(p)675 884 y Fq(2)710 877 y FC(step)g(1)p Fy(:)p FC(0)439 933 y Fz(Ev)m(alCo)q(ord2)p Fw(\()p Fy(j)27 b Fw(*)c FC(\001)p Fy(u)886 917 y FG(0)922 933 y Fw(+)h Fy(u)996 917 y FG(0)996 945 y Fq(1)1039 933 y Fw(,)g Fy(i)f Fw(*)h FC(\001)p Fy(v)1236 917 y FG(0)1271 933 y Fw(+)g Fy(v)1343 917 y FG(0)1341 945 y Fq(1)1361 933 y Fw(\);)378 990 y Fz(End)p Fw(\(\);)p FC(;)317 1046 y Fz(for)15 b Fy(i)d FC(=)h Fy(p)495 1053 y Fq(1)530 1046 y FC(to)i Fy(p)609 1053 y Fq(2)643 1046 y FC(step)h(1)p Fy(:)p FC(0)378 1103 y Fz(Begin)p Fw(\(LINE)p 631 1103 V 17 w(STRIP\);)378 1159 y Fz(for)f Fy(j)g FC(=)e Fy(q)559 1166 y Fq(1)594 1159 y FC(to)h Fy(q)669 1166 y Fq(2)705 1159 y FC(step)h(1)p Fy(:)p FC(0)439 1216 y Fz(Ev)m(alCo)q(ord2)p Fw(\()p Fy(i)24 b Fw(*)g FC(\001)p Fy(u)881 1199 y FG(0)916 1216 y Fw(+)g Fy(u)990 1199 y FG(0)990 1227 y Fq(1)1034 1216 y Fw(,)f Fy(j)j Fw(*)e FC(\001)p Fy(v)1236 1199 y FG(0)1271 1216 y Fw(+)g Fy(v)1343 1199 y FG(0)1341 1227 y Fq(1)1361 1216 y Fw(\);)378 1272 y Fz(End)p Fw(\(\);)120 1369 y FC(If)16 b Fv(mo)n(de)f FC(is)h Fr(POINT)p FC(,)e(then)h(a)g(call)h(to)f Fz(Ev)m(alMesh2)g FC(is)h(equiv)m(alen)o(t)h(to)317 1467 y Fz(Begin)p Fw(\(POINTS\);)378 1524 y Fz(for)e Fy(i)d FC(=)h Fy(q)553 1531 y Fq(1)588 1524 y FC(to)i Fy(q)664 1531 y Fq(2)699 1524 y FC(step)g(1)p Fy(:)p FC(0)439 1580 y Fz(for)f Fy(j)h FC(=)e Fy(p)622 1587 y Fq(1)657 1580 y FC(to)i Fy(p)736 1587 y Fq(2)770 1580 y FC(step)h(1)p Fy(:)p FC(0)499 1637 y Fz(Ev)m(alCo)q(ord2)p Fw(\()p Fy(j)27 b Fw(*)d FC(\001)p Fy(u)947 1620 y FG(0)982 1637 y Fw(+)g Fy(u)1056 1620 y FG(0)1056 1648 y Fq(1)1100 1637 y Fw(,)g Fy(i)f Fw(*)h FC(\001)p Fy(v)1297 1620 y FG(0)1332 1637 y Fw(+)g Fy(v)1404 1620 y FG(0)1402 1648 y Fq(1)1421 1637 y Fw(\);)317 1693 y Fz(End)p Fw(\(\);)120 1790 y FC(Again,)18 b(in)h(all)f(three)g(cases,)f(there)h(is)g(the)f (requiremen)o(t)h(that)f(0)11 b FB(\003)h FC(\001)p Fy(u)1373 1774 y FG(0)1396 1790 y FC(+)g Fy(u)1469 1774 y FG(0)1469 1802 y Fq(1)1505 1790 y FC(=)k Fy(u)1582 1774 y FG(0)1582 1802 y Fq(1)1602 1790 y FC(,)120 1847 y Fy(n)11 b FB(\003)f FC(\001)p Fy(u)255 1830 y FG(0)276 1847 y FC(+)h Fy(u)348 1830 y FG(0)348 1858 y Fq(1)380 1847 y FC(=)i Fy(u)454 1830 y FG(0)454 1858 y Fq(2)474 1847 y FC(,)i(0)9 b FB(\003)h FC(\001)p Fy(v)629 1830 y FG(0)651 1847 y FC(+)g Fy(v)720 1830 y FG(0)718 1858 y Fq(1)750 1847 y FC(=)j Fy(v)822 1830 y FG(0)820 1858 y Fq(1)840 1847 y FC(,)i(and)g Fy(m)10 b FB(\003)g FC(\001)p Fy(v)1101 1830 y FG(0)1122 1847 y FC(+)h Fy(v)1192 1830 y FG(0)1190 1858 y Fq(1)1222 1847 y FC(=)i Fy(v)1294 1830 y FG(0)1292 1858 y Fq(2)1312 1847 y FC(.)191 1904 y(An)i(ev)m(aluation)i(of)e(a)g(single)h(p)q(oin)o (t)g(on)f(the)g(grid)h(ma)o(y)e(also)h(b)q(e)h(carried)g(out:)234 2001 y Fw(void)30 b Fz(Ev)m(alP)o(oin)o(t1)p FC(\()h Fw(int)14 b Fy(p)h FC(\))g Fw(;)120 2099 y FC(Calling)i(it)e(is)h (equiv)m(alen)o(t)h(to)e(the)g(command)317 2197 y Fz(Ev)m(alCo)q(ord1)p Fw(\()p Fy(p)h FC(*)f(\001)p Fy(u)748 2180 y FG(0)775 2197 y FC(+)g Fy(u)851 2180 y FG(0)851 2208 y Fq(1)871 2197 y Fw(\);)120 2294 y FC(with)h(\001)p Fy(u)288 2277 y FG(0)315 2294 y FC(and)f Fy(u)429 2277 y FG(0)429 2305 y Fq(1)464 2294 y FC(de\014ned)h(as)f(ab)q(o)o(v)o(e.)234 2391 y Fw(void)30 b Fz(Ev)m(alP)o(oin)o(t2)p FC(\()h Fw(int)14 b Fy(p)p Fw(,)h(int)g Fy(q)i FC(\))e Fw(;)120 2488 y FC(is)h(equiv)m(alen)o(t)h(to)e(the)g(command)p eop %%Page: 134 143 134 142 bop 332 137 a FC(134)622 b Fx(CHAPTER)15 b(5.)35 b(SPECIAL)16 b(FUNCTIONS)529 286 y Fz(Ev)m(alCo)q(ord2)p Fw(\()p Fy(p)25 b Fw(*)f FC(\001)p Fy(u)979 270 y FG(0)1014 286 y Fw(+)g Fy(u)1088 270 y FG(0)1088 298 y Fq(1)1131 286 y Fw(,)g Fy(q)i Fw(*)d FC(\001)p Fy(v)1334 270 y FG(0)1370 286 y Fw(+)g Fy(v)1441 270 y FG(0)1439 298 y Fq(1)1459 286 y Fw(\);)403 441 y FC(The)15 b(state)f(required)i(for)e (ev)m(aluators)h(p)q(oten)o(tially)h(consists)f(of)f(9)h(1-dimensional) 332 498 y(map)j(sp)q(eci\014cations)i(and)f(9)f(2-dimensional)i(map)e (sp)q(eci\014cations,)j(as)c(w)o(ell)j(as)e(cor-)332 554 y(resp)q(onding)h(\015ags)e(for)h(eac)o(h)f(sp)q(eci\014cation)j (indicating)g(whic)o(h)e(are)g(enabled.)29 b(Eac)o(h)332 611 y(map)18 b(sp)q(eci\014cation)h(consists)f(of)g(one)f(or)h(t)o(w)o (o)e(orders,)i(an)g(appropriately)g(sized)h(ar-)332 667 y(ra)o(y)d(of)g(con)o(trol)g(p)q(oin)o(ts,)h(and)g(a)f(set)h(of)f(t)o (w)o(o)f(v)m(alues)j(\(for)d(a)h(1-dimensional)j(map\))d(or)332 724 y(four)j(v)m(alues)h(\(for)e(a)h(2-dimensional)i(map\))d(to)h (describ)q(e)h(the)g(domain.)31 b(The)20 b(max-)332 780 y(im)o(um)f(p)q(ossible)i(order,)e(for)f(either)i Fy(u)f FC(or)f Fy(v)r FC(,)h(is)g(implemen)o(tation)h(dep)q(enden)o(t)h(\(one) 332 837 y(maxim)o(um)d(applies)h(to)e(b)q(oth)h Fy(u)g FC(and)g Fy(v)r FC(\),)g(but)g(m)o(ust)f(b)q(e)h(at)g(least)g(8.)27 b(Eac)o(h)18 b(con)o(trol)332 893 y(p)q(oin)o(t)f(consists)g(of)f(b)q (et)o(w)o(een)g(one)h(and)g(four)f(\015oating-p)q(oin)o(t)h(v)m(alues)g (\(dep)q(ending)i(on)332 949 y(the)f(t)o(yp)q(e)h(of)e(the)i(map\).)28 b(Initially)l(,)21 b(all)e(maps)f(ha)o(v)o(e)g(order)g(1)g(\(making)g (them)g(con-)332 1006 y(stan)o(t)13 b(maps\).)19 b(All)c(v)o(ertex)f (co)q(ordinate)g(maps)g(pro)q(duce)h(the)f(co)q(ordinates)h(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)f FC(1\))332 1062 y(\(or)18 b(the)i(appropriate)f(subset\);)i(all)f(normal)f(co)q (ordinate)h(maps)f(pro)q(duce)h(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(1\);)332 1119 y(R)o(GBA)16 b(maps)g(pro)q(duce)h(\(1)p Fy(;)8 b FC(1)p Fy(;)g FC(1)p Fy(;)g FC(1\))o(;)13 b(color)k(index)g (maps)f(pro)q(duce)h(1.0;)e(texture)h(co-)332 1175 y(ordinate)e(maps)g (pro)q(duce)g(\(0)p Fy(;)8 b FC(0)p Fy(;)g FC(0)p Fy(;)g FC(1\))o(;)j(In)k(the)e(initial)j(state,)d(all)i(maps)e(are)h (disabled.)332 1232 y(A)h(\015ag)g(indicates)i(whether)f(or)e(not)h (automatic)g(normal)g(generation)h(is)f(enabled)i(for)332 1288 y(2-dimensional)d(maps.)19 b(In)12 b(the)h(initial)h(state,)d (automatic)h(normal)g(generation)g(is)h(dis-)332 1345 y(abled.)21 b(Also)14 b(required)i(are)e(t)o(w)o(o)f(\015oating-p)q (oin)o(t)i(v)m(alues)g(and)g(an)f(in)o(teger)g(n)o(um)o(b)q(er)h(of)332 1401 y(grid)e(divisions)h(for)e(the)h(1-dimensional)h(grid)f(sp)q (eci\014cation)h(and)f(four)f(\015oating-p)q(oin)o(t)332 1458 y(v)m(alues)h(and)g(t)o(w)o(o)d(in)o(teger)j(grid)f(divisions)i (for)d(the)h(2-dimensional)i(grid)f(sp)q(eci\014cation.)332 1514 y(In)f(the)g(initial)i(state,)d(the)g(b)q(ounds)i(of)e(the)h (domain)g(in)o(terv)m(al)g(for)f(1-D)g(is)h(0)g(and)f(1)p Fy(:)p FC(0,)g(re-)332 1570 y(sp)q(ectiv)o(ely;)j(for)d(2-D,)f(they)i (are)f(\(0)p Fy(;)d FC(0\))h(and)j(\(1)p Fy(:)p FC(0)p Fy(;)c FC(1)p Fy(:)p FC(0\))o(,)h(resp)q(ectiv)o(ely)l(.)21 b(The)11 b(n)o(um)o(b)q(er)h(of)332 1627 y(grid)i(divisions)h(is)g(1)e (for)g(1-D)g(and)g(1)h(in)g(b)q(oth)g(directions)h(for)d(2-D.)h(If)h (an)o(y)f(ev)m(aluation)332 1683 y(command)i(is)h(issued)g(when)g(no)f (v)o(ertex)g(map)g(is)g(enabled,)i(nothing)e(happ)q(ens.)332 1833 y Fs(5.2)66 b(Selection)332 1937 y FC(Selection)16 b(is)e(used)g(b)o(y)g(a)g(programmer)e(to)i(determine)g(whic)o(h)h (primitiv)o(es)g(are)f(dra)o(wn)332 1993 y(in)o(to)i(some)g(region)g (of)g(a)f(windo)o(w.)23 b(The)16 b(region)h(is)f(de\014ned)h(b)o(y)f (the)g(curren)o(t)g(mo)q(del-)332 2050 y(view)g(and)f(p)q(ersp)q(ectiv) o(e)i(matrices.)403 2107 y(Selection)23 b(w)o(orks)d(b)o(y)h(returning) h(an)f(arra)o(y)f(of)g(in)o(teger-v)m(alued)k Fv(names)p FC(.)37 b(This)332 2164 y(arra)o(y)15 b(represen)o(ts)h(the)g(curren)o (t)g(con)o(ten)o(ts)f(of)h(the)g Fv(name)h(stack)p FC(.)22 b(This)16 b(stac)o(k)g(is)g(con-)332 2220 y(trolled)g(with)g(the)f (commands)446 2319 y Fw(void)29 b Fz(InitNames)p FC(\()i Fw(void)38 b FC(\))15 b Fw(;)446 2375 y(void)29 b Fz(P)o(opName)p FC(\()h Fw(void)38 b FC(\))15 b Fw(;)446 2432 y(void)29 b Fz(PushName)p FC(\()h Fw(uint)14 b Fv(name)h FC(\))g Fw(;)446 2488 y(void)29 b Fz(LoadName)p FC(\()i Fw(uint)15 b Fv(name)g FC(\))g Fw(;)p eop %%Page: 135 144 135 143 bop 120 137 a Fx(5.2.)34 b(SELECTION)1055 b FC(135)120 286 y Fz(InitNames)20 b FC(empties)f(\(clears\))g(the)h(name)f(stac)o (k.)31 b Fz(P)o(opName)18 b FC(p)q(ops)h(one)h(name)120 343 y(o\013)i(the)h(top)f(of)g(the)h(name)g(stac)o(k.)41 b Fz(PushName)22 b FC(causes)h Fv(name)f FC(to)g(b)q(e)i(pushed)120 399 y(on)o(to)d(the)h(name)g(stac)o(k.)39 b Fz(LoadName)23 b FC(replaces)f(the)g(v)m(alue)h(on)f(the)g(top)f(of)h(the)120 456 y(stac)o(k)c(with)h Fv(name)p FC(.)30 b(Loading)20 b(a)e(name)h(on)o(to)f(an)g(empt)o(y)h(stac)o(k)e(generates)i(the)g (er-)120 512 y(ror)j Fr(INVALID)p 358 512 14 2 v 14 w(OPERATION)p FC(.)e(P)o(opping)j(a)f(name)h(o\013)e(of)h(an)g(empt)o(y)g(stac)o(k)g (generates)120 569 y Fr(STACK)p 233 569 V 15 w(UNDERFLOW)p FC(;)10 b(pushing)j(a)e(name)h(on)o(to)f(a)g(full)j(stac)o(k)d (generates)g Fr(STACK)p 1416 569 V 15 w(OVERFLOW)p FC(.)120 625 y(The)k(maxim)o(um)f(allo)o(w)o(able)i(depth)f(of)f(the)g(name)h (stac)o(k)e(is)i(implemen)o(tation)h(dep)q(en-)120 682 y(den)o(t)g(but)f(m)o(ust)g(b)q(e)g(at)g(least)g(64.)191 739 y(In)h(selection)h(mo)q(de,)e(no)g(fragmen)o(ts)f(are)i(rendered)g (in)o(to)f(the)h(framebu\013er.)j(The)120 796 y(GL)d(is)f(placed)i(in)f (selection)g(mo)q(de)g(with)234 893 y Fw(int)30 b Fz(RenderMo)q(de)p FC(\()g Fw(enum)14 b Fv(mo)n(de)i FC(\))f Fw(;)120 991 y Fv(mo)n(de)21 b FC(is)g(a)f(sym)o(b)q(olic)i(constan)o(t:)29 b(one)21 b(of)f Fr(RENDER)p FC(,)f Fr(SELECT)p FC(,)g(or)h Fr(FEEDBACK)p FC(.)e Fr(RENDER)120 1048 y FC(is)i(the)f(default,)h (corresp)q(onding)g(to)f(rendering)h(as)f(describ)q(ed)i(un)o(til)f(no) o(w.)31 b Fr(SELECT)120 1104 y FC(sp)q(eci\014es)21 b(selection)g(mo)q (de,)f(and)g Fr(FEEDBACK)d FC(sp)q(eci\014es)k(feedbac)o(k)f(mo)q(de)f (\(describ)q(ed)120 1160 y(b)q(elo)o(w\).)h(Use)13 b(of)f(an)o(y)h(of)f (the)h(name)g(stac)o(k)f(manipulation)j(commands)d(while)j(the)e(GL)120 1217 y(is)j(not)f(in)h(selection)h(mo)q(de)e(has)g(no)g(e\013ect.)191 1274 y(Selection)i(is)f(con)o(trolled)g(using)234 1372 y Fw(void)30 b Fz(SelectBu\013er)p FC(\()g Fw(sizei)14 b Fv(n)p Fw(,)h(uint)g Fv(*bu\013er)g FC(\))g Fw(;)120 1470 y Fv(bu\013er)23 b FC(is)g(a)e(p)q(oin)o(ter)i(to)f(an)g(arra)o(y) f(of)h(unsigned)h(in)o(tegers)g(\(called)g(the)f(selection)120 1526 y(arra)o(y\))13 b(to)g(b)q(e)h(p)q(oten)o(tially)h(\014lled)h (with)e(names,)g(and)g Fv(n)f FC(is)h(an)g(in)o(teger)g(indicating)i (the)120 1583 y(maxim)o(um)c(n)o(um)o(b)q(er)h(of)e(v)m(alues)i(that)f (can)g(b)q(e)g(stored)g(in)h(that)e(arra)o(y)l(.)18 b(Placing)13 b(the)f(GL)120 1639 y(in)j(selection)g(mo)q(de)e(b)q(efore)h Fz(SelectBu\013er)g FC(has)f(b)q(een)i(called)g(results)f(in)g(an)f (error)g(of)120 1696 y Fr(INVALID)p 277 1696 V 15 w(OPERATION)g FC(as)i(do)q(es)g(calling)i Fz(SelectBu\013er)f FC(while)g(in)g (selection)h(mo)q(de.)191 1753 y(In)e(selection)g(mo)q(de,)f(if)h(a)f (p)q(oin)o(t,)g(line,)i(p)q(olygon,)e(or)g(the)g(v)m(alid)h(co)q (ordinates)g(pro-)120 1810 y(duced)j(b)o(y)f(a)g Fz(RasterP)o(os)f FC(command)h(in)o(tersects)g(the)g(clip)i(v)o(olume)e(\(section)g (2.11\))120 1866 y(then)e(this)h(primitiv)o(e)g(\(or)e Fz(RasterP)o(os)f FC(command\))i(causes)g(a)f(selection)i Fv(hit)p FC(.)k(In)c(the)120 1923 y(case)h(of)g(p)q(olygons,)g(no)f (hit)i(o)q(ccurs)f(if)g(the)g(p)q(olygon)g(w)o(ould)g(ha)o(v)o(e)g(b)q (een)h(culled,)h(but)120 1979 y(selection)h(is)f(based)g(on)g(the)f(p)q (olygon)h(itself,)h(regardless)f(of)f(the)g(setting)h(of)f Fz(P)o(oly-)120 2036 y(gonMo)q(de)p FC(.)23 b(When)16 b(in)g(selection)i(mo)q(de,)e(whenev)o(er)g(a)f(name)h(stac)o(k)f (manipulation)120 2092 y(command)j(is)f(executed)h(or)f Fz(RenderMo)q(de)g FC(is)h(called)h(and)e(there)h(has)f(b)q(een)h(a)f (hit)120 2148 y(since)f(the)e(last)g(time)h(the)f(stac)o(k)f(w)o(as)h (manipulated)h(or)f Fz(RenderMo)q(de)g FC(w)o(as)g(called,)120 2205 y(then)i(a)f Fv(hit)h(r)n(e)n(c)n(or)n(d)f FC(is)h(written)f(in)o (to)g(the)g(selection)i(arra)o(y)l(.)191 2262 y(A)k(hit)h(record)f (consists)h(of)f(the)g(follo)o(wing)h(items)g(in)g(order:)32 b(a)21 b(non-negativ)o(e)120 2319 y(in)o(teger)15 b(giving)h(the)f(n)o (um)o(b)q(er)h(of)e(elemen)o(ts)i(on)f(the)g(name)f(stac)o(k)h(at)f (the)h(time)g(of)g(the)120 2375 y(hit,)i(a)f(minim)o(um)h(depth)g(v)m (alue,)g(a)f(maxim)o(um)g(depth)h(v)m(alue,)h(and)e(the)g(name)h(stac)o (k)120 2432 y(with)22 b(the)f(b)q(ottommost)f(elemen)o(t)i(\014rst.)37 b(The)21 b(minim)o(um)i(and)e(maxim)o(um)g(depth)120 2488 y(v)m(alues)14 b(are)d(the)h(minim)o(um)h(and)g(maxim)o(um)e(tak)o (en)h(o)o(v)o(er)f(all)i(the)f(windo)o(w)g(co)q(ordinate)p eop %%Page: 136 145 136 144 bop 332 137 a FC(136)622 b Fx(CHAPTER)15 b(5.)35 b(SPECIAL)16 b(FUNCTIONS)332 286 y Fy(z)i FC(v)m(alues)g(of)d(eac)o(h)i (\(p)q(ost-clipping\))h(v)o(ertex)d(of)h(eac)o(h)g(primitiv)o(e)i(that) d(in)o(tersects)h(the)332 343 y(clipping)21 b(v)o(olume)e(since)h(the)f (last)g(hit)g(record)g(w)o(as)f(written.)30 b(The)19 b(minim)o(um)h(and)332 399 y(maxim)o(um)i(\(eac)o(h)g(of)f(whic)o(h)i (lies)g(in)g(the)f(range)g([0)p Fy(;)8 b FC(1]\))19 b(are)j(eac)o(h)g (m)o(ultiplied)j(b)o(y)332 456 y(2)355 439 y Fq(32)405 456 y FB(\000)13 b FC(1)19 b(and)g(rounded)h(to)f(the)g(nearest)g (unsigned)i(in)o(teger)e(to)g(obtain)g(the)g(v)m(alues)332 512 y(that)14 b(are)h(placed)h(in)g(the)f(hit)h(record.)k(No)15 b(depth)g(o\013set)f(arithmetic)i(\(section)f(3.5.5\))332 569 y(is)h(p)q(erformed)f(on)g(these)h(v)m(alues.)403 629 y(Hit)j(records)g(are)f(placed)j(in)e(the)g(selection)i(arra)o(y)c (b)o(y)i(main)o(taining)h(a)f(p)q(oin)o(ter)332 685 y(in)o(to)14 b(that)e(arra)o(y)l(.)19 b(When)14 b(selection)h(mo)q(de)e(is)i(en)o (tered,)e(the)h(p)q(oin)o(ter)g(is)g(initialized)j(to)332 742 y(the)f(b)q(eginning)j(of)c(the)i(arra)o(y)l(.)k(Eac)o(h)16 b(time)h(a)e(hit)i(record)f(is)h(copied,)g(the)f(p)q(oin)o(ter)h(is)332 798 y(up)q(dated)e(to)f(p)q(oin)o(t)h(at)f(the)g(arra)o(y)g(elemen)o(t) h(after)e(the)i(one)f(in)o(to)h(whic)o(h)g(the)g(topmost)332 855 y(elemen)o(t)20 b(of)f(the)g(name)h(stac)o(k)e(w)o(as)h(stored.)31 b(If)20 b(cop)o(ying)g(the)f(hit)h(record)f(in)o(to)g(the)332 911 y(selection)e(arra)o(y)c(w)o(ould)j(cause)f(the)h(total)e(n)o(um)o (b)q(er)i(of)e(v)m(alues)i(to)f(exceed)h Fv(n)p FC(,)e(then)i(as)332 967 y(m)o(uc)o(h)f(of)f(the)g(record)h(as)f(\014ts)g(in)h(the)g(arra)o (y)e(is)i(written)g(and)f(an)h(o)o(v)o(er\015o)o(w)e(\015ag)h(is)h (set.)403 1027 y(Selection)23 b(mo)q(de)e(is)h(exited)g(b)o(y)f (calling)i Fz(RenderMo)q(de)e FC(with)h(an)f(argumen)o(t)332 1084 y(v)m(alue)j(other)f(than)g Fr(SELECT)p FC(.)e(Whenev)o(er)j Fz(RenderMo)q(de)f FC(is)g(called)i(in)f(selection)332 1140 y(mo)q(de,)19 b(it)f(returns)g(the)g(n)o(um)o(b)q(er)g(of)f(hit)i (records)e(copied)j(in)o(to)d(the)h(selection)i(arra)o(y)332 1197 y(and)d(resets)g(the)g Fz(SelectBu\013er)g FC(p)q(oin)o(ter)h(to)e (its)h(last)g(sp)q(eci\014ed)i(v)m(alue.)27 b(V)l(alues)18 b(are)332 1253 y(not)f(guaran)o(teed)h(to)f(b)q(e)h(written)g(in)o(to)f (the)h(selection)h(arra)o(y)e(un)o(til)i Fz(RenderMo)q(de)332 1310 y FC(is)g(called.)31 b(If)18 b(the)g(selection)i(arra)o(y)d(o)o(v) o(er\015o)o(w)g(\015ag)h(w)o(as)g(set,)g(then)h Fz(RenderMo)q(de)332 1366 y FC(returns)d FB(\000)p FC(1)f(and)h(clears)h(the)e(o)o(v)o (er\015o)o(w)g(\015ag.)21 b(The)16 b(name)g(stac)o(k)f(is)h(cleared)g (and)g(the)332 1423 y(stac)o(k)f(p)q(oin)o(ter)g(reset)g(whenev)o(er)h Fz(RenderMo)q(de)f FC(is)h(called.)403 1483 y(The)i(state)e(required)j (for)e(selection)i(consists)f(of)g(the)f(address)h(of)f(the)h (selection)332 1539 y(arra)o(y)f(and)h(its)h(maxim)o(um)f(size,)h(the)f (name)g(stac)o(k)g(and)g(its)g(asso)q(ciated)h(p)q(oin)o(ter,)g(a)332 1595 y(minim)o(um)f(and)e(maxim)o(um)h(depth)g(v)m(alue,)h(and)e(sev)o (eral)h(\015ags.)24 b(One)17 b(\015ag)f(indicates)332 1652 y(the)c(curren)o(t)f Fz(RenderMo)q(de)g FC(v)m(alue.)20 b(In)12 b(the)g(initial)i(state,)d(the)g(GL)h(is)g(in)g(the)g Fr(RENDER)332 1708 y FC(mo)q(de.)29 b(Another)18 b(\015ag)f(is)i(used)f (to)g(indicate)h(whether)g(or)e(not)h(a)f(hit)i(has)f(o)q(ccurred)332 1765 y(since)k(the)e(last)g(name)g(stac)o(k)g(manipulation.)36 b(This)21 b(\015ag)f(is)h(reset)f(up)q(on)h(en)o(tering)332 1821 y(selection)d(mo)q(de)f(and)f(whenev)o(er)h(a)f(name)h(stac)o(k)e (manipulation)j(tak)o(es)e(place.)25 b(One)332 1878 y(\014nal)20 b(\015ag)g(is)g(required)g(to)f(indicate)i(whether)f(the)g(maxim)o(um)f (n)o(um)o(b)q(er)h(of)f(copied)332 1934 y(names)c(w)o(ould)g(ha)o(v)o (e)g(b)q(een)h(exceeded.)21 b(This)16 b(\015ag)f(is)g(reset)g(up)q(on)h (en)o(tering)f(selection)332 1991 y(mo)q(de.)27 b(This)18 b(\015ag,)g(the)g(address)f(of)g(the)h(selection)h(arra)o(y)l(,)e(and)g (its)h(maxim)o(um)g(size)332 2047 y(are)d(GL)g(clien)o(t)i(state.)332 2210 y Fs(5.3)66 b(F)-6 b(eedbac)n(k)332 2319 y FC(F)l(eedbac)o(k,)22 b(lik)o(e)g(selection,)h(is)e(a)f(GL)g(mo)q(de.)37 b(The)21 b(mo)q(de)f(is)h(selected)h(b)o(y)f(calling)332 2375 y Fz(RenderMo)q(de)16 b FC(with)h Fr(FEEDBACK)p FC(.)d(When)j(the)f(GL) g(is)h(in)g(feedbac)o(k)g(mo)q(de,)f(no)g(frag-)332 2432 y(men)o(ts)d(are)g(written)h(to)e(the)i(framebu\013er.)19 b(Instead,)13 b(information)h(ab)q(out)f(primitiv)o(es)332 2488 y(that)g(w)o(ould)g(ha)o(v)o(e)g(b)q(een)i(rasterized)e(is)h(fed)f (bac)o(k)h(to)e(the)i(application)g(using)g(the)g(GL.)p eop %%Page: 137 146 137 145 bop 120 137 a Fx(5.3.)34 b(FEEDBA)o(CK)1061 b FC(137)191 286 y(F)l(eedbac)o(k)16 b(is)f(con)o(trolled)h(using)234 394 y Fw(void)24 b Fz(F)l(eedbac)o(kBu\013er)p FC(\()f Fw(sizei)12 b Fv(n)p Fw(,)h(enum)f Fv(typ)n(e)p Fw(,)g(float)g Fv(*bu\013er)h FC(\))f Fw(;)120 502 y Fv(bu\013er)h FC(is)f(a)g(p)q (oin)o(ter)g(to)f(an)h(arra)o(y)f(of)g(\015oating-p)q(oin)o(t)i(v)m (alues)g(in)o(to)f(whic)o(h)g(feedbac)o(k)h(in-)120 558 y(formation)e(will)i(b)q(e)f(placed,)g(and)g Fv(n)f FC(is)g(a)g(n)o(um) o(b)q(er)h(indicating)h(the)e(maxim)o(um)g(n)o(um)o(b)q(er)120 615 y(of)16 b(v)m(alues)g(that)f(can)h(b)q(e)h(written)e(to)g(that)g (arra)o(y)l(.)20 b Fv(typ)n(e)c FC(is)g(a)g(sym)o(b)q(olic)g(constan)o (t)f(de-)120 671 y(scribing)g(the)e(information)g(to)f(b)q(e)h(fed)g (bac)o(k)g(for)f(eac)o(h)h(v)o(ertex)g(\(see)g(Figure)g(5.2\).)k(The) 120 728 y(error)d Fr(INVALID)p 388 728 14 2 v 14 w(OPERATION)f FC(results)h(if)h(the)f(GL)h(is)g(placed)g(in)g(feedbac)o(k)g(mo)q(de)f (b)q(efore)120 784 y(a)i(call)g(to)f Fz(F)l(eedbac)o(kBu\013er)f FC(has)h(b)q(een)i(made,)e(or)g(if)h(a)f(call)h(to)f Fz(F)l(eedbac)o(kBu\013er)120 841 y FC(is)h(made)f(while)i(in)f (feedbac)o(k)g(mo)q(de.)191 900 y(While)23 b(in)f(feedbac)o(k)f(mo)q (de,)i(eac)o(h)e(primitiv)o(e)i(that)d(w)o(ould)i(b)q(e)g(rasterized)g (\(or)120 957 y(bitmap)h(or)e(call)i(to)e Fz(Dra)o(wPixels)g FC(or)h Fz(Cop)o(yPixels)p FC(,)g(if)g(the)g(raster)f(p)q(osition)i(is) 120 1013 y(v)m(alid\))d(generates)e(a)g(blo)q(c)o(k)h(of)f(v)m(alues)i (that)d(get)h(copied)i(in)o(to)e(the)g(feedbac)o(k)h(arra)o(y)l(.)120 1070 y(If)d(doing)h(so)e(w)o(ould)h(cause)g(the)g(n)o(um)o(b)q(er)g(of) f(en)o(tries)i(to)e(exceed)h(the)g(maxim)o(um,)g(the)120 1126 y(blo)q(c)o(k)h(is)f(partially)h(written)f(so)g(as)f(to)h(\014ll)h (the)f(arra)o(y)f(\(if)h(there)g(is)g(an)o(y)g(ro)q(om)f(left)h(at)120 1183 y(all\).)22 b(The)15 b(\014rst)g(blo)q(c)o(k)i(of)e(v)m(alues)h (generated)g(after)e(the)i(GL)f(en)o(ters)h(feedbac)o(k)f(mo)q(de)120 1239 y(is)22 b(placed)g(at)e(the)h(b)q(eginning)h(of)f(the)g(feedbac)o (k)g(arra)o(y)l(,)g(with)g(subsequen)o(t)g(blo)q(c)o(ks)120 1296 y(follo)o(wing.)g(Eac)o(h)15 b(blo)q(c)o(k)h(b)q(egins)h(with)e(a) g(co)q(de)h(indicating)h(the)f(primitiv)o(e)g(t)o(yp)q(e,)f(fol-)120 1352 y(lo)o(w)o(ed)j(b)o(y)f(v)m(alues)i(that)d(describ)q(e)j(the)f (primitiv)o(e's)g(v)o(ertices)g(and)f(asso)q(ciated)h(data.)120 1409 y(En)o(tries)f(are)f(also)h(written)f(for)g(bitmaps)h(and)g(pixel) h(rectangles.)24 b(F)l(eedbac)o(k)17 b(o)q(ccurs)120 1465 y(after)i(p)q(olygon)g(culling)i(\(section)e(3.5.1\))e(and)i Fz(P)o(olygonMo)q(de)g FC(in)o(terpretation)g(of)120 1521 y(p)q(olygons)f(\(section)g(3.5.4\))d(has)i(tak)o(en)g(place.)27 b(It)17 b(ma)o(y)g(also)g(o)q(ccur)h(after)e(p)q(olygons)120 1578 y(with)i(more)f(than)g(three)g(edges)g(are)g(brok)o(en)g(up)h(in)o (to)f(triangles)g(\(if)h(the)f(GL)g(imple-)120 1634 y(men)o(tation)e (renders)f(p)q(olygons)h(b)o(y)g(p)q(erforming)f(this)h(decomp)q (osition\).)21 b Fy(x)p FC(,)14 b Fy(y)r FC(,)g(and)h Fy(z)120 1691 y FC(co)q(ordinates)h(returned)h(b)o(y)e(feedbac)o(k)h (are)g(windo)o(w)g(co)q(ordinates;)g(if)g Fy(w)g FC(is)h(returned,)120 1747 y(it)i(is)g(in)g(clip)h(co)q(ordinates.)29 b(No)18 b(depth)h(o\013set)f(arithmetic)g(\(section)h(3.5.5\))d(is)j(p)q(er-) 120 1804 y(formed)h(on)f(the)g Fy(z)j FC(v)m(alues.)34 b(In)20 b(the)f(case)h(of)f(bitmaps)h(and)f(pixel)i(rectangles,)g(the) 120 1860 y(co)q(ordinates)d(returned)g(are)g(those)f(of)g(the)h(curren) o(t)f(raster)g(p)q(osition.)28 b(The)18 b(texture)120 1917 y(co)q(ordinates)f(and)f(colors)g(returned)h(are)e(those)h (resulting)h(from)f(the)g(clipping)i(op)q(er-)120 1973 y(ations)d(as)g(describ)q(ed)i(in)f(\(section)g(2.13.8\).)191 2033 y(The)11 b(ordering)g(rules)h(for)e(GL)h(command)g(in)o (terpretation)g(also)g(apply)h(in)f(feedbac)o(k)120 2090 y(mo)q(de.)20 b(Eac)o(h)15 b(command)g(m)o(ust)g(b)q(e)g(fully)i(in)o (terpreted)e(and)h(its)f(e\013ects)g(on)g(b)q(oth)g(GL)120 2146 y(state)h(and)h(the)f(v)m(alues)i(to)e(b)q(e)h(written)g(to)f(the) g(feedbac)o(k)h(bu\013er)g(completed)g(b)q(efore)120 2202 y(a)e(subsequen)o(t)h(command)f(ma)o(y)g(b)q(e)h(executed.)191 2262 y(The)d(GL)g(is)g(tak)o(en)f(out)h(of)f(feedbac)o(k)h(mo)q(de)g(b) o(y)g(calling)h Fz(RenderMo)q(de)f FC(with)g(an)120 2319 y(argumen)o(t)j(v)m(alue)h(other)e(than)h Fr(FEEDBACK)p FC(.)e(When)j(called)g(while)h(in)e(feedbac)o(k)h(mo)q(de,)120 2375 y Fz(RenderMo)q(de)i FC(returns)f(the)g(n)o(um)o(b)q(er)h(of)f(v)m (alues)i(placed)f(in)h(the)e(feedbac)o(k)h(arra)o(y)120 2432 y(and)e(resets)g(the)f(feedbac)o(k)h(arra)o(y)f(p)q(oin)o(ter)h (to)f(b)q(e)h Fv(bu\013er)p FC(.)24 b(The)17 b(return)g(v)m(alue)h(nev) o(er)120 2488 y(exceeds)f(the)e(maxim)o(um)g(n)o(um)o(b)q(er)g(of)g(v)m (alues)i(passed)e(to)g Fz(F)l(eedbac)o(kBu\013er)p FC(.)p eop %%Page: 138 147 138 146 bop 332 137 a FC(138)622 b Fx(CHAPTER)15 b(5.)35 b(SPECIAL)16 b(FUNCTIONS)p 439 242 1280 2 v 438 299 2 57 v 581 282 a FC(T)o(yp)q(e)p 825 299 V 168 w(co)q(ordinates)p 1101 299 V 50 w(color)p 1247 299 V 50 w(texture)p 1440 299 V 49 w(total)f(v)m(alues)p 1718 299 V 439 301 1280 2 v 439 309 V 438 365 2 57 v 611 348 a Fr(2D)p 825 365 V 196 w Fy(x)p FC(,)f Fy(y)p 1101 365 V 201 w FC({)p 1247 365 V 123 w({)p 1440 365 V 169 w(2)p 1718 365 V 439 367 1280 2 v 438 423 2 57 v 611 406 a Fr(3D)p 825 423 V 196 w Fy(x)p FC(,)g Fy(y)r FC(,)h Fy(z)p 1101 423 V 150 w FC({)p 1247 423 V 123 w({)p 1440 423 V 169 w(3)p 1718 423 V 439 425 1280 2 v 438 482 2 57 v 549 465 a Fr(3D)p 596 465 14 2 v 15 w(COLOR)p 825 482 2 57 v 133 w Fy(x)p FC(,)f Fy(y)r FC(,)h Fy(z)p 1101 482 V 150 w(k)p 1247 482 V 122 w FC({)p 1440 482 V 169 w(3)10 b(+)h Fy(k)p 1718 482 V 439 483 1280 2 v 438 540 2 57 v 464 523 a Fr(3D)p 511 523 14 2 v 16 w(COLOR)p 637 523 V 14 w(TEXTURE)p 825 540 2 57 v 49 w Fy(x)p FC(,)j Fy(y)r FC(,)h Fy(z)p 1101 540 V 150 w(k)p 1247 540 V 122 w FC(4)p 1440 540 V 169 w(7)10 b(+)h Fy(k)p 1718 540 V 439 541 1280 2 v 438 598 2 57 v 464 581 a Fr(4D)p 511 581 14 2 v 16 w(COLOR)p 637 581 V 14 w(TEXTURE)p 825 598 2 57 v 49 w Fy(x)p FC(,)j Fy(y)r FC(,)h Fy(z)r FC(,)g Fy(w)p 1101 598 V 87 w(k)p 1247 598 V 122 w FC(4)p 1440 598 V 169 w(8)10 b(+)h Fy(k)p 1718 598 V 439 599 1280 2 v 332 726 a FC(T)l(able)k(5.2:)j(Corresp)q (ondence)d(of)e(feedbac)o(k)h(t)o(yp)q(e)g(to)f(n)o(um)o(b)q(er)i(of)e (v)m(alues)i(p)q(er)f(v)o(ertex.)332 783 y Fy(k)i FC(is)g(1)f(in)h (color)f(index)i(mo)q(de)e(and)h(4)e(in)i(R)o(GBA)g(mo)q(de.)403 926 y(If)g(writing)h(a)e(v)m(alue)j(to)d(the)h(feedbac)o(k)h(bu\013er)f (w)o(ould)g(cause)g(more)g(v)m(alues)h(to)f(b)q(e)332 982 y(written)e(than)f(the)g(sp)q(eci\014ed)j(maxim)o(um)d(n)o(um)o(b)q (er)h(of)f(v)m(alues,)i(then)f(the)f(v)m(alue)i(is)f(not)332 1038 y(written)i(and)f(an)h(o)o(v)o(er\015o)o(w)e(\015ag)h(is)h(set.)21 b(In)16 b(this)g(case,)g Fz(RenderMo)q(de)f FC(returns)g FB(\000)p FC(1)332 1095 y(when)j(it)g(is)g(called,)h(after)e(whic)o(h)i (the)e(o)o(v)o(er\015o)o(w)g(\015ag)g(is)h(reset.)27 b(While)19 b(in)f(feedbac)o(k)332 1151 y(mo)q(de,)12 b(v)m(alues)g(are)e(not)h(guaran)o(teed)f(to)h(b)q(e)g(written)g(in)o (to)g(the)g(feedbac)o(k)g(bu\013er)g(b)q(efore)332 1208 y Fz(RenderMo)q(de)k FC(is)h(called.)403 1271 y(Figure)i(5.2)f(giv)o (es)g(a)h(grammar)e(for)h(the)h(arra)o(y)f(pro)q(duced)i(b)o(y)f (feedbac)o(k.)28 b(Eac)o(h)332 1328 y(primitiv)o(e)14 b(is)f(indicated)h(with)f(a)f(unique)i(iden)o(tifying)g(v)m(alue)g (follo)o(w)o(ed)f(b)o(y)f(some)g(n)o(um-)332 1384 y(b)q(er)i(of)f(v)o (ertices.)19 b(A)14 b(v)o(ertex)f(is)h(fed)f(bac)o(k)h(as)f(some)g(n)o (um)o(b)q(er)g(of)g(\015oating-p)q(oin)o(t)h(v)m(alues)332 1441 y(determined)21 b(b)o(y)e(the)h(feedbac)o(k)g Fv(typ)n(e)p FC(.)32 b(T)l(able)20 b(5.2)f(giv)o(es)g(the)h(corresp)q(ondence)h(b)q (e-)332 1497 y(t)o(w)o(een)e(feedbac)o(k)g Fv(bu\013er)g FC(and)g(the)g(n)o(um)o(b)q(er)g(of)g(v)m(alues)h(returned)f(for)f(eac) o(h)h(v)o(ertex.)403 1617 y(The)c(command)446 1739 y Fw(void)29 b Fz(P)o(assThrough)p FC(\()h Fw(float)14 b Fv(token)h FC(\))g Fw(;)332 1860 y FC(ma)o(y)e(b)q(e)i(used)g(as)e(a) h(mark)o(er)f(in)i(feedbac)o(k)f(mo)q(de.)20 b Fv(token)14 b FC(is)g(returned)h(as)e(if)i(it)f(w)o(ere)g(a)332 1917 y(primitiv)o(e;)g(it)f(is)g(indicated)h(with)e(its)h(o)o(wn)f(unique)h (iden)o(tifying)h(v)m(alue.)21 b(The)12 b(ordering)332 1973 y(of)17 b(an)o(y)g Fz(P)o(assThrough)g FC(commands)g(with)g(resp)q (ect)h(to)f(primitiv)o(e)i(sp)q(eci\014cation)g(is)332 2030 y(main)o(tained)14 b(b)o(y)f(feedbac)o(k.)20 b Fz(P)o(assThrough) 12 b FC(ma)o(y)g(not)h(o)q(ccur)g(b)q(et)o(w)o(een)g Fz(Begin)h FC(and)332 2086 y Fz(End)p FC(.)20 b(It)c(has)f(no)g (e\013ect)g(when)g(the)h(GL)f(is)h(not)e(in)i(feedbac)o(k)g(mo)q(de.) 403 2149 y(The)f(state)f(required)h(for)f(feedbac)o(k)i(is)f(the)g(p)q (oin)o(ter)g(to)f(the)h(feedbac)o(k)g(arra)o(y)l(,)e(the)332 2206 y(maxim)o(um)f(n)o(um)o(b)q(er)f(of)g(v)m(alues)i(that)e(ma)o(y)g (b)q(e)h(placed)h(there,)f(and)f(the)h(feedbac)o(k)g Fv(typ)n(e)p FC(.)332 2262 y(An)22 b(o)o(v)o(er\015o)o(w)d(\015ag)i(is) h(required)g(to)e(indicate)j(whether)e(the)h(maxim)o(um)f(allo)o(w)o (able)332 2319 y(n)o(um)o(b)q(er)f(of)g(feedbac)o(k)h(v)m(alues)g(has)f (b)q(een)h(written;)h(initially)h(this)e(\015ag)e(is)i(cleared.)332 2375 y(These)16 b(state)g(v)m(ariables)h(are)f(GL)g(clien)o(t)h(state.) k(F)l(eedbac)o(k)c(also)e(relies)j(on)e(the)g(same)332 2432 y(mo)q(de)g(\015ag)g(as)f(selection)i(to)e(indicate)j(whether)e (the)g(GL)f(is)i(in)f(feedbac)o(k,)g(selection,)332 2488 y(or)f(normal)g(rendering)h(mo)q(de.)p eop %%Page: 139 148 139 147 bop 120 137 a Fx(5.3.)34 b(FEEDBA)o(CK)1061 b FC(139)120 451 y(feedbac)o(k-list:)255 507 y(feedbac)o(k-item)17 b(feedbac)o(k-list)255 564 y(feedbac)o(k-item)120 676 y(feedbac)o(k-item:)255 733 y(p)q(oin)o(t)255 789 y(line-segmen)o(t)255 846 y(p)q(olygon)255 902 y(bitmap)255 959 y(pixel-rectangle)255 1015 y(passthrough)120 1128 y(p)q(oin)o(t:)255 1185 y Fr(POINT)p 368 1185 14 2 v 15 w(TOKEN)d FC(v)o(ertex)120 1241 y(line-segmen)o(t:)255 1297 y Fr(LINE)p 346 1297 V 15 w(TOKEN)g FC(v)o(ertex)h(v)o(ertex)255 1354 y Fr(LINE)p 346 1354 V 15 w(RESET)p 471 1354 V 15 w(TOKEN)f FC(v)o(ertex)h(v)o (ertex)120 1410 y(p)q(olygon:)255 1467 y Fr(POLYGON)p 412 1467 V 15 w(TOKEN)f Fy(n)h FC(p)q(olygon-sp)q(ec)120 1523 y(p)q(olygon-sp)q(ec:)255 1580 y(p)q(olygon-sp)q(ec)i(v)o(ertex) 255 1636 y(v)o(ertex)e(v)o(ertex)g(v)o(ertex)120 1693 y(bitmap:)255 1749 y Fr(BITMAP)p 390 1749 V 15 w(TOKEN)f FC(v)o(ertex)943 507 y(pixel-rectangle:)1078 564 y Fr(DRAW)p 1169 564 V 15 w(PIXEL)p 1294 564 V 14 w(TOKEN)g FC(v)o(ertex)1078 620 y Fr(COPY)p 1169 620 V 15 w(PIXEL)p 1294 620 V 14 w(TOKEN)g FC(v)o(ertex)943 676 y(passthrough:)1078 733 y Fr(PASS)p 1169 733 V 15 w(THROUGH)p 1338 733 V 14 w(TOKEN)g Fy(f)943 846 y FC(v)o(ertex:)943 902 y Fr(2D)p FC(:)1078 959 y Fy(f)20 b(f)943 1015 y Fr(3D)p FC(:)1078 1072 y Fy(f)g(f)g(f)943 1128 y Fr(3D)p 990 1128 V 15 w(COLOR)p FC(:)1078 1185 y Fy(f)g(f)g(f)h FC(color)943 1241 y Fr(3D)p 990 1241 V 15 w(COLOR)p 1115 1241 V 15 w(TEXTURE)p FC(:)1078 1297 y Fy(f)f(f)g(f)h FC(color)15 b(tex)943 1354 y Fr(4D)p 990 1354 V 15 w(COLOR)p 1115 1354 V 15 w(TEXTURE)p FC(:)1078 1410 y Fy(f)20 b(f)g(f)h(f)f FC(color)15 b(tex)943 1523 y(color:)1078 1580 y Fy(f)20 b(f)g(f)h(f)1078 1636 y(f)943 1749 y FC(tex:)1078 1806 y Fy(f)f(f)g(f)h(f)120 1970 y FC(Figure)c(5.2:)k(F)l(eedbac)o(k)16 b(syn)o(tax.)23 b Fy(f)e FC(is)c(a)e(\015oating-p)q(oin)o(t)i(n)o(um)o(b)q(er.)24 b Fy(n)16 b FC(is)h(a)f(\015oating-)120 2027 y(p)q(oin)o(t)24 b(in)o(teger)f(giving)g(the)g(n)o(um)o(b)q(er)g(of)f(v)o(ertices)h(in)h (a)e(p)q(olygon.)43 b(The)23 b(sym)o(b)q(ols)120 2083 y(ending)16 b(with)p 371 2083 15 2 v 32 w Fw(TOKEN)d FC(are)h(sym)o(b)q(olic)h(\015oating-p)q(oin)o(t)g(constan)o(ts.)k(The) 14 b(lab)q(els)i(under)120 2140 y(the)k(\\v)o(ertex")f(rule)i(sho)o(w)e (the)h(di\013eren)o(t)g(data)f(returned)h(for)f(v)o(ertices)h(dep)q (ending)120 2196 y(on)c(the)f(feedbac)o(k)h Fv(typ)n(e)p FC(.)k Fr(LINE)p 651 2196 14 2 v 15 w(TOKEN)15 b FC(and)g Fr(LINE)p 967 2196 V 15 w(RESET)p 1092 2196 V 15 w(TOKEN)f FC(are)h(iden)o(tical)i(except)120 2253 y(that)h(the)g(latter)g(is)g (returned)h(only)g(when)f(the)g(line)i(stipple)g(is)e(reset)g(for)g (that)f(line)120 2309 y(segmen)o(t.)p eop %%Page: 140 149 140 148 bop 332 137 a FC(140)622 b Fx(CHAPTER)15 b(5.)35 b(SPECIAL)16 b(FUNCTIONS)332 286 y Fs(5.4)66 b(Displa)n(y)24 b(Lists)332 388 y FC(A)17 b(displa)o(y)i(list)f(is)g(simply)g(a)f (group)g(of)g(GL)g(commands)g(and)h(argumen)o(ts)e(that)h(has)332 444 y(b)q(een)d(stored)f(for)g(subsequen)o(t)h(execution.)20 b(The)14 b(GL)f(ma)o(y)g(b)q(e)g(instructed)i(to)d(pro)q(cess)332 501 y(a)18 b(particular)h(displa)o(y)h(list)f(\(p)q(ossibly)g(rep)q (eatedly\))h(b)o(y)e(pro)o(viding)h(a)f(n)o(um)o(b)q(er)h(that)332 557 y(uniquely)h(sp)q(eci\014es)g(it.)29 b(Doing)18 b(so)g(causes)h (the)f(commands)g(within)h(the)f(list)h(to)f(b)q(e)332 614 y(executed)h(just)e(as)g(if)h(they)g(w)o(ere)f(giv)o(en)h(normally) l(.)28 b(The)18 b(only)g(exception)h(p)q(ertains)332 670 y(to)e(commands)g(that)g(rely)g(up)q(on)h(clien)o(t)h(state.)26 b(When)17 b(suc)o(h)h(a)f(command)g(is)h(accu-)332 727 y(m)o(ulated)d(in)o(to)g(the)g(displa)o(y)h(list)g(\(that)e(is,)h(when) g(issued,)h(not)f(when)g(executed\),)g(the)332 783 y(clien)o(t)g(state) e(in)h(e\013ect)f(at)g(that)g(time)h(applies)h(to)e(the)g(command.)19 b(Only)c(serv)o(er)e(state)332 840 y(is)18 b(a\013ected)g(when)g(the)g (command)g(is)g(executed.)29 b(As)18 b(alw)o(a)o(ys,)f(p)q(oin)o(ters)h (whic)o(h)h(are)332 896 y(passed)f(as)e(argumen)o(ts)h(to)f(commands)h (are)g(dereferenced)i(when)f(the)f(command)g(is)332 952 y(issued.)34 b(\(V)l(ertex)20 b(arra)o(y)e(p)q(oin)o(ters)i(are)f (dereferenced)i(when)f(the)g(commands)f Fz(Ar-)332 1009 y(ra)o(yElemen)o(t)p FC(,)i Fz(Dra)o(wArra)o(ys)p FC(,)e(or)h Fz(Dra)o(wElemen)o(ts)g FC(are)h(accum)o(ulated)g(in)o(to)g(a)332 1065 y(displa)o(y)16 b(list.\))403 1122 y(A)f(displa)o(y)h(list)g(is)g (b)q(egun)g(b)o(y)f(calling)446 1209 y Fw(void)29 b Fz(NewList)p FC(\()i Fw(uint)15 b Fv(n)p Fw(,)f(enum)h Fv(mo)n(de)g FC(\))g Fw(;)332 1297 y Fv(n)g FC(is)g(a)g(p)q(ositiv)o(e)h(in)o(teger) f(to)g(whic)o(h)h(the)f(displa)o(y)h(list)g(that)e(follo)o(ws)h(is)h (assigned,)f(and)332 1353 y Fv(mo)n(de)20 b FC(is)g(a)f(sym)o(b)q(olic) h(constan)o(t)f(that)f(con)o(trols)h(the)h(b)q(eha)o(vior)g(of)f(the)g (GL)h(during)332 1410 y(displa)o(y)e(list)g(creation.)26 b(If)17 b Fv(mo)n(de)h FC(is)f Fr(COMPILE)p FC(,)f(then)h(commands)g (are)g(not)g(executed)332 1466 y(as)g(they)g(are)g(placed)h(in)g(the)f (displa)o(y)h(list.)26 b(If)17 b Fv(mo)n(de)h FC(is)f Fr(COMPILE)p 1476 1466 14 2 v 14 w(AND)p 1556 1466 V 16 w(EXECUTE)e FC(then)332 1523 y(commands)f(are)g(executed)h(as)f (they)g(are)g(encoun)o(tered,)h(then)g(placed)g(in)g(the)f(displa)o(y) 332 1579 y(list.)21 b(If)15 b Fy(n)e FC(=)g(0,)i(then)g(the)g(error)g Fr(INVALID)p 1060 1579 V 14 w(VALUE)f FC(is)i(generated.)403 1636 y(After)h(calling)i Fz(NewList)f FC(all)g(subsequen)o(t)g(GL)g (commands)f(are)g(placed)i(in)f(the)332 1692 y(displa)o(y)e(list)g (\(in)g(the)f(order)g(the)h(commands)f(are)f(issued\))j(un)o(til)f(a)f (call)h(to)446 1780 y Fw(void)29 b Fz(EndList)p FC(\()j Fw(void)38 b FC(\))15 b Fw(;)332 1867 y FC(o)q(ccurs,)g(after)f(whic)o (h)i(the)f(GL)g(returns)g(to)f(its)h(normal)g(command)g(execution)h (state.)332 1924 y(It)11 b(is)g(only)g(when)g Fz(EndList)h FC(o)q(ccurs)f(that)f(the)h(sp)q(eci\014ed)h(displa)o(y)g(list)f(is)h (actually)f(asso-)332 1980 y(ciated)h(with)f(the)g(index)h(indicated)h (with)e Fz(NewList)p FC(.)19 b(The)11 b(error)f Fr(INVALID)p 1619 1980 V 14 w(OPERATION)332 2037 y FC(is)20 b(generated)f(if)h Fz(EndList)h FC(is)f(called)h(without)f(a)f(previous)h(matc)o(hing)f Fz(NewList)p FC(,)332 2093 y(or)f(if)h Fz(NewList)g FC(is)g(called)i(a) d(second)h(time)g(b)q(efore)g(calling)h Fz(EndList)p FC(.)31 b(The)19 b(error)332 2149 y Fr(OUT)p 401 2149 V 15 w(OF)p 460 2149 V 15 w(MEMORY)12 b FC(is)i(generated)g(if)f Fz(EndList)i FC(is)f(called)h(and)e(the)h(sp)q(eci\014ed)h(displa)o(y)g (list)332 2206 y(cannot)h(b)q(e)i(stored)e(b)q(ecause)h(insu\016cien)o (t)i(memory)d(is)h(a)o(v)m(ailable.)26 b(In)17 b(this)g(case)f(GL)332 2262 y(implemen)o(tations)g(of)e(revision)i(1.1)e(or)h(greater)e (insure)j(that)e(no)h(c)o(hange)g(is)g(made)g(to)332 2319 y(the)k(previous)g(con)o(ten)o(ts)e(of)h(the)h(displa)o(y)g(list,) h(if)e(an)o(y)l(,)h(and)g(that)e(no)h(other)g(c)o(hange)332 2375 y(is)g(made)f(to)g(the)g(GL)h(state,)f(except)g(for)g(the)h(state) e(c)o(hanged)i(b)o(y)f(execution)h(of)f(GL)332 2432 y(commands)e(when)h (the)f(displa)o(y)h(list)g(mo)q(de)g(is)g Fr(COMPILE)p 1310 2432 V 14 w(AND)p 1390 2432 V 15 w(EXECUTE)p FC(.)403 2488 y(Once)g(de\014ned,)g(a)f(displa)o(y)h(list)g(is)g(executed)g(b)o (y)f(calling)p eop %%Page: 141 150 141 149 bop 120 137 a Fx(5.4.)34 b(DISPLA)l(Y)17 b(LISTS)978 b FC(141)234 286 y Fw(void)30 b Fz(CallList)p FC(\()i Fw(uint)14 b Fv(n)h FC(\))g Fw(;)120 383 y Fv(n)f FC(giv)o(es)g(the)h (index)g(of)f(the)g(displa)o(y)h(list)g(to)f(b)q(e)g(called.)22 b(This)14 b(causes)h(the)f(commands)120 439 y(sa)o(v)o(ed)h(in)g(the)g (displa)o(y)h(list)g(to)e(b)q(e)h(executed,)g(in)h(order,)e(just)h(as)f (if)h(they)g(w)o(ere)g(issued)120 496 y(without)23 b(using)g(a)f (displa)o(y)i(list.)42 b(If)23 b Fy(n)i FC(=)g(0,)f(then)e(the)h(error) f Fr(INVALID)p 1442 496 14 2 v 14 w(VALUE)f FC(is)120 552 y(generated.)191 609 y(The)15 b(command)234 706 y Fw(void)30 b Fz(CallLists)p FC(\()h Fw(sizei)15 b Fv(n)p Fw(,)g(enum)f Fv(typ)n(e)p Fw(,)h(void)g Fv(*lists)f FC(\))h Fw(;)120 802 y FC(pro)o(vides)22 b(an)f(e\016cien)o(t)g(means)g (for)f(executing)i(a)f(n)o(um)o(b)q(er)g(of)f(displa)o(y)i(lists.)38 b Fv(n)20 b FC(is)120 859 y(an)g(in)o(teger)f(indicating)i(the)f(n)o (um)o(b)q(er)f(of)g(displa)o(y)i(lists)f(to)e(b)q(e)i(called,)i(and)d Fv(lists)f FC(is)120 915 y(a)h(p)q(oin)o(ter)g(that)f(p)q(oin)o(ts)i (to)e(an)h(arra)o(y)e(of)i(o\013sets.)29 b(Eac)o(h)19 b(o\013set)f(is)h(constructed)g(as)120 971 y(determined)d(b)o(y)e Fv(lists)e FC(as)i(follo)o(ws.)20 b(First,)13 b Fv(typ)n(e)h FC(ma)o(y)f(b)q(e)i(one)f(of)g(the)g(constan)o(ts)f Fr(BYTE)p FC(,)120 1028 y Fr(UNSIGNED)p 299 1028 V 14 w(BYTE)p FC(,)d Fr(SHORT)p FC(,)g Fr(UNSIGNED)p 733 1028 V 14 w(SHORT)p FC(,)g Fr(INT)p FC(,)g Fr(UNSIGNED)p 1145 1028 V 15 w(INT)p FC(,)g(or)h Fr(FLOAT)f FC(indicating)120 1084 y(that)i(the)g(arra)o(y)f(p)q(oin)o(ted)i(to)f(b)o(y)g Fv(lists)f FC(is)h(an)g(arra)o(y)f(of)h(b)o(ytes,)g(unsigned)i(b)o (ytes,)e(shorts,)120 1141 y(unsigned)19 b(shorts,)e(in)o(tegers,)g (unsigned)i(in)o(tegers,)e(or)g(\015oats,)g(resp)q(ectiv)o(ely)l(.)27 b(In)18 b(this)120 1197 y(case)k(eac)o(h)g(o\013set)f(is)h(found)h(b)o (y)e(simply)j(con)o(v)o(erting)d(eac)o(h)h(arra)o(y)f(elemen)o(t)i(to)e (an)120 1254 y(in)o(teger)e(\(\015oating)e(p)q(oin)o(t)i(v)m(alues)g (are)f(truncated\).)28 b(F)l(urther,)18 b Fv(typ)n(e)g FC(ma)o(y)f(b)q(e)i(one)f(of)120 1310 y Fr(2)p 145 1310 V 16 w(BYTES)p FC(,)12 b Fr(3)p 318 1310 V 16 w(BYTES)p FC(,)g(or)i Fr(4)p 546 1310 V 15 w(BYTES)p FC(,)f(indicating)i(that)f (the)g(arra)o(y)e(con)o(tains)i(sequences)h(of)120 1367 y(2,)k(3,)h(or)e(4)h(unsigned)h(b)o(ytes,)f(in)h(whic)o(h)f(case)g(eac) o(h)g(in)o(teger)g(o\013set)f(is)i(constructed)120 1423 y(according)c(to)f(the)g(follo)o(wing)h(algorithm:)120 1520 y Fy(of)5 b(f)g(set)14 b FB( )f FC(0)120 1577 y Fz(for)i Fy(i)d FC(=)h(1)i Fz(to)h Fy(b)199 1633 y(of)5 b(f)g(set)14 b FB( )f Fy(of)5 b(f)g(set)16 b FC(shifted)g(left)g(8)f (bits)199 1690 y Fy(of)5 b(f)g(set)14 b FB( )f Fy(of)5 b(f)g(set)11 b FC(+)g Fy(by)r(te)199 1746 y FC(adv)m(ance)16 b(to)f(next)g Fv(byte)g FC(in)h(the)f(arra)o(y)120 1842 y Fy(b)g FC(is)h(2,)e(3,)h(or)f(4,)h(as)g(indicated)i(b)o(y)e Fv(typ)n(e)p FC(.)20 b(If)15 b Fy(n)e FC(=)g(0,)i Fz(CallLists)h FC(do)q(es)g(nothing.)191 1900 y(Eac)o(h)c(of)g(the)h Fv(n)e FC(constructed)i(o\013sets)e(is)i(tak)o(en)f(in)h(order)f(and)h (added)g(to)f(a)g(displa)o(y)120 1956 y(list)20 b(base)e(to)g(obtain)h (a)f(displa)o(y)h(list)h(n)o(um)o(b)q(er.)30 b(F)l(or)18 b(eac)o(h)g(n)o(um)o(b)q(er,)h(the)g(indicated)120 2012 y(displa)o(y)e(list)f(is)f(executed.)21 b(The)16 b(base)f(is)h(set)f(b) o(y)g(calling)234 2109 y Fw(void)30 b Fz(ListBase)p FC(\()h Fw(uint)14 b Fv(b)n(ase)h FC(\))g Fw(;)120 2205 y FC(to)g(sp)q(ecify)h (the)g(o\013set.)191 2262 y(Indicating)j(a)e(displa)o(y)h(list)h(index) f(that)f(do)q(es)g(not)g(corresp)q(ond)h(to)f(an)o(y)g(displa)o(y)120 2319 y(list)c(has)f(no)f(e\013ect.)19 b Fz(CallList)14 b FC(or)d Fz(CallLists)i FC(ma)o(y)e(app)q(ear)h(inside)i(a)d(displa)o (y)i(list.)20 b(\(If)120 2375 y(the)13 b Fv(mo)n(de)f FC(supplied)i(to)e Fz(NewList)g FC(is)h Fr(COMPILE)p 940 2375 V 14 w(AND)p 1020 2375 V 15 w(EXECUTE)p FC(,)d(then)j(the)f (appropriate)120 2432 y(lists)19 b(are)f(executed,)h(but)f(the)g Fz(CallList)i FC(or)e Fz(CallLists)p FC(,)h(rather)f(than)g(those)f (lists')120 2488 y(constituen)o(t)h(commands,)g(is)g(placed)h(in)f(the) g(list)g(under)h(construction.\))27 b(T)l(o)17 b(a)o(v)o(oid)p eop %%Page: 142 151 142 150 bop 332 137 a FC(142)622 b Fx(CHAPTER)15 b(5.)35 b(SPECIAL)16 b(FUNCTIONS)332 286 y FC(the)k(p)q(ossibilit)o(y)i(of)d (in\014nite)i(recursion)f(resulting)h(from)e(displa)o(y)i(lists)f (calling)h(one)332 343 y(another,)d(an)f(implemen)o(tation)i(dep)q (enden)o(t)g(limit)g(is)g(placed)f(on)g(the)g(nesting)g(lev)o(el)332 399 y(of)c(displa)o(y)i(lists)f(during)h(displa)o(y)f(list)h (execution.)k(This)c(limit)g(m)o(ust)e(b)q(e)h(at)f(least)g(64.)403 456 y(Tw)o(o)g(commands)h(are)g(pro)o(vided)h(to)e(manage)h(displa)o(y) h(list)g(indices.)446 550 y Fw(uint)29 b Fz(GenLists)p FC(\()i Fw(sizei)15 b Fv(s)f FC(\))h Fw(;)332 644 y FC(returns)k(an)g (in)o(teger)g Fy(n)g FC(suc)o(h)h(that)e(the)h(indices)i Fy(n;)8 b(:)g(:)g(:)d(;)j(n)13 b FC(+)g Fy(s)g FB(\000)g FC(1)18 b(are)h(previously)332 700 y(un)o(used)c(\(i.e.)k(there)14 b(are)g Fy(s)g FC(previously)h(un)o(used)f(displa)o(y)h(list)g(indices) h(starting)d(at)g Fy(n)p FC(\).)332 757 y Fz(GenLists)19 b FC(also)f(has)g(the)h(e\013ect)f(of)g(creating)g(an)g(empt)o(y)g (displa)o(y)i(list)f(for)e(eac)o(h)i(of)332 813 y(the)13 b(indices)i Fy(n;)8 b(:)g(:)g(:)d(;)j(n)d FC(+)g Fy(s)g FB(\000)g FC(1,)14 b(so)f(that)f(these)h(indices)i(all)f(b)q(ecome)f (used.)20 b Fz(GenLists)332 870 y FC(returns)15 b(0)h(if)g(there)f(is)h (no)f(group)h(of)f Fy(s)g FC(con)o(tiguous)h(previously)h(un)o(used)f (displa)o(y)h(list)332 926 y(indices,)g(or)e(if)g Fy(s)e FC(=)g(0.)446 1020 y Fw(boolean)29 b Fz(IsList)p FC(\()h Fw(uint)15 b Fv(list)f FC(\))h Fw(;)332 1114 y FC(returns)g Fr(TRUE)f FC(if)i Fv(list)f FC(is)g(the)h(index)g(of)f(some)g(displa)o (y)h(list.)403 1171 y(A)f(con)o(tiguous)g(group)g(of)g(displa)o(y)h (lists)g(ma)o(y)f(b)q(e)g(deleted)i(b)o(y)e(calling)446 1265 y Fw(void)29 b Fz(DeleteLists)p FC(\()j Fw(uint)14 b Fv(list)p Fw(,)h(sizei)f Fv(r)n(ange)h FC(\))g Fw(;)332 1359 y FC(where)20 b Fv(list)g FC(is)g(the)g(index)i(of)d(the)h (\014rst)g(displa)o(y)h(list)g(to)e(b)q(e)i(deleted)g(and)g Fv(r)n(ange)e FC(is)332 1415 y(the)c(n)o(um)o(b)q(er)f(of)g(displa)o(y) i(lists)f(to)e(b)q(e)j(deleted.)k(All)c(information)f(ab)q(out)f(the)g (displa)o(y)332 1472 y(lists)h(is)g(lost,)f(and)h(the)f(indices)i(b)q (ecome)f(un)o(used.)21 b(Indices)16 b(to)e(whic)o(h)h(no)f(displa)o(y)i (list)332 1528 y(corresp)q(onds)g(are)e(ignored.)21 b(If)15 b Fy(r)q(ang)r(e)e FC(=)g(0,)h(nothing)i(happ)q(ens.)403 1585 y(Certain)h(commands,)h(when)g(called)i(while)f(compiling)g(a)f (displa)o(y)h(list,)f(are)g(not)332 1641 y(compiled)f(in)o(to)e(the)g (displa)o(y)h(list)g(but)f(are)g(executed)h(immediately)l(.)22 b(These)15 b(are:)20 b Fz(Is-)332 1698 y(List)p FC(,)c Fz(GenLists)p FC(,)f Fz(DeleteLists)p FC(,)h Fz(F)l(eedbac)o(kBu\013er) p FC(,)d Fz(SelectBu\013er)p FC(,)i Fz(Render-)332 1754 y(Mo)q(de)p FC(,)d Fz(V)l(ertexP)o(oin)o(ter)p FC(,)d Fz(NormalP)o(oin)o(ter)p FC(,)i Fz(ColorP)o(oin)o(ter)p FC(,)g Fz(IndexP)o(oin)o(ter)p FC(,)332 1811 y Fz(T)l(exCo)q(ordP)o (oin)o(ter)p FC(,)31 b Fz(EdgeFlagP)o(oin)o(ter)p FC(,)j Fz(In)o(terlea)o(v)o(edArra)o(ys)o FC(,)c Fz(Enable-)332 1867 y(Clien)o(tState)p FC(,)25 b Fz(DisableClien)o(tState)p FC(,)i Fz(PushClien)o(tA)o(ttrib)p FC(,)d Fz(P)o(opClien)o(tA)o(t-)332 1924 y(trib)p FC(,)f Fz(ReadPixels)p FC(,)f Fz(PixelStore)p FC(,)h Fz(GenT)l(extures)p FC(,)e Fz(DeleteT)l(extures)p FC(,)h Fz(Are-)332 1980 y(T)l(exturesResiden)o(t)p FC(,)j Fz(IsT)l(exture)p FC(,)g Fz(Flush)p FC(,)g Fz(Finish)p FC(,)i(as)c(w)o(ell)i(as)f Fz(IsEnabled)332 2036 y FC(and)g(all)i(of)d (the)i Fz(Get)f FC(commands)g(\(see)g(Chapter)g(6\).)46 b Fz(T)l(exImage2D)24 b FC(is)h(exe-)332 2093 y(cuted)16 b(immediately)h(only)f(when)g(the)f Fv(tar)n(get)g FC(argumen)o(t)g(is) h Fr(PROXY)p 1502 2093 14 2 v 15 w(TEXTURE)p 1671 2093 V 14 w(2D)p FC(,)e(and)332 2149 y Fz(T)l(exImage1D)j FC(is)g(executed)h(immediatedly)g(only)g(when)f(the)g Fv(tar)n(get)g FC(argumen)o(t)f(is)332 2206 y Fr(PROXY)p 445 2206 V 15 w(TEXTURE)p 614 2206 V 14 w(1D)p FC(.)403 2262 y(Displa)o(y)e(lists)h(require)g(one)f(bit)g(of)g(state)f(to)g (indicate)j(whether)e(a)g(GL)g(command)332 2319 y(should)20 b(b)q(e)g(executed)g(immediately)h(or)d(placed)i(in)g(a)f(displa)o(y)h (list.)32 b(In)20 b(the)f(initial)332 2375 y(state,)24 b(commands)e(are)h(executed)g(immediately)l(.)45 b(If)23 b(the)g(bit)g(indicates)h(displa)o(y)332 2432 y(list)18 b(creation,)f(an)g(index)h(is)f(required)h(to)e(indicate)j(the)e (curren)o(t)g(displa)o(y)g(list)h(b)q(eing)332 2488 y(de\014ned.)24 b(Another)16 b(bit)h(indicates,)g(during)g(displa)o(y)h(list)f (creation,)f(whether)g(or)g(not)p eop %%Page: 143 152 143 151 bop 120 137 a Fx(5.5.)34 b Fz(FLUSH)16 b Fx(AND)f Fz(FINISH)829 b FC(143)120 286 y(commands)20 b(should)h(b)q(e)f (executed)h(as)f(they)g(are)f(compiled)j(in)o(to)d(the)h(displa)o(y)h (list.)120 343 y(One)g(in)o(teger)e(is)h(required)h(for)e(the)h(curren) o(t)f Fz(ListBase)i FC(setting;)g(its)f(initial)i(v)m(alue)120 399 y(is)f(zero.)34 b(Finally)l(,)22 b(state)d(m)o(ust)h(b)q(e)g(main)o (tained)h(to)f(indicate)h(whic)o(h)g(in)o(tegers)f(are)120 456 y(curren)o(tly)c(in)g(use)f(as)g(displa)o(y)h(list)g(indices.)22 b(In)16 b(the)f(initial)i(state,)d(no)h(indices)i(are)e(in)120 512 y(use.)120 654 y Fs(5.5)67 b(Flush)23 b(and)g(Finish)120 756 y FC(The)16 b(command)234 842 y Fw(void)30 b Fz(Flush)p FC(\()g Fw(void)38 b FC(\))15 b Fw(;)120 929 y FC(indicates)h(that)d (all)i(commands)e(that)h(ha)o(v)o(e)f(previously)i(b)q(een)g(sen)o(t)f (to)f(the)h(GL)g(m)o(ust)120 986 y(complete)i(in)g(\014nite)g(time.)191 1042 y(The)f(command)234 1129 y Fw(void)30 b Fz(Finish)p FC(\()g Fw(void)39 b FC(\))15 b Fw(;)120 1216 y FC(forces)f(all)g (previous)g(GL)g(commands)f(to)g(complete.)20 b Fz(Finish)14 b FC(do)q(es)g(not)f(return)h(un)o(til)120 1272 y(all)19 b(e\013ects)e(from)g(previously)i(issued)g(commands)f(on)g(GL)f(clien)o (t)i(and)f(serv)o(er)g(state)120 1329 y(and)e(the)f(framebu\013er)g (are)g(fully)h(realized.)120 1470 y Fs(5.6)67 b(Hin)n(ts)120 1572 y FC(Certain)18 b(asp)q(ects)f(of)g(GL)g(b)q(eha)o(vior,)h(when)g (there)f(is)h(ro)q(om)f(for)f(v)m(ariation,)i(ma)o(y)f(b)q(e)120 1628 y(con)o(trolled)f(with)g(hin)o(ts.)k(A)15 b(hin)o(t)h(is)g(sp)q (eci\014ed)h(using)234 1715 y Fw(void)30 b Fz(Hin)o(t)p FC(\()g Fw(enum)15 b Fv(tar)n(get)p Fw(,)g(enum)f Fv(hint)h FC(\))g Fw(;)120 1802 y Fv(tar)n(get)j FC(is)f(a)g(sym)o(b)q(olic)h (constan)o(t)e(indicating)j(the)f(b)q(eha)o(vior)f(to)g(b)q(e)h(con)o (trolled,)g(and)120 1858 y Fv(hint)23 b FC(is)g(a)g(sym)o(b)q(olic)h (constan)o(t)d(indicating)k(what)d(t)o(yp)q(e)h(of)f(b)q(eha)o(vior)i (is)f(desired.)120 1915 y Fv(tar)n(get)d FC(ma)o(y)g(b)q(e)g(one)g(of)g Fr(PERSPECTIVE)p 812 1915 14 2 v 13 w(CORRECTION)p 1045 1915 V 14 w(HINT)p FC(,)f(indicating)i(the)g(desired)120 1971 y(qualit)o(y)12 b(of)f(parameter)g(in)o(terp)q(olation;)i Fr(POINT)p 924 1971 V 15 w(SMOOTH)p 1071 1971 V 14 w(HINT)p FC(,)d(indicating)j(the)f(desired)120 2028 y(sampling)g(qualit)o(y)f (of)e(p)q(oin)o(ts;)j Fr(LINE)p 739 2028 V 15 w(SMOOTH)p 886 2028 V 15 w(HINT)p FC(,)d(indicating)j(the)e(desired)i(sampling)120 2084 y(qualit)o(y)g(of)f(lines;)j Fr(POLYGON)p 588 2084 V 14 w(SMOOTH)p 734 2084 V 14 w(HINT)p FC(,)c(indicating)j(the)f (desired)g(sampling)g(qualit)o(y)120 2141 y(of)j(p)q(olygons;)g(and)g Fr(FOG)p 531 2141 V 15 w(HINT)p FC(,)f(indicating)j(whether)e(fog)g (calculations)h(are)f(done)g(p)q(er)120 2197 y(pixel)k(or)d(p)q(er)i(v) o(ertex.)24 b Fv(hint)17 b FC(m)o(ust)f(b)q(e)i(one)f(of)f Fr(FASTEST)p FC(,)g(indicating)i(that)f(the)g(most)120 2254 y(e\016cien)o(t)d(option)f(should)h(b)q(e)g(c)o(hosen;)g Fr(NICEST)p FC(,)d(indicating)k(that)d(the)i(highest)f(qualit)o(y)120 2310 y(option)23 b(should)g(b)q(e)g(c)o(hosen;)j(and)d Fr(DONT)p 845 2310 V 15 w(CARE)p FC(,)e(indicating)j(no)e(preference)h (in)h(the)120 2366 y(matter.)191 2423 y(The)14 b(in)o(terpretation)f (of)g(hin)o(ts)h(is)g(implemen)o(tation)h(dep)q(enden)o(t.)21 b(An)14 b(implemen-)120 2479 y(tation)h(ma)o(y)g(ignore)g(them)g(en)o (tirely)l(.)p eop %%Page: 144 153 144 152 bop 332 598 a Ft(Chapter)31 b(6)332 807 y FA(State)39 b(and)g(State)g(Requests)332 1030 y FC(The)17 b(v)m(alues)i(of)d(most)h (GL)g(state)f(v)m(ariables)i(can)g(b)q(e)f(obtained)h(using)g(a)f(set)f (of)h Fz(Get)332 1086 y FC(commands.)j(There)15 b(are)g(four)g (commands)g(for)f(obtaining)j(simple)f(state)f(v)m(ariables:)446 1182 y Fw(void)29 b Fz(GetBo)q(olean)o(v)p FC(\()j Fw(enum)14 b Fv(value)p Fw(,)h(boolean)g Fv(*data)h FC(\))f Fw(;)446 1239 y(void)29 b Fz(GetIn)o(tegerv)p FC(\()h Fw(enum)14 b Fv(value)p Fw(,)h(int)g Fv(*data)h FC(\))f Fw(;)446 1295 y(void)29 b Fz(GetFloatv)p FC(\()j Fw(enum)14 b Fv(value)p Fw(,)h(float)g Fv(*data)h FC(\))f Fw(;)446 1352 y(void)29 b Fz(GetDoublev)p FC(\()i Fw(enum)15 b Fv(value)p Fw(,)g(double)f Fv(*data)i FC(\))f Fw(;)332 1448 y FC(The)j(commands)f(obtain)h(b)q(o)q(olean,)g(in)o(teger,)g (\015oating-p)q(oin)o(t,)g(or)f(double-precisi)q(on)332 1505 y(state)d(v)m(ariables.)21 b Fv(value)14 b FC(is)h(a)f(sym)o(b)q (olic)i(constan)o(t)e(indicating)i(the)f(state)e(v)m(ariable)j(to)332 1561 y(return,)f Fv(data)g FC(is)h(a)e(p)q(oin)o(ter)i(to)e(an)h(arra)o (y)f(of)g(the)h(indicated)i(t)o(yp)q(e)e(in)g(whic)o(h)h(to)e(place)332 1617 y(the)h(returned)h(data.)j(In)d(addition)446 1714 y Fw(boolean)29 b Fz(IsEnabled)p FC(\()i Fw(enum)14 b Fv(value)i FC(\))e Fw(;)332 1810 y FC(can)i(b)q(e)g(used)g(to)f (determine)i(if)f Fv(value)g FC(is)g(curren)o(tly)g(enabled)h(\(as)e (with)h Fz(Enable)p FC(\))h(or)332 1867 y(disabled.)403 1924 y(If)f(a)g Fz(Get)g FC(command)g(is)g(issued)h(that)f(returns)g(v) m(alue)h(t)o(yp)q(es)f(di\013eren)o(t)g(from)f(the)332 1980 y(t)o(yp)q(e)j(of)f(the)g(v)m(alue)i(b)q(eing)g(obtained,)f(a)f(t) o(yp)q(e)h(con)o(v)o(ersion)f(is)h(p)q(erformed.)27 b(If)18 b Fz(Get-)332 2037 y(Bo)q(olean)o(v)j FC(is)f(called,)j(a)c (\015oating-p)q(oin)o(t)i(or)e(in)o(teger)h(v)m(alue)i(con)o(v)o(erts)d (to)g Fr(FALSE)g FC(if)332 2093 y(and)g(only)h(if)f(it)h(is)f(zero)g (\(otherwise)g(it)h(con)o(v)o(erts)e(to)g Fr(TRUE)p FC(\).)g(If)h Fz(GetIn)o(tegerv)f FC(\(or)332 2149 y(an)o(y)f(of)h(the)f Fz(Get)h FC(commands)g(b)q(elo)o(w\))g(is)g(called,)i(a)d(b)q(o)q (olean)i(v)m(alue)g(is)f(in)o(terpreted)332 2206 y(as)13 b(either)i(1)e(or)g(0,)g(and)h(a)f(\015oating-p)q(oin)o(t)h(v)m(alue)h (is)f(rounded)h(to)e(the)g(nearest)h(in)o(teger,)332 2262 y(unless)k(the)f(v)m(alue)h(is)f(a)g(an)g(R)o(GBA)f(color)h(comp)q (onen)o(t,)g(a)g Fz(DepthRange)h FC(v)m(alue,)g(a)332 2319 y(depth)h(bu\013er)f(clear)h(v)m(alue,)h(or)d(a)h(normal)h(co)q (ordinate.)29 b(In)19 b(these)f(cases,)h(the)f Fz(Get)332 2375 y FC(command)e(con)o(v)o(erts)f(the)h(\015oating-p)q(oin)o(t)g(v)m (alue)h(to)f(an)g(in)o(teger)g(according)g(the)g Fw(INT)332 2432 y FC(en)o(try)k(of)f(T)l(able)i(4.7;)g(a)e(v)m(alue)i(not)f(in)h ([)p FB(\000)p FC(1)p Fy(;)8 b FC(1])18 b(con)o(v)o(erts)h(to)g(an)h (unde\014ned)i(v)m(alue.)332 2488 y(If)c Fz(GetFloatv)g FC(is)g(called,)g(a)f(b)q(o)q(olean)h(v)m(alue)h(is)e(in)o(terpreted)h (as)f(either)h(1)p Fy(:)p FC(0)e(or)h(0)p Fy(:)p FC(0,)1045 2613 y(144)p eop %%Page: 145 154 145 153 bop 1547 137 a FC(145)120 286 y(an)14 b(in)o(teger)h(is)g(co)q (erced)g(to)e(\015oating-p)q(oin)o(t,)i(and)f(a)g(double-precision)j (\015oating-p)q(oin)o(t)120 343 y(v)m(alue)23 b(is)f(con)o(v)o(erted)f (to)g(single-precision.)42 b(Analogous)21 b(con)o(v)o(ersions)h(are)f (carried)120 399 y(out)d(in)i(the)e(case)g(of)g Fz(GetDoublev)p FC(.)31 b(If)18 b(a)g(v)m(alue)i(is)f(so)f(large)g(in)i(magnitude)e (that)120 456 y(it)j(cannot)f(b)q(e)g(represen)o(ted)h(with)f(the)h (requested)f(t)o(yp)q(e,)h(then)f(the)h(nearest)f(v)m(alue)120 512 y(represen)o(table)c(using)g(the)g(requested)f(t)o(yp)q(e)h(is)f (returned.)191 572 y(Other)k(commands)f(exist)g(to)g(obtain)h(state)e (v)m(ariables)j(that)e(are)g(indexed)i(b)o(y)e(a)120 628 y(target.)h(These)d(are)234 735 y Fw(void)30 b Fz(GetClipPlane)p FC(\()i Fw(enum)14 b Fv(plane)p Fw(,)h(double)f Fv(e)n(qn[4])g FC(\))h Fw(;)234 791 y(void)30 b Fz(GetLigh)o(t)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()h Fw(enum)14 b Fv(light)p Fw(,)h(enum)g Fv(value)p Fw(,)g(T)g Fv(data)h FC(\))f Fw(;)234 848 y(void)30 b Fz(GetMaterial)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()h Fw(enum)15 b Fv(fac)n(e)p Fw(,)f(enum)h Fv(value)p Fw(,)g(T)g Fv(data)h FC(\))f Fw(;)234 904 y(void)30 b Fz(GetT)l(exEn)o(v)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()f Fw(enum)14 b Fv(env)p Fw(,)h(enum)f Fv(value)p Fw(,)h(T)g Fv(data)h FC(\))f Fw(;)234 961 y(void)30 b Fz(GetT)l(exGen)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()f Fw(enum)15 b Fv(c)n(o)n(or)n(d)p Fw(,)g(enum)f Fv(value)p Fw(,)h(T)g Fv(data)h FC(\))f Fw(;)234 1017 y(void)53 b Fz(GetT)l(exP)o(arameter)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()e Fw(enum)27 b Fv(tar)n(get)p Fw(,)i(enum)d Fv(value)p Fw(,)302 1074 y(T)15 b Fv(data)h FC(\))f Fw(;)234 1130 y(void)39 b Fz(GetT)l(exLev)o(elP)o(arameter)p FB(f)p Fz(if)p FB(g)p Fz(v)p FC(\()e Fw(enum)19 b Fv(tar)n(get)p Fw(,)i(int)f Fv(lo)n(d)p Fw(,)302 1187 y(enum)15 b Fv(value)p Fw(,)g(T)g Fv(data)h FC(\))f Fw(;)234 1243 y(void)30 b Fz(GetPixelMap)p FB(f)p Fz(ui)18 b(us)f(f)p FB(g)p Fz(v)p FC(\()30 b Fw(enum)14 b Fv(map)p Fw(,)i(T)f Fv(data)h FC(\))f Fw(;)234 1299 y(void)30 b Fz(GetMap)p FB(f)p Fz(ifd)p FB(g)p Fz(v)p FC(\()g Fw(enum)14 b Fv(map)p Fw(,)i(enum)f Fv(value)p Fw(,)g(T)g Fv(data)h FC(\))f Fw(;)120 1406 y Fz(GetClipPlane)24 b FC(alw)o(a)o(ys)c(returns)i(four)f (double-precision)j(v)m(alues)f(in)f Fv(e)n(qn)p FC(;)i(these)120 1462 y(are)16 b(the)g(co)q(e\016cien)o(ts)h(of)f(the)g(plane)h (equation)f(of)g Fv(plane)f FC(in)i(ey)o(e)f(co)q(ordinates)h(\(these) 120 1519 y(co)q(ordinates)f(are)f(those)g(that)f(w)o(ere)h(computed)h (when)f(the)h(plane)g(w)o(as)e(sp)q(eci\014ed\).)191 1579 y Fz(GetLigh)o(t)g FC(places)g(information)e(ab)q(out)h Fv(value)g FC(\(a)f(sym)o(b)q(olic)h(constan)o(t\))f(for)g Fv(light)120 1635 y FC(\(also)j(a)g(sym)o(b)q(olic)h(constan)o(t\))e (in)i Fv(data)p FC(.)21 b Fr(POSITION)13 b FC(or)i Fr(SPOT)p 1163 1635 14 2 v 15 w(DIRECTION)e FC(returns)i(v)m(al-)120 1691 y(ues)f(in)h(ey)o(e)e(co)q(ordinates)h(\(again,)f(these)h(are)f (the)h(co)q(ordinates)f(that)g(w)o(ere)g(computed)120 1748 y(when)j(the)f(p)q(osition)i(or)d(direction)j(w)o(as)d(sp)q (eci\014ed\).)191 1808 y Fz(GetMaterial)p FC(,)27 b Fz(GetT)l(exGen)p FC(,)f Fz(GetT)l(exEn)o(v)p FC(,)f(and)f Fz(GetT)l(exP)o(arameter)120 1864 y FC(are)11 b(similar)i(to)e Fz(GetLigh)o(t)p FC(,)i(placing)f (information)g(ab)q(out)f Fv(value)h FC(for)e(the)i(target)e(indi-)120 1920 y(cated)j(b)o(y)f(their)h(\014rst)e(argumen)o(t)h(in)o(to)g Fv(data)p FC(.)20 b(The)12 b Fv(fac)n(e)g FC(argumen)o(t)g(to)f Fz(GetMaterial)120 1977 y FC(m)o(ust)k(b)q(e)h(either)g Fr(FRONT)f FC(or)g Fr(BACK)p FC(,)f(indicating)j(the)f(fron)o(t)e(or)h (bac)o(k)g(material,)h(resp)q(ec-)120 2033 y(tiv)o(ely)l(.)30 b(The)18 b Fv(env)g FC(argumen)o(t)f(to)g Fz(GetT)l(exEn)o(v)h FC(m)o(ust)f(curren)o(tly)i(b)q(e)g Fr(TEXTURE)p 1526 2033 V 14 w(ENV)p FC(.)120 2090 y(The)d Fv(c)n(o)n(or)n(d)e FC(argumen)o(t)h(to)f Fz(GetT)l(exGen)h FC(m)o(ust)g(b)q(e)g(one)h(of)e Fr(S)p FC(,)h Fr(T)p FC(,)f Fr(R)p FC(,)h(or)f Fr(Q)p FC(.)h(F)l(or)f Fz(Get-)120 2146 y(T)l(exGen)p FC(,)20 b Fr(EYE)p 400 2146 V 15 w(LINEAR)e FC(co)q(e\016cien)o(ts)i(are)f (returned)g(in)h(the)g(ey)o(e)f(co)q(ordinates)g(that)120 2203 y(w)o(ere)c(computed)g(when)g(the)g(plane)g(w)o(as)f(sp)q (eci\014ed;)j Fr(OBJECT)p 1168 2203 V 14 w(LINEAR)d FC(co)q(e\016cien)o (ts)h(are)120 2259 y(returned)h(in)g(ob)s(ject)f(co)q(ordinates.)191 2319 y(F)l(or)24 b Fz(GetT)l(exP)o(arameter)f FC(and)i Fz(GetT)l(exLev)o(elP)o(arameter)p FC(,)g Fv(tar)n(get)f FC(m)o(ust)120 2375 y(curren)o(tly)29 b(b)q(e)g Fr(TEXTURE)p 560 2375 V 15 w(1D)e FC(or)h Fr(TEXTURE)p 869 2375 V 15 w(2D)p FC(,)f(indicating)j(the)f(curren)o(tly)g(b)q(ound)120 2432 y(one-dimensional)g(or)d(t)o(w)o(o-dimensional)h(texture)f(ob)s (ject,)i(or)d Fr(PROXY)p 1391 2432 V 15 w(TEXTURE)p 1560 2432 V 14 w(1D)120 2488 y FC(or)i Fr(PROXY)p 301 2488 V 15 w(TEXTURE)p 470 2488 V 14 w(2D)p FC(,)g(indicating)i(the)f (one-dimensional)i(or)d(t)o(w)o(o-dimensional)p eop %%Page: 146 155 146 154 bop 332 137 a FC(146)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)332 286 y FC(pro)o(xy)29 b(state)h(v)o(ector.)63 b Fv(value)30 b FC(is)g(a)g(sym)o(b)q(olic)h(v)m(alue)g(indicating)h(whic)o(h)e(tex-) 332 343 y(ture)39 b(parameter)f(is)i(to)f(b)q(e)g(obtained.)93 b(The)39 b Fv(lo)n(d)g FC(argumen)o(t)f(to)h Fz(Get-)332 399 y(T)l(exLev)o(elP)o(arameter)18 b FC(determines)i(whic)o(h)g(lev)o (el-of-detail's)h(state)e(is)g(returned.)332 456 y(If)35 b(the)h Fv(lo)n(d)e FC(argumen)o(t)h(is)g(less)h(than)f(zero)g(or)f(if) i(it)f(is)h(larger)e(than)h(the)332 512 y(maxim)o(um)j(allo)o(w)o(able) h(lev)o(el-of-detail)h(then)e(the)g(error)f Fr(INVALID)p 1609 512 14 2 v 14 w(VALUE)g FC(o)q(c-)332 569 y(curs.)29 b(Queries)20 b(of)d Fr(TEXTURE)p 834 569 V 15 w(RED)p 915 569 V 15 w(SIZE)p FC(,)g Fr(TEXTURE)p 1202 569 V 14 w(GREEN)p 1326 569 V 15 w(SIZE)p FC(,)g Fr(TEXTURE)p 1613 569 V 14 w(BLUE)p 1715 569 V 15 w(SIZE)p FC(,)332 625 y Fr(TEXTURE)p 489 625 V 14 w(ALPHA)p 613 625 V 15 w(SIZE)p FC(,)26 b Fr(TEXTURE)p 909 625 V 14 w(LUMINANCE)p 1121 625 V 14 w(SIZE)p FC(,)g(and)h Fr(TEXTURE)p 1516 625 V 14 w(INTENSITY)p 1728 625 V 14 w(SIZE)332 682 y FC(return)22 b(the)g(actual)g(resolutions)g(of)f(the)h(stored)f(image)h (arra)o(y)f(comp)q(onen)o(ts,)i(not)332 738 y(the)g(resolutions)h(sp)q (eci\014ed)h(when)f(the)f(image)g(arra)o(y)f(w)o(as)g(de\014ned.)45 b(Queries)25 b(of)332 795 y Fr(TEXTURE)p 489 795 V 14 w(WIDTH)p FC(,)9 b Fr(TEXTURE)p 789 795 V 14 w(HEIGHT)p FC(,)g(and)h Fr(TEXTURE)p 1194 795 V 15 w(BORDER)e FC(return)j(the)f (width,)h(heigh)o(t,)332 851 y(and)24 b(b)q(order)g(as)f(sp)q (eci\014ed)j(when)e(the)f(image)h(arra)o(y)e(w)o(as)h(created.)45 b(The)24 b(in)o(ter-)332 907 y(nal)f(format)e(of)h(the)g(image)h(arra)o (y)e(is)i(queried)g(as)f Fr(TEXTURE)p 1419 907 V 14 w(INTERNAL)p 1609 907 V 14 w(FORMAT)p FC(,)f(or)332 964 y(as)15 b Fr(TEXTURE)p 545 964 V 14 w(COMPONENTS)e FC(for)i(compatibilit)o(y)i (with)e(GL)g(v)o(ersion)h(1.0.)403 1024 y(F)l(or)f Fz(GetPixelMap)p FC(,)h(the)g Fv(map)g FC(m)o(ust)f(b)q(e)i(a)e(map)g(name)h(from)f(T)l (able)i(3.3.)j(F)l(or)332 1081 y Fz(GetMap)p FC(,)c Fv(map)g FC(m)o(ust)f(b)q(e)h(one)g(of)f(the)g(map)h(t)o(yp)q(es)f(describ)q(ed) j(in)e(section)g(5.1,)e(and)332 1137 y Fv(value)h FC(m)o(ust)g(b)q(e)h (one)f(of)g Fr(ORDER)p FC(,)f Fr(COEFF)p FC(,)f(or)i Fr(DOMAIN)p FC(.)403 1197 y Fz(GetT)l(exImage)g FC(is)g(used)h(to)f (obtain)g(texture)g(images.)446 1306 y Fw(void)57 b Fz(GetT)l(exImage)p FC(\()g Fw(enum)29 b Fv(tex)p Fw(,)j(int)d Fv(lo)n(d)p Fw(,)j(enum)c Fv(format)p Fw(,)514 1363 y(enum)15 b Fv(typ)n(e)p Fw(,)g(void)f Fv(*img)i FC(\))e Fw(;)332 1472 y FC(It)20 b(is)h(somewhat)e(di\013eren)o(t)h(from)g(the)g(other)f(get)h (commands;)i Fv(tex)e FC(is)h(a)e(sym)o(b)q(olic)332 1528 y(v)m(alue)j(indicating)h(whic)o(h)f(texture)f(is)g(to)g(b)q(e)g (obtained.)38 b Fr(TEXTURE)p 1532 1528 V 15 w(1D)20 b FC(indicates)j(a)332 1585 y(one-dimensional)18 b(texture,)d(while)j Fr(TEXTURE)p 1114 1585 V 14 w(2D)d FC(indicates)i(a)f(t)o(w)o (o-dimensional)g(tex-)332 1641 y(ture.)j Fv(lo)n(d)13 b FC(is)h(a)e(lev)o(el-of-detail)k(n)o(um)o(b)q(er,)d Fv(format)h FC(is)g(a)f(pixel)i(format)c(from)i(T)l(able)h(3.5,)332 1698 y Fv(typ)n(e)d FC(is)h(a)f(pixel)i(t)o(yp)q(e)f(from)f(T)l(able)h (3.4,)f(and)g Fv(img)g FC(is)h(a)f(p)q(oin)o(ter)h(to)f(a)g(blo)q(c)o (k)h(of)f(memory)l(.)332 1754 y Fz(GetT)l(exImage)19 b FC(obtains)f(comp)q(onen)o(t)h(groups)g(from)f(a)g(texture)g(image)h (with)g(the)332 1811 y(indicated)d(lev)o(el-of-detail.)23 b(The)14 b(comp)q(onen)o(ts)h(are)f(assigned)i(among)d(R,)i(G,)f(B,)g (and)332 1867 y(A)h(according)h(to)f(T)l(able)h(6.1,)e(starting)h(with) g(the)h(\014rst)f(group)g(in)h(the)f(\014rst)g(ro)o(w,)f(and)332 1924 y(con)o(tin)o(uing)h(b)o(y)e(obtaining)i(groups)e(in)h(order)f (from)g(eac)o(h)h(ro)o(w)e(and)i(pro)q(ceeding)h(from)332 1980 y(the)g(\014rst)g(ro)o(w)f(to)h(the)g(last.)20 b(These)15 b(groups)g(are)g(then)g(pac)o(k)o(ed)h(and)f(placed)h(in)g(clien)o(t) 332 2037 y(memory)h(as)g(describ)q(ed)j(in)e(section)g(4.3.2)e(under)i Fz(ReadPixels)p FC(.)27 b(The)18 b(ro)o(w)f(length)332 2093 y(and)e(n)o(um)o(b)q(er)h(of)f(ro)o(ws)f(is)h(determined)i(b)o(y)e (the)g(size)h(of)f(the)g(texture)g(image)g(\(includ-)332 2149 y(ing)j(an)o(y)e(b)q(orders\).)26 b(Calling)18 b Fz(GetT)l(exImage)f FC(with)h Fv(lo)n(d)e FC(less)i(than)f(zero)g(or)g (larger)332 2206 y(than)f(the)g(maxim)o(um)g(allo)o(w)o(able)h(causes)f (the)g(error)f Fr(INVALID)p 1417 2206 V 15 w(VALUE)p FC(.)f(Calling)k Fz(Get-)332 2262 y(T)l(exImage)e FC(with)i Fv(format)f FC(of)g Fr(COLOR)p 992 2262 V 14 w(INDEX)p FC(,)f Fr(STENCIL)p 1299 2262 V 14 w(INDEX)p FC(,)f(or)i Fr(DEPTH)p 1619 2262 V 14 w(COMPONENT)332 2319 y FC(causes)e(the)h (error)e Fr(INVALID)p 818 2319 V 14 w(ENUM)p FC(.)403 2379 y(The)h(command)446 2488 y Fw(boolean)29 b Fz(IsT)l(exture)p FC(\()g Fw(uint)15 b Fv(textur)n(e)g FC(\))g Fw(;)p eop %%Page: 147 156 147 155 bop 1547 137 a FC(147)p 420 242 896 2 v 419 299 2 57 v 457 282 a(Base)15 b(In)o(ternal)h(F)l(ormat)p 917 299 V 68 w(R)p 1017 299 V 66 w(G)p 1117 299 V 65 w(B)p 1216 299 V 66 w(A)p 1315 299 V 420 301 896 2 v 420 309 V 419 365 2 57 v 614 348 a Fr(ALPHA)p 917 365 V 232 w FC(0)p 1017 365 V 77 w(0)p 1117 365 V 77 w(0)p 1216 365 V 63 w Fy(A)1276 355 y Fu(t)p 1315 365 V 420 367 896 2 v 419 423 2 57 v 507 406 a Fr(LUMINANCE)d FC(\(or)h Fr(1)p FC(\))p 917 423 V 114 w Fy(L)976 413 y Fu(t)p 1017 423 V 1056 406 a FC(0)p 1117 423 V 77 w(0)p 1216 423 V 76 w(1)p 1315 423 V 420 425 896 2 v 419 482 2 57 v 445 465 a Fr(LUMINANCE)p 646 465 14 2 v 13 w(ALPHA)g FC(\(or)h Fr(2)p FC(\))p 917 482 2 57 v 51 w Fy(L)976 472 y Fu(t)p 1017 482 V 1056 465 a FC(0)p 1117 482 V 77 w(0)p 1216 482 V 63 w Fy(A)1276 472 y Fu(t)p 1315 482 V 420 483 896 2 v 419 540 2 57 v 571 523 a Fr(INTENSITY)p 917 540 V 181 w Fy(I)970 530 y Fu(t)p 1017 540 V 1056 523 a FC(0)p 1117 540 V 77 w(0)p 1216 540 V 76 w(1)p 1315 540 V 420 541 896 2 v 419 598 2 57 v 572 581 a Fr(RGB)g FC(\(or)f Fr(3)p FC(\))p 917 598 V 177 w Fy(R)978 588 y Fu(t)p 1017 598 V 1042 581 a Fy(G)1078 588 y Fu(t)p 1117 598 V 1143 581 a Fy(B)1177 588 y Fu(t)p 1216 598 V 1255 581 a FC(1)p 1315 598 V 420 599 896 2 v 419 656 2 57 v 561 639 a Fr(RGBA)h FC(\(or)f Fr(4)p FC(\))p 917 656 V 166 w Fy(R)978 646 y Fu(t)p 1017 656 V 1042 639 a Fy(G)1078 646 y Fu(t)p 1117 656 V 1143 639 a Fy(B)1177 646 y Fu(t)p 1216 656 V 1242 639 a Fy(A)1276 646 y Fu(t)p 1315 656 V 420 658 896 2 v 120 785 a FC(T)l(able)21 b(6.1:)28 b(T)l(exture)20 b(return)f(v)m(alues.)35 b Fy(R)869 792 y Fu(t)883 785 y FC(,)20 b Fy(G)952 792 y Fu(t)967 785 y FC(,)g Fy(B)1034 792 y Fu(t)1050 785 y FC(,)g Fy(A)1117 792 y Fu(t)1132 785 y FC(,)g Fy(L)1196 792 y Fu(t)1211 785 y FC(,)g(and)g Fy(I)1357 792 y Fu(t)1392 785 y FC(are)f(texture)120 841 y(arra)o(y)14 b(v)m(alues)j(that)d(are)h(assigned)h(to)e(pixel)j(v) m(alues)g(R,)e(G,)f(B,)h(and)h(A.)120 977 y(returns)d Fr(TRUE)f FC(if)h Fv(textur)n(e)f FC(is)h(the)g(name)g(of)f(a)g (texture)g(ob)s(ject.)19 b(If)13 b Fv(textur)n(e)f FC(is)i(zero,)e(or)g (is)120 1033 y(a)f(non-zero)h(v)m(alue)h(that)d(is)i(not)f(the)g(name)h (of)f(a)g(texture)g(ob)s(ject,)g(or)g(if)h(an)f(error)g(condi-)120 1090 y(tion)k(o)q(ccurs,)g Fz(IsT)l(exture)f FC(returns)g Fr(FALSE)p FC(.)g(A)g(name)h(returned)g(b)o(y)g Fz(GenT)l(extures)p FC(,)120 1146 y(but)h(not)f(y)o(et)f(b)q(ound,)i(is)g(not)f(the)g(name) g(of)g(a)g(texture)g(ob)s(ject.)191 1203 y(The)g(command)234 1295 y Fw(void)30 b Fz(GetP)o(olygonStipple)p FC(\()h Fw(void)15 b Fv(*p)n(attern)g FC(\))g Fw(;)120 1387 y FC(obtains)i(the)f(p)q(olygon)h(stipple.)24 b(The)17 b(pattern)e(is)i(pac)o(k)o(ed)f(in)o(to)h(memory)e(according)120 1443 y(to)f(the)f(pro)q(cedure)i(giv)o(en)g(in)f(section)h(4.3.2)d(for) h Fz(ReadPixels)p FC(;)h(it)g(is)h(as)e(if)i(the)e Fv(height)120 1500 y FC(and)20 b Fv(width)g FC(passed)g(to)f(that)f(command)i(w)o (ere)f(b)q(oth)g(equal)i(to)e(32,)g(the)h Fv(typ)n(e)f FC(w)o(ere)120 1556 y Fr(BITMAP)p FC(,)14 b(and)h(the)h Fv(format)g FC(w)o(ere)f Fr(COLOR)p 811 1556 14 2 v 14 w(INDEX)p FC(.)191 1612 y(The)g(command)234 1704 y Fw(void)30 b Fz(GetP)o(oin)o(terv)p FC(\()f Fw(enum)15 b Fv(pname)p Fw(,)g(void)f Fv(**p)n(ar)n(ams)i FC(\))f Fw(;)120 1796 y FC(obtains)22 b(the)f(p)q(oin)o(ter)g(or)g(p)q(oin)o(ters)h(named)f Fv(pname)g FC(in)h(the)f(arra)o(y)f Fv(p)n(ar)n(ams)p FC(.)37 b(The)120 1853 y(p)q(ossible)245 b(v)m(alues)g(for)e Fv(pname)g FC(are)120 1909 y Fr(SELECTION)p 321 1909 V 14 w(BUFFER)p 467 1909 V 15 w(POINTER)p FC(,)14 b Fr(FEEDBACK)p 839 1909 V 14 w(BUFFER)p 985 1909 V 15 w(POINTER)p FC(,)g Fr(VERTEX)p 1313 1909 V 15 w(ARRAY)p 1438 1909 V 15 w(POINTER)p FC(,)120 1966 y Fr(NORMAL)p 255 1966 V 15 w(ARRAY)p 380 1966 V 14 w(POINTER)p FC(,)113 b Fr(COLOR)p 784 1966 V 15 w(ARRAY)p 909 1966 V 15 w(POINTER)p FC(,)f Fr(INDEX)p 1313 1966 V 15 w(ARRAY)p 1438 1966 V 15 w(POINTER)p FC(,)120 2022 y Fr(TEXTURE)p 277 2022 V 15 w(COORD)p 402 2022 V 14 w(ARRAY)p 526 2022 V 15 w(POINTER)p FC(,)14 b(and)i Fr(EDGE)p 899 2022 V 15 w(FLAG)p 1002 2022 V 15 w(ARRAY)p 1127 2022 V 15 w(POINTER)p FC(.)e(Eac)o(h)i(returns)g(a)120 2079 y(single)h(p)q(oin)o(ter)f(v)m(alue.)191 2135 y(Finally)l(,)234 2227 y Fw(ubyte)30 b Fz(*GetString)p FC(\()h Fw(enum)14 b Fv(name)h FC(\))g Fw(;)120 2319 y FC(returns)20 b(a)f(p)q(oin)o(ter)h (to)g(a)f(static)g(string)h(describing)i(some)d(asp)q(ect)h(of)f(the)h (curren)o(t)120 2375 y(GL)13 b(connection.)20 b(The)13 b(p)q(ossible)i(v)m(alues)f(for)e Fv(name)g FC(are)h Fr(VENDOR)p FC(,)e Fr(RENDERER)p FC(,)g Fr(VERSION)p FC(,)120 2432 y(and)18 b Fr(EXTENSIONS)p FC(.)d(The)j(format)f(of)g (the)g Fr(RENDERER)f FC(and)i Fr(VERSION)e FC(strings)i(is)g(imple-)120 2488 y(men)o(tation)13 b(dep)q(enden)o(t.)21 b(The)13 b Fr(EXTENSIONS)e FC(string)i(con)o(tains)g(a)g(space)g(separated)g (list)p eop %%Page: 148 157 148 156 bop 332 137 a FC(148)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)332 286 y FC(of)20 b(extension)h(names)f(\(The)f(extension)i(names)f(themselv)o (es)h(do)f(not)g(con)o(tain)g(an)o(y)332 343 y(spaces\);)15 b(the)g Fr(VERSION)f FC(string)h(is)h(laid)g(out)f(as)g(follo)o(ws:)446 428 y Fy(<)p FC(v)o(ersion)g(n)o(um)o(b)q(er)p Fy(><)p FC(space)p Fy(><)p FC(v)o(endor-sp)q(ec)q(i\014c)k(information)p Fy(>)332 512 y FC(The)f(v)o(ersion)g(n)o(um)o(b)q(er)f(is)h(either)h (of)e(the)g(form)35 b Fv(major)p 1313 512 14 2 v 17 w(numb)n(er.minor)p 1609 512 V 17 w(numb)n(er)17 b FC(or)332 569 y Fv(major)p 451 569 V 18 w(numb)n(er.minor)p 748 569 V 16 w(numb)n(er.r)n(ele)n (ase)p 1056 569 V 15 w(numb)n(er)p FC(,)24 b(where)f(the)f(n)o(um)o(b)q (ers)h(all)h(ha)o(v)o(e)332 625 y(one)14 b(or)g(more)g(digits.)20 b(The)15 b(v)o(endor)f(sp)q(eci\014c)i(information)e(is)h(optional.)20 b(Ho)o(w)o(ev)o(er,)13 b(if)332 682 y(it)j(is)h(presen)o(t)f(then)g(it) g(p)q(ertains)h(to)f(the)g(serv)o(er)f(and)h(the)h(format)d(and)i(con)o (ten)o(ts)g(are)332 738 y(implemen)o(tation)h(dep)q(enden)o(t.)403 795 y Fz(GetString)e FC(returns)g(the)f(v)o(ersion)h(n)o(um)o(b)q(er)g (\(returned)g(in)g(the)g Fr(VERSION)e FC(string\))332 851 y(and)20 b(the)f(extension)h(names)f(\(returned)h(in)g(the)f Fr(EXTENSIONS)f FC(string\))h(that)f(can)i(b)q(e)332 907 y(supp)q(orted)13 b(on)f(the)h(connection.)20 b(Th)o(us,)12 b(if)h(the)g(clien)o(t)g(and)g(serv)o(er)f(supp)q(ort)g(di\013eren)o(t) 332 964 y(v)o(ersions)20 b(and/or)g(extensions,)h(a)f(compatible)h(v)o (ersion)f(and)g(list)h(of)e(extensions)i(is)332 1020 y(returned.)403 1077 y(The)15 b(tables)h(on)f(the)g(follo)o(wing)h (pages)f(indicate)i(whic)o(h)f(state)f(v)m(ariables)h(are)f(ob-)332 1133 y(tained)e(with)f(what)g(commands.)19 b(State)11 b(v)m(ariables)j(that)d(can)h(b)q(e)h(obtained)g(using)g(an)o(y)332 1190 y(of)18 b Fz(GetBo)q(olean)o(v)p FC(,)j Fz(GetIn)o(tegerv)p FC(,)d Fz(GetFloatv)p FC(,)i(or)f Fz(GetDoublev)g FC(are)f(listed)332 1246 y(with)f(just)g(one)g(of)f(these)h(commands)g({)f(the)h(one)g (that)f(is)h(most)f(appropriate)h(giv)o(en)332 1303 y(the)i(t)o(yp)q(e) g(of)f(the)h(data)g(to)f(b)q(e)h(returned.)32 b(These)19 b(state)f(v)m(ariables)i(cannot)f(b)q(e)g(ob-)332 1359 y(tained)e(using)g Fz(IsEnabled)p FC(.)23 b(Ho)o(w)o(ev)o(er,)16 b(state)f(v)m(ariables)i(for)f(whic)o(h)h Fz(IsEnabled)g FC(is)332 1416 y(listed)22 b(as)e(the)h(query)g(command)g(can)g(also)f (b)q(e)i(obtained)f(using)g Fz(GetBo)q(olean)o(v)p FC(,)332 1472 y Fz(GetIn)o(tegerv)p FC(,)f Fz(GetFloatv)p FC(,)h(and)f Fz(GetDoublev)p FC(.)34 b(State)19 b(v)m(ariables)i(for)e(whic)o(h)332 1528 y(an)o(y)f(other)f(command)h(is)g(listed)h(as)e(the)h(query)g (command)g(can)g(b)q(e)g(obtained)h(only)332 1585 y(b)o(y)c(using)h (that)f(command.)403 1641 y(Unless)d(otherwise)f(indicated,)j(m)o (ulti-v)m(alued)f(state)e(v)m(ariables)h(return)f(their)h(m)o(ul-)332 1698 y(tiple)19 b(v)m(alues)g(in)f(the)f(same)h(order)f(as)g(they)g (are)h(giv)o(en)f(as)h(argumen)o(ts)e(to)h(the)h(com-)332 1754 y(mands)e(that)g(set)g(them.)23 b(F)l(or)16 b(instance,)h(the)g(t) o(w)o(o)e Fz(DepthRange)i FC(parameters)f(are)332 1811 y(returned)h(in)h(the)f(order)f Fv(n)h FC(follo)o(w)o(ed)g(b)o(y)g Fv(f)p FC(.)24 b(Similarly)l(,)19 b(p)q(oin)o(ts)f(for)e(ev)m(aluator)h (maps)332 1867 y(are)c(returned)g(in)h(the)f(order)g(that)f(they)h(app) q(eared)h(when)f(passed)h(to)e Fz(Map1)p FC(.)19 b Fz(Map2)332 1924 y FC(returns)f Fz(R)531 1931 y Fu(ij)579 1924 y FC(in)h(the)f([\()p Fy(uor)q(der)p FC(\))p Fy(i)11 b FC(+)h Fy(j)s FC(]th)17 b(blo)q(c)o(k)h(of)g(v)m(alues)h(\(see)f(page)f (130)g(for)h Fy(i)p FC(,)g Fy(j)s FC(,)332 1980 y Fv(uor)n(der)p FC(,)e(and)f Fz(R)615 1987 y Fu(ij)661 1980 y FC(\).)403 2037 y(Besides)20 b(pro)o(viding)g(a)f(means)g(to)g(obtain)g(the)h(v)m (alues)g(of)f(state)f(v)m(ariables,)j(the)332 2093 y(GL)h(also)g(pro)o (vides)g(a)g(means)g(to)f(sa)o(v)o(e)g(and)h(restore)f(groups)h(of)f (state)g(v)m(ariables.)332 2149 y(The)12 b Fz(PushA)o(ttrib)p FC(,)e Fz(PushClien)o(tA)o(ttrib)p FC(,)i Fz(P)o(opA)o(ttrib)e FC(and)i Fz(P)o(opClien)o(tA)o(ttrib)332 2206 y FC(commands)j(are)g (used)h(for)e(this)i(purp)q(ose.)k(The)c(commands)446 2291 y Fw(void)29 b Fz(PushA)o(ttrib)p FC(\()h Fw(bitfield)14 b Fv(mask)h FC(\))g Fw(;)446 2347 y(void)29 b Fz(PushClien)o(tA)o (ttrib)p FC(\()h Fw(bitfield)14 b Fv(mask)h FC(\))g Fw(;)332 2432 y FC(tak)o(e)j(a)h(bit)o(wise)h(OR)g(of)f(sym)o(b)q(olic)h (constan)o(ts)e(indicating)j(whic)o(h)f(groups)f(of)f(state)332 2488 y(v)m(ariables)j(to)e(push)h(on)o(to)e(an)h(attribute)h(stac)o(k.) 31 b Fz(PushA)o(ttrib)19 b FC(uses)h(a)f(serv)o(er)g(at-)p eop %%Page: 149 158 149 157 bop 1547 137 a FC(149)120 286 y(tribute)17 b(stac)o(k)f(while)i Fz(PushClien)o(tA)o(ttrib)f FC(uses)f(a)h(clien)o(t)g(attribute)g(stac) o(k.)23 b(Eac)o(h)120 343 y(constan)o(t)14 b(refers)h(to)f(a)g(group)g (of)g(state)g(v)m(ariables.)21 b(The)15 b(classi\014cation)h(of)e(eac)o (h)h(v)m(ari-)120 399 y(able)h(in)o(to)f(a)f(group)g(is)i(indicated)g (in)g(the)f(follo)o(wing)g(tables)g(of)g(state)e(v)m(ariables.)21 b(The)120 456 y(error)15 b Fr(STACK)p 345 456 14 2 v 15 w(OVERFLOW)f FC(is)i(generated)f(if)h Fz(PushA)o(ttrib)f FC(or)g Fz(PushClien)o(tA)o(ttrib)g FC(is)120 512 y(executed)j(while)g (the)e(corresp)q(onding)h(stac)o(k)f(depth)h(is)g Fr(MAX)p 1166 512 V 15 w(ATTRIB)p 1313 512 V 14 w(STACK)p 1437 512 V 15 w(DEPTH)e FC(or)120 569 y Fr(MAX)p 189 569 V 15 w(CLIENT)p 336 569 V 15 w(ATTRIB)p 483 569 V 14 w(STACK)p 607 569 V 15 w(DEPTH)f FC(resp)q(ectiv)o(ely)l(.)22 b(The)15 b(commands)234 648 y Fw(void)30 b Fz(P)o(opA)o(ttrib)p FC(\()f Fw(void)38 b FC(\))15 b Fw(;)234 704 y(void)30 b Fz(P)o(opClien)o(tA)o(ttrib)p FC(\()g Fw(void)38 b FC(\))15 b Fw(;)120 783 y FC(reset)j(the)f(v)m(alues)i(of)e(those)h (state)e(v)m(ariables)j(that)e(w)o(ere)h(sa)o(v)o(ed)f(with)h(the)f (last)h(cor-)120 840 y(resp)q(onding)23 b Fz(PushA)o(ttrib)d FC(or)h Fz(P)o(opClien)o(tA)o(ttrib)p FC(.)38 b(Those)22 b(not)e(sa)o(v)o(ed)h(remain)120 896 y(unc)o(hanged.)h(The)16 b(error)f Fr(STACK)p 684 896 V 15 w(UNDERFLOW)e FC(is)j(generated)g(if) g Fz(P)o(opA)o(ttrib)f FC(or)g Fz(P)o(op-)120 953 y(Clien)o(tA)o(ttrib) h FC(is)g(executed)g(while)h(the)e(resp)q(ectiv)o(e)h(stac)o(k)e(is)i (empt)o(y)l(.)191 1009 y(T)l(able)g(6.2)e(sho)o(ws)h(the)g(attribute)g (groups)g(with)h(their)f(corresp)q(onding)i(sym)o(b)q(olic)120 1065 y(constan)o(t)e(names)g(and)g(stac)o(ks.)191 1122 y(When)g Fz(PushA)o(ttrib)e FC(is)i(called)i(with)d Fr(TEXTURE)p 1028 1122 V 15 w(BIT)f FC(set,)h(the)h(priorities,)g(b)q(order)120 1178 y(colors,)e(\014lter)g(mo)q(des,)g(and)g(wrap)f(mo)q(des)h(of)f (the)h(curren)o(tly)g(b)q(ound)g(texture)g(ob)s(jects,)120 1235 y(as)20 b(w)o(ell)h(as)e(the)h(curren)o(t)g(texture)g(bindings)i (and)e(enables,)i(are)e(pushed)h(on)o(to)e(the)120 1291 y(attribute)k(stac)o(k.)41 b(\(Un)o(b)q(ound)24 b(texture)e(ob)s(jects) g(are)h(not)f(pushed)i(or)e(restored.\))120 1348 y(When)h(an)g (attribute)f(set)g(that)g(includes)j(texture)d(information)h(is)g(p)q (opp)q(ed,)j(the)120 1404 y(bindings)13 b(and)e(enables)h(are)e (\014rst)g(restored)h(to)f(their)h(pushed)h(v)m(alues,)g(then)f(the)g (b)q(ound)120 1461 y(texture)16 b(ob)s(jects')g(priorities,)h(b)q (order)f(colors,)g(\014lter)h(mo)q(des,)f(and)h(wrap)f(mo)q(des)g(are) 120 1517 y(restored)f(to)g(their)g(pushed)i(v)m(alues.)191 1574 y(The)12 b(depth)h(of)e(eac)o(h)i(attribute)e(stac)o(k)h(is)g (implemen)o(tation)i(dep)q(enden)o(t)f(but)f(m)o(ust)120 1630 y(b)q(e)17 b(at)e(least)h(16.)21 b(The)16 b(state)f(required)i (for)e(eac)o(h)h(attribute)g(stac)o(k)f(is)h(p)q(oten)o(tially)h(16)120 1686 y(copies)g(of)d(eac)o(h)i(state)e(v)m(ariable,)j(16)d(masks)h (indicating)i(whic)o(h)g(groups)e(of)f(v)m(ariables)120 1743 y(are)h(stored)f(in)i(eac)o(h)f(stac)o(k)f(en)o(try)l(,)h(and)g (an)g(attribute)g(stac)o(k)f(p)q(oin)o(ter.)20 b(In)c(the)f(initial)120 1799 y(state,)f(b)q(oth)i(attribute)f(stac)o(ks)f(are)h(empt)o(y)l(.) 191 1856 y(In)g(the)f(tables)h(that)e(follo)o(w,)i(a)f(t)o(yp)q(e)g(is) h(indicated)h(for)d(eac)o(h)i(v)m(ariable.)21 b(T)l(able)15 b(6.3)120 1912 y(explains)k(these)f(t)o(yp)q(es.)26 b(The)18 b(t)o(yp)q(e)f(actually)h(iden)o(ti\014es)h(all)f(state)f(asso)q (ciated)g(with)120 1969 y(the)22 b(indicated)h(description;)i(in)d (certain)f(cases)h(only)f(a)g(p)q(ortion)h(of)e(this)i(state)e(is)120 2025 y(returned.)30 b(This)19 b(is)g(the)g(case)f(with)h(all)h (matrices,)e(where)h(only)g(the)g(top)f(en)o(try)g(on)120 2082 y(the)e(stac)o(k)e(is)i(returned;)f(with)g(clip)i(planes,)f(where) f(only)h(the)f(selected)h(clip)h(plane)f(is)120 2138 y(returned,)e(with)e(parameters)g(describing)j(ligh)o(ts,)e(where)g (only)g(the)g(v)m(alue)g(p)q(ertaining)120 2195 y(to)22 b(the)h(selected)h(ligh)o(t)f(is)g(returned;)k(with)c(textures,)h (where)f(only)g(the)f(selected)120 2251 y(texture)c(or)f(texture)g (parameter)f(is)i(returned;)h(and)f(with)f(ev)m(aluator)h(maps,)f (where)120 2307 y(only)i(the)g(selected)h(map)e(is)h(returned.)30 b(Finally)l(,)20 b(a)e(\\{")g(in)h(the)g(attribute)f(column)120 2364 y(indicates)13 b(that)e(the)g(indicated)j(v)m(alue)e(is)g(not)f (included)j(in)e(an)o(y)f(attribute)h(group)f(\(and)120 2420 y(th)o(us)k(can)g(not)g(b)q(e)g(pushed)h(or)f(p)q(opp)q(ed)h(with) f Fz(PushA)o(ttrib)p FC(,)f Fz(PushClien)o(tA)o(ttrib)p FC(,)120 2477 y Fz(P)o(opA)o(ttrib)p FC(,)g(or)h Fz(P)o(opClien)o(tA)o (ttrib)p FC(\).)p eop %%Page: 150 159 150 158 bop 332 137 a FC(150)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)p 533 512 1093 2 v 532 568 2 57 v 562 551 a FC(Stac)o(k)p 699 568 V 112 w(A)o(ttribute)p 1052 568 V 279 w(Constan)o(t)p 1625 568 V 533 570 1093 2 v 533 572 V 532 628 2 57 v 558 611 a(serv)o(er)p 699 628 V 73 w(accum-bu\013er)p 1052 628 V 167 w Fr(ACCUM)p 1284 611 14 2 v 14 w(BUFFER)p 1430 611 V 15 w(BIT)p 1625 628 2 57 v 533 630 1093 2 v 532 686 2 57 v 558 669 a FC(serv)o(er)p 699 686 V 88 w(color-bu\013er)p 1052 686 V 182 w Fr(COLOR)p 1284 669 14 2 v 14 w(BUFFER)p 1430 669 V 15 w(BIT)p 1625 686 2 57 v 533 688 1093 2 v 532 744 2 57 v 558 727 a FC(serv)o(er)p 699 744 V 130 w(curren)o(t)p 1052 744 V 274 w Fr(CURRENT)p 1379 727 14 2 v 15 w(BIT)p 1625 744 2 57 v 533 746 1093 2 v 532 803 2 57 v 558 786 a FC(serv)o(er)p 699 803 V 79 w(depth-bu\013er)p 1052 803 V 174 w Fr(DEPTH)p 1284 786 14 2 v 14 w(BUFFER)p 1430 786 V 15 w(BIT)p 1625 803 2 57 v 533 804 1093 2 v 532 861 2 57 v 558 844 a FC(serv)o(er)p 699 861 V 138 w(enable)p 1052 861 V 295 w Fr(ENABLE)p 1368 844 14 2 v 15 w(BIT)p 1625 861 2 57 v 533 862 1093 2 v 532 919 2 57 v 558 902 a FC(serv)o(er)p 699 919 V 163 w(ev)m(al)p 1052 919 V 341 w Fr(EVAL)p 1346 902 14 2 v 15 w(BIT)p 1625 919 2 57 v 533 920 1093 2 v 532 977 2 57 v 558 960 a FC(serv)o(er)p 699 977 V 171 w(fog)p 1052 977 V 360 w Fr(FOG)p 1335 960 14 2 v 15 w(BIT)p 1625 977 2 57 v 533 979 1093 2 v 532 1035 2 57 v 558 1018 a FC(serv)o(er)p 699 1035 V 161 w(hin)o(t)p 1052 1035 V 340 w Fr(HINT)p 1346 1018 14 2 v 15 w(BIT)p 1625 1035 2 57 v 533 1037 1093 2 v 532 1093 2 57 v 558 1076 a FC(serv)o(er)p 699 1093 V 126 w(ligh)o(ting)p 1052 1093 V 261 w Fr(LIGHTING)p 1390 1076 14 2 v 14 w(BIT)p 1625 1093 2 57 v 533 1095 1093 2 v 532 1151 2 57 v 558 1134 a FC(serv)o(er)p 699 1151 V 166 w(line)p 1052 1151 V 345 w Fr(LINE)p 1346 1134 14 2 v 15 w(BIT)p 1625 1151 2 57 v 533 1153 1093 2 v 532 1209 2 57 v 558 1192 a FC(serv)o(er)p 699 1209 V 171 w(list)p 1052 1209 V 349 w Fr(LIST)p 1346 1192 14 2 v 15 w(BIT)p 1625 1209 2 57 v 533 1211 1093 2 v 532 1267 2 57 v 558 1251 a FC(serv)o(er)p 699 1267 V 154 w(pixel)p 1052 1267 V 271 w Fr(PIXEL)p 1306 1251 14 2 v 14 w(MODE)p 1408 1251 V 15 w(BIT)p 1625 1267 2 57 v 533 1269 1093 2 v 532 1326 2 57 v 558 1309 a FC(serv)o(er)p 699 1326 V 149 w(p)q(oin)o(t)p 1052 1326 V 317 w Fr(POINT)p 1357 1309 14 2 v 15 w(BIT)p 1625 1326 2 57 v 533 1327 1093 2 v 532 1384 2 57 v 558 1367 a FC(serv)o(er)p 699 1384 V 123 w(p)q(olygon)p 1052 1384 V 268 w Fr(POLYGON)p 1379 1367 14 2 v 15 w(BIT)p 1625 1384 2 57 v 533 1385 1093 2 v 532 1442 2 57 v 558 1425 a FC(serv)o(er)p 699 1442 V 49 w(p)q(olygon-stipple)p 1052 1442 V 113 w Fr(POLYGON)p 1295 1425 14 2 v 14 w(STIPPLE)p 1463 1425 V 15 w(BIT)p 1625 1442 2 57 v 533 1443 1093 2 v 532 1500 2 57 v 558 1483 a FC(serv)o(er)p 699 1500 V 138 w(scissor)p 1052 1500 V 282 w Fr(SCISSOR)p 1379 1483 14 2 v 15 w(BIT)p 1625 1500 2 57 v 533 1502 1093 2 v 532 1558 2 57 v 558 1541 a FC(serv)o(er)p 699 1558 V 73 w(stencil-bu\013er)p 1052 1558 V 146 w Fr(STENCIL)p 1306 1541 14 2 v 14 w(BUFFER)p 1452 1541 V 15 w(BIT)p 1625 1558 2 57 v 533 1560 1093 2 v 532 1616 2 57 v 558 1599 a FC(serv)o(er)p 699 1616 V 130 w(texture)p 1052 1616 V 274 w Fr(TEXTURE)p 1379 1599 14 2 v 15 w(BIT)p 1625 1616 2 57 v 533 1618 1093 2 v 532 1674 2 57 v 558 1657 a FC(serv)o(er)p 699 1674 V 104 w(transform)p 1052 1674 V 226 w Fr(TRANSFORM)p 1401 1657 14 2 v 14 w(BIT)p 1625 1674 2 57 v 533 1676 1093 2 v 532 1732 2 57 v 558 1715 a FC(serv)o(er)p 699 1732 V 114 w(viewp)q(ort)p 1052 1732 V 248 w Fr(VIEWPORT)p 1390 1715 14 2 v 14 w(BIT)p 1625 1732 2 57 v 533 1734 1093 2 v 532 1791 2 57 v 558 1774 a FC(serv)o(er)p 699 1791 V 1052 1791 V 507 w Fr(ALL)p 1251 1774 14 2 v 15 w(ATTRIB)p 1398 1774 V 14 w(BITS)p 1625 1791 2 57 v 533 1792 1093 2 v 532 1849 2 57 v 563 1832 a FC(clien)o(t)p 699 1849 V 86 w(v)o(ertex-arra)o(y)p 1052 1849 V 100 w Fr(CLIENT)p 1233 1832 14 2 v 14 w(VERTEX)p 1379 1832 V 15 w(ARRAY)p 1504 1832 V 14 w(BIT)p 1625 1849 2 57 v 533 1850 1093 2 v 532 1907 2 57 v 563 1890 a FC(clien)o(t)p 699 1907 V 104 w(pixel-store)p 1052 1907 V 131 w Fr(CLIENT)p 1244 1890 14 2 v 14 w(PIXEL)p 1368 1890 V 15 w(STORE)p 1493 1890 V 14 w(BIT)p 1625 1907 2 57 v 533 1908 1093 2 v 532 1965 2 57 v 563 1948 a FC(clien)o(t)p 699 1965 V 153 w(select)p 1052 1965 V 148 w Fr(can't)20 b(be)i(pushed)e(or)i (pop'd)p 1625 1965 V 533 1967 1093 2 v 532 2023 2 57 v 563 2006 a FC(clien)o(t)p 699 2023 V 122 w(feedbac)o(k)p 1052 2023 V 117 w Fr(can't)e(be)i(pushed)e(or)i(pop'd)p 1625 2023 V 533 2025 1093 2 v 532 2081 2 57 v 563 2064 a FC(clien)o(t)p 699 2081 V 1052 2081 V 440 w Fr(ALL)p 1178 2064 14 2 v 15 w(CLIENT)p 1325 2064 V 14 w(ATTRIB)p 1471 2064 V 14 w(BITS)p 1625 2081 2 57 v 533 2083 1093 2 v 804 2210 a FC(T)l(able)16 b(6.2:)j(A)o(ttribute)c(groups)p eop %%Page: 151 160 151 159 bop 1547 137 a FC(151)p 264 597 1207 2 v 263 654 2 57 v 289 637 a(T)o(yp)q(e)16 b(co)q(de)p 520 654 V 50 w(Explanation)p 1470 654 V 264 655 1207 2 v 264 664 V 263 720 2 57 v 374 703 a Fy(B)p 520 720 V 138 w FC(Bo)q(olean)p 1470 720 V 264 722 1207 2 v 263 778 2 57 v 375 761 a Fy(C)p 520 778 V 138 w FC(Color)f(\(\015oating-p)q(oin)o (t)g(R,)h(G,)e(B,)h(and)g(A)h(v)m(alues\))p 1470 778 V 264 780 1207 2 v 263 836 2 57 v 363 820 a Fy(C)s(I)p 520 836 V 127 w FC(Color)f(index)h(\(\015oating-p)q(oin)o(t)g(index)g (v)m(alue\))p 1470 836 V 264 838 1207 2 v 263 951 2 113 v 376 878 a Fy(T)p 520 951 V 143 w FC(T)l(exture)j(co)q(ordinates)g (\(\015oating-p)q(oin)o(t)g Fy(s)p FC(,)h Fy(t)p FC(,)f Fy(r)q FC(,)g Fy(q)546 934 y FC(v)m(alues\))p 1470 951 V 264 953 1207 2 v 263 1066 2 113 v 372 992 a Fy(N)p 520 1066 V 137 w FC(Normal)27 b(co)q(ordinates)h(\(\015oating-p)q(oin)o (t)f Fy(x)p FC(,)j Fy(y)r FC(,)g Fy(z)546 1049 y FC(v)m(alues\))p 1470 1066 V 264 1067 1207 2 v 263 1124 2 57 v 374 1107 a Fy(V)p 520 1124 V 145 w FC(V)l(ertex,)15 b(including)j(asso)q(ciated) d(data)p 1470 1124 V 264 1125 1207 2 v 263 1182 2 57 v 376 1165 a Fy(Z)p 520 1182 V 139 w FC(In)o(teger)p 1470 1182 V 264 1183 1207 2 v 263 1240 2 57 v 361 1223 a Fy(Z)395 1207 y Fq(+)p 520 1240 V 546 1223 a FC(Non-negativ)o(e)h(in) o(teger)p 1470 1240 V 264 1242 1207 2 v 263 1298 2 57 v 318 1281 a Fy(Z)349 1288 y Fu(k)370 1281 y FC(,)f Fy(Z)429 1288 y Fu(k)q FG(\003)p 520 1298 V 546 1281 a Fy(k)q FC(-v)m(alued)i(in)o(teger)e(\()p Fy(k)q FB(\003)g FC(indicates)i Fy(k)f FC(is)g(minim)o(um\))p 1470 1298 V 264 1300 1207 2 v 263 1356 2 57 v 375 1339 a Fy(R)p 520 1356 V 136 w FC(Floating-p)q(oin)o(t)g(n)o(um)o(b)q(er)p 1470 1356 V 264 1358 1207 2 v 263 1414 2 57 v 360 1397 a Fy(R)395 1381 y Fq(+)p 520 1414 V 546 1397 a FC(Non-negativ)o(e)g(\015oating-p)q (oin)o(t)f(n)o(um)o(b)q(er)p 1470 1414 V 264 1416 1207 2 v 263 1474 2 59 v 343 1457 a Fy(R)378 1441 y Fq([)p Fu(a;b)p Fq(])p 520 1474 V 546 1457 a FC(Floating-p)q(oin)o(t)h(n)o(um) o(b)q(er)f(in)h(the)g(range)f([)p Fy(a;)8 b(b)p FC(])p 1470 1474 V 264 1476 1207 2 v 263 1532 2 57 v 365 1516 a Fy(R)400 1499 y Fu(k)p 520 1532 V 546 1516 a Fy(k)q FC(-tuple)16 b(of)f(\015oating-p)q(oin)o(t)h(n)o(um)o(b)q(ers)p 1470 1532 V 264 1534 1207 2 v 263 1591 2 57 v 375 1574 a Fy(P)p 520 1591 V 142 w FC(P)o(osition)11 b(\()p Fy(x)p FC(,)f Fy(y)r FC(,)h Fy(z)r FC(,)g Fy(w)g FC(\015oating-p)q(oin)o(t)g (co)q(ordinates\))p 1470 1591 V 264 1592 1207 2 v 263 1649 2 57 v 373 1632 a Fy(D)p 520 1649 V 135 w FC(Direction)16 b(\()p Fy(x)p FC(,)e Fy(y)r FC(,)h Fy(z)i FC(\015oating-p)q(oin)o(t)f (co)q(ordinates\))p 1470 1649 V 264 1650 1207 2 v 263 1707 2 57 v 357 1690 a Fy(M)5 b FC(4)p 520 1707 V 117 w(4)10 b FB(\002)g FC(4)15 b(\015oating-p)q(oin)o(t)h(matrix)p 1470 1707 V 264 1708 1207 2 v 263 1765 2 57 v 381 1748 a Fy(I)p 520 1765 V 145 w FC(Image)p 1470 1765 V 264 1767 1207 2 v 263 1823 2 57 v 376 1806 a Fy(A)p 520 1823 V 136 w FC(A)o(ttribute)f(stac)o(k)g(en)o(try)l(,)f(including)k(mask)p 1470 1823 V 264 1825 1207 2 v 263 1881 2 57 v 374 1864 a Fy(Y)p 520 1881 V 146 w FC(P)o(oin)o(ter)d(\(data)f(t)o(yp)q(e)h (unsp)q(eci\014ed\))p 1470 1881 V 264 1883 1207 2 v 263 1996 2 113 v 309 1922 a Fy(n)10 b FB(\002)h Fy(ty)r(pe)p 520 1996 V 70 w(n)31 b FC(copies)h(of)e(t)o(yp)q(e)h Fy(ty)r(pe)g FC(\()p Fy(n)p FB(\003)f FC(indicates)i Fy(n)f FC(is)546 1979 y(minim)o(um\))p 1470 1996 V 264 1997 1207 2 v 562 2124 a(T)l(able)16 b(6.3:)j(State)c(v)m(ariable)i(t)o (yp)q(es)p eop %%Page: 152 161 152 160 bop 332 137 a FC(152)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)380 2063 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 380 2063 a 405 2129 a Fm(Get)f(v)n(alue)57 b(T)o(yp)q(e)788 2092 y(Get)788 2129 y(Cmnd)949 2092 y(Initial)949 2129 y(V)m(alue)164 b(Description)f(Sec.)57 b(A)o(ttribute)p 380 2146 1529 2 v 379 2245 2 100 v 488 2180 a Fe({)p 596 2245 V 604 2245 V 149 w Fh(Z)680 2186 y Fd(11)p 763 2245 V 832 2180 a Fk({)p 923 2245 V 137 w Fm(0)p 1083 2245 V 94 w(When)14 b Fc(6)p Fm(=)e(0,)h(indicates)1108 2230 y Fk(b)q(egin/end)e Fm(ob)r(ject)p 1552 2245 V 1578 2180 a(2.6.1)p 1688 2245 V 123 w({)p 1908 2245 V 380 2247 1529 2 v 379 2346 2 100 v 488 2282 a Fe({)p 596 2346 V 604 2346 V 164 w Fh(V)p 763 2346 V 141 w Fk({)p 923 2346 V 137 w Fm({)p 1083 2346 V 94 w(Previous)k(v)o(ertex)g(in)1108 2332 y Fk(Begin/End)f(line)p 1552 2346 V 1578 2282 a Fm(2.6.1)p 1688 2346 V 123 w({)p 1908 2346 V 380 2348 1529 2 v 379 2448 2 100 v 488 2383 a Fe({)p 596 2448 V 604 2448 V 164 w Fh(B)p 763 2448 V 134 w Fk({)p 923 2448 V 137 w Fm({)p 1083 2448 V 94 w(Indicates)h(if)e Fb(line-vertex)1108 2433 y Fm(is)h(the)h(\014rst)p 1552 2448 V 1578 2383 a(2.6.1)p 1688 2448 V 123 w({)p 1908 2448 V 380 2449 1529 2 v 379 2549 2 100 v 488 2484 a Fe({)p 596 2549 V 604 2549 V 164 w Fh(V)p 763 2549 V 141 w Fk({)p 923 2549 V 137 w Fm({)p 1083 2549 V 94 w(First)g(v)o (ertex)f(of)g(a)1108 2534 y Fk(Begin/End)e(line)h(lo)q(op)p 1552 2549 V 1578 2484 a Fm(2.6.1)p 1688 2549 V 123 w({)p 1908 2549 V 380 2551 1529 2 v 379 2601 2 50 v 488 2586 a Fe({)p 596 2601 V 604 2601 V 152 w Fh(Z)686 2571 y Fd(+)p 763 2601 V 832 2586 a Fk({)p 923 2601 V 137 w Fm({)p 1083 2601 V 94 w(Line)h(stipple)g(coun)o(ter)p 1552 2601 V 125 w(3.4)p 1688 2601 V 140 w({)p 1908 2601 V 380 2602 1529 2 v 379 2702 2 100 v 488 2637 a Fe({)p 596 2702 V 604 2702 V 127 w Fh(n)9 b Fc(\002)g Fh(V)p 763 2702 V 103 w Fk({)p 923 2702 V 137 w Fm({)p 1083 2702 V 94 w(V)m(ertices)16 b(inside)d(of)1108 2687 y Fk(Begin/End)h(p)q(olygon)p 1552 2702 V 1578 2637 a Fm(2.6.1)p 1688 2702 V 123 w({)p 1908 2702 V 380 2703 1529 2 v 379 2803 2 100 v 488 2738 a Fe({)p 596 2803 V 604 2803 V 152 w Fh(Z)686 2723 y Fd(+)p 763 2803 V 832 2738 a Fk({)p 923 2803 V 137 w Fm({)p 1083 2803 V 94 w(Num)o(b)q(er)g(of)1108 2788 y Fb(p)n(olygon-vertic)n(es)p 1552 2803 V 1578 2738 a Fm(2.6.1)p 1688 2803 V 123 w({)p 1908 2803 V 380 2805 1529 2 v 379 2954 2 150 v 488 2840 a Fe({)p 596 2954 V 604 2954 V 129 w Fm(2)9 b Fc(\002)g Fh(V)p 763 2954 V 105 w Fk({)p 923 2954 V 137 w Fm({)p 1083 2954 V 94 w(Previous)15 b(t)o(w)o(o)e(v)o(ertices)1108 2889 y(in)h(a)f Fk(Begin/End)1108 2939 y(triangle)g(strip)p 1552 2954 V 1578 2840 a Fm(2.6.1)p 1688 2954 V 123 w({)p 1908 2954 V 380 2956 1529 2 v 379 3105 2 150 v 488 2991 a Fe({)p 596 3105 V 604 3105 V 158 w Fh(Z)689 2997 y Fd(3)p 763 3105 V 832 2991 a Fk({)p 923 3105 V 137 w Fm({)p 1083 3105 V 94 w(Num)o(b)q(er)h(of)f(v)o(ertices)i(so)1108 3041 y(far)f(in)f(triangle)h(strip:)k(0,)1108 3090 y(1,)13 b(or)h(more)p 1552 3105 V 1578 2991 a(2.6.1)p 1688 3105 V 123 w({)p 1908 3105 V 380 3107 1529 2 v 379 3207 2 100 v 488 3142 a Fe({)p 596 3207 V 604 3207 V 158 w Fh(Z)689 3148 y Fd(2)p 763 3207 V 832 3142 a Fk({)p 923 3207 V 137 w Fm({)p 1083 3207 V 94 w(T)m(riangle)f(strip)h(A/B)1108 3192 y(v)o(ertex)h(p)q(oin)o(ter)p 1552 3207 V 1578 3142 a(2.6.1)p 1688 3207 V 123 w({)p 1908 3207 V 380 3208 1529 2 v 379 3308 2 100 v 488 3243 a Fe({)p 596 3308 V 604 3308 V 129 w Fm(3)9 b Fc(\002)g Fh(V)p 763 3308 V 105 w Fk({)p 923 3308 V 137 w Fm({)p 1083 3308 V 94 w(V)m(ertices)16 b(of)d(the)h(quad)1108 3293 y(under)h(construction)p 1552 3308 V 1578 3243 a(2.6.1)p 1688 3308 V 123 w({)p 1908 3308 V 380 3310 1529 2 v 379 3459 2 150 v 488 3344 a Fe({)p 596 3459 V 604 3459 V 158 w Fh(Z)689 3350 y Fd(4)p 763 3459 V 832 3344 a Fk({)p 923 3459 V 137 w Fm({)p 1083 3459 V 94 w(Num)o(b)q(er)f(of)f(v)o(ertices)i(so)1108 3394 y(far)f(in)f(quad)h(strip:)k(0,)13 b(1,)1108 3444 y(2,)g(or)h(more)p 1552 3459 V 1578 3344 a(2.6.1)p 1688 3459 V 123 w({)p 1908 3459 V 380 3461 1529 2 v 1778 2063 a currentpoint grestore moveto 1778 2063 a 415 2225 a FF(T)l(able)i(6.4.)22 b(GL)17 b(In)o(ternal)e(b)q(egin-end)i(state)f(v)m(ariables)g(\(inaccessible\)) p eop %%Page: 153 162 153 161 bop 1547 137 a FC(153)156 2416 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 156 2416 a 414 2482 a Fm(Get)14 b(v)n(alue)269 b(T)o(yp)q(e)1080 2445 y(Get)1080 2482 y(Cmnd)1325 2445 y(Initial)1325 2482 y(V)m(alue)167 b(Description)d(Sec.)57 b(A)o(ttribute)p 170 2499 2119 2 v 169 2579 2 81 v 368 2564 a Fe(CURRENT)p 522 2564 10 2 v 11 w(COLOR)p 824 2579 2 81 v 832 2579 V 248 w Fh(C)p 975 2579 V 1003 2527 a Fk(GetIn)o(tegerv,)1003 2564 y(GetFloatv)p 1295 2579 V 104 w Fm(1,1,1,1)p 1462 2579 V 47 w(Curren)o(t)15 b(color)p 1932 2579 V 242 w(2.7)p 2067 2579 V 85 w(curren)o(t)p 2288 2579 V 170 2581 2119 2 v 169 2661 2 81 v 373 2646 a Fe(CURRENT)p 527 2646 10 2 v 11 w(INDEX)p 824 2661 2 81 v 832 2661 V 243 w Fh(C)s(I)p 975 2661 V 1003 2609 a Fk(GetIn)o(tegerv,)1003 2646 y(GetFloatv)p 1295 2661 V 152 w Fm(1)p 1462 2661 V 98 w(Curren)o(t)g(color)e(index)p 1932 2661 V 131 w(2.7)p 2067 2661 V 85 w(curren)o(t)p 2288 2661 V 170 2663 2119 2 v 169 2762 2 100 v 277 2698 a Fe(CURRENT)p 431 2698 10 2 v 11 w(TEXTURE)p 592 2698 V 12 w(COORDS)p 824 2762 2 100 v 832 2762 V 157 w Fh(T)p 975 2762 V 117 w Fk(GetFloatv)p 1295 2762 V 77 w Fm(0,0,0,1)p 1462 2762 V 47 w(Curren)o(t)i(texture) 1488 2748 y(co)q(ordinates)p 1932 2762 V 1974 2698 a(2.7)p 2067 2762 V 85 w(curren)o(t)p 2288 2762 V 170 2764 2119 2 v 169 2814 2 50 v 354 2799 a Fe(CURRENT)p 508 2799 10 2 v 12 w(NORMAL)p 824 2814 2 50 v 832 2814 V 233 w Fh(N)p 975 2814 V 111 w Fk(GetFloatv)p 1295 2814 V 93 w Fm(0,0,1)p 1462 2814 V 64 w(Curren)o(t)g(normal)p 1932 2814 V 201 w(2.7)p 2067 2814 V 85 w(curren)o(t)p 2288 2814 V 170 2816 2119 2 v 169 2915 2 100 v 496 2851 a Fe({)p 824 2915 V 832 2915 V 377 w Fh(C)p 975 2915 V 206 w Fk({)p 1295 2915 V 224 w Fm(-)p 1462 2915 V 102 w(Color)e(asso)q(ciated)i(with)1488 2900 y(last)f(v)o(ertex)p 1932 2915 V 1974 2851 a(2.6)p 2067 2915 V 140 w({)p 2288 2915 V 170 2917 2119 2 v 169 3017 2 100 v 496 2952 a Fe({)p 824 3017 V 832 3017 V 366 w Fh(C)s(I)p 975 3017 V 196 w Fk({)p 1295 3017 V 224 w Fm(-)p 1462 3017 V 102 w(Color)f(index)h(asso)q(ciated)1488 3002 y(with)g(last)f(v)o(ertex)p 1932 3017 V 1974 2952 a(2.6)p 2067 3017 V 140 w({)p 2288 3017 V 170 3018 2119 2 v 169 3168 2 150 v 496 3053 a Fe({)p 824 3168 V 832 3168 V 378 w Fh(T)p 975 3168 V 211 w Fk({)p 1295 3168 V 224 w Fm(-)p 1462 3168 V 102 w(T)m(exture)i(co)q(ordinates)1488 3103 y(asso)q(ciated)g(with)e(last) 1488 3153 y(v)o(ertex)p 1932 3168 V 1974 3053 a(2.6)p 2067 3168 V 140 w({)p 2288 3168 V 170 3169 2119 2 v 169 3219 2 50 v 279 3204 a Fe(CURRENT)p 433 3204 10 2 v 12 w(RASTER)p 570 3204 V 11 w(POSITION)p 824 3219 2 50 v 832 3219 V 151 w Fh(R)911 3189 y Fd(4)p 975 3219 V 1030 3204 a Fk(GetFloatv)p 1295 3219 V 77 w Fm(0,0,0,1)p 1462 3219 V 47 w(Curren)o(t)i(raster)g(p)q(osition)p 1932 3219 V 57 w(2.12)p 2067 3219 V 74 w(curren)o(t)p 2288 3219 V 170 3221 2119 2 v 169 3271 2 50 v 276 3256 a Fe(CURRENT)p 430 3256 10 2 v 11 w(RASTER)p 566 3256 V 12 w(DIST)n(ANCE)p 824 3271 2 50 v 832 3271 V 142 w Fh(R)907 3241 y Fd(+)p 975 3271 V 1030 3256 a Fk(GetFloatv)p 1295 3271 V 125 w Fm(0)p 1462 3271 V 98 w(Curren)o(t)f(raster)g(distance)p 1932 3271 V 57 w(2.12)p 2067 3271 V 74 w(curren)o(t)p 2288 3271 V 170 3272 2119 2 v 169 3402 2 131 v 300 3338 a Fe(CURRENT)p 454 3338 10 2 v 11 w(RASTER)p 590 3338 V 11 w(COLOR)p 824 3402 2 131 v 832 3402 V 180 w Fh(C)p 975 3402 V 1003 3301 a Fk(GetIn)o(tegerv,)1003 3338 y(GetFloatv)p 1295 3402 V 104 w Fm(1,1,1,1)p 1462 3402 V 47 w(Color)f(asso)q(ciated)i (with)1488 3387 y(raster)g(p)q(osition)p 1932 3402 V 1964 3338 a(2.12)p 2067 3402 V 74 w(curren)o(t)p 2288 3402 V 170 3404 2119 2 v 169 3534 2 131 v 305 3469 a Fe(CURRENT)p 459 3469 10 2 v 11 w(RASTER)p 595 3469 V 11 w(INDEX)p 824 3534 2 131 v 832 3534 V 175 w Fh(C)s(I)p 975 3534 V 1003 3433 a Fk(GetIn)o(tegerv,)1003 3469 y(GetFloatv)p 1295 3534 V 152 w Fm(1)p 1462 3534 V 98 w(Color)e(index)h(asso)q (ciated)1488 3519 y(with)g(raster)h(p)q(osition)p 1932 3534 V 1964 3469 a(2.12)p 2067 3534 V 74 w(curren)o(t)p 2288 3534 V 170 3536 2119 2 v 169 3685 2 150 v 208 3571 a Fe(CURRENT)p 362 3571 10 2 v 12 w(RASTER)p 499 3571 V 11 w(TEXTURE)p 660 3571 V 12 w(COORDS)p 824 3685 2 150 v 832 3685 V 89 w Fh(T)p 975 3685 V 117 w Fk(GetFloatv)p 1295 3685 V 77 w Fm(0,0,0,1)p 1462 3685 V 47 w(T)m(exture)g(co)q (ordinates)1488 3621 y(asso)q(ciated)g(with)e(raster)1488 3670 y(p)q(osition)p 1932 3685 V 1964 3571 a(2.12)p 2067 3685 V 74 w(curren)o(t)p 2288 3685 V 170 3687 2119 2 v 169 3787 2 100 v 227 3722 a Fe(CURRENT)p 381 3722 10 2 v 11 w(RASTER)p 517 3722 V 11 w(POSITION)p 677 3722 V 12 w(V)m(ALID)p 824 3787 2 100 v 832 3787 V 107 w Fh(B)p 975 3787 V 82 w Fk(GetBo)q(olean)o(v)p 1295 3787 V 64 w Fb(T)m(rue)p 1462 3787 V 65 w Fm(Raster)h(p)q(osition)g(v)n(alid)1488 3772 y(bit)p 1932 3787 V 1964 3722 a(2.12)p 2067 3787 V 74 w(curren)o(t)p 2288 3787 V 170 3788 2119 2 v 169 3838 2 50 v 413 3823 a Fe(EDGE)p 501 3823 10 2 v 12 w(FLA)o(G)p 824 3838 2 50 v 832 3838 V 294 w Fh(B)p 975 3838 V 82 w Fk(GetBo)q(olean)o(v)p 1295 3838 V 64 w Fb(T)m(rue)p 1462 3838 V 65 w Fm(Edge)g(\015ag)p 1932 3838 V 301 w(2.6.2)p 2067 3838 V 68 w(curren)o(t)p 2288 3838 V 170 3840 2119 2 v 1579 2416 a currentpoint grestore moveto 1579 2416 a 361 2575 a FF(T)l(able)i(6.5.)21 b(Curren)o(t)16 b(V)l(alues)g(and)h(Asso)q(ciated)f(Data)p eop %%Page: 154 163 154 162 bop 332 137 a FC(154)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)369 2717 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 369 2717 a 605 2783 a Fm(Get)f(v)n(alue)246 b(T)o(yp)q(e)1242 2745 y(Get)1242 2783 y(Cmnd)1476 2745 y(Initial)1476 2783 y(V)m(alue)329 b(Description)321 b(Sec.)75 b(A)o(ttribute)p 383 2799 2420 2 v 382 2849 2 50 v 572 2834 a Fe(VER)n(TEX)p 700 2834 10 2 v 11 w(ARRA)n(Y)p 992 2849 2 50 v 1000 2849 V 239 w Fh(B)p 1143 2849 V 107 w Fk(IsEnabled)p 1450 2849 V 83 w Fb(F)m(alse)p 1609 2849 V 58 w Fm(V)m(ertex)15 b(arra)o(y)f(enable)p 2409 2849 V 452 w(2.8)p 2531 2849 V 58 w(v)o(ertex-arra)o(y)p 2801 2849 V 383 2851 2420 2 v 382 2900 2 50 v 533 2886 a Fe(VER)n(TEX)p 661 2886 10 2 v 11 w(ARRA)n(Y)p 780 2886 V 12 w(SIZE)p 992 2900 2 50 v 1000 2900 V 187 w Fh(Z)1074 2870 y Fd(+)p 1143 2900 V 1171 2886 a Fk(GetIn)o(tegerv)p 1450 2900 V 94 w Fm(4)p 1609 2900 V 94 w(Co)q(ordinates)g(p)q(er)h(v)o(ertex)p 2409 2900 V 393 w(2.8)p 2531 2900 V 58 w(v)o(ertex-arra)o(y)p 2801 2900 V 383 2902 2420 2 v 382 2952 2 50 v 524 2937 a Fe(VER)n(TEX)p 652 2937 10 2 v 11 w(ARRA)n(Y)p 771 2937 V 12 w(TYPE)p 992 2952 2 50 v 1000 2952 V 184 w Fh(Z)1077 2943 y Fd(4)p 1143 2952 V 1171 2937 a Fk(GetIn)o(tegerv)p 1450 2952 V 50 w Fr(FLOAT)p 1609 2952 V 49 w Fm(T)o(yp)q(e)f(of)g(v)o (ertex)h(co)q(ordinates)p 2409 2952 V 322 w(2.8)p 2531 2952 V 58 w(v)o(ertex-arra)o(y)p 2801 2952 V 383 2954 2420 2 v 382 3003 2 50 v 509 2988 a Fe(VER)n(TEX)p 637 2988 10 2 v 11 w(ARRA)n(Y)p 756 2988 V 12 w(STRIDE)p 992 3003 2 50 v 1000 3003 V 162 w Fh(Z)1074 2973 y Fd(+)p 1143 3003 V 1171 2988 a Fk(GetIn)o(tegerv)p 1450 3003 V 94 w Fm(0)p 1609 3003 V 94 w(Stride)g(b)q(et)o(w)o(een)g(v)o(ertices) p 2409 3003 V 391 w(2.8)p 2531 3003 V 58 w(v)o(ertex-arra)o(y)p 2801 3003 V 383 3005 2420 2 v 382 3055 2 50 v 495 3040 a Fe(VER)n(TEX)p 623 3040 10 2 v 12 w(ARRA)n(Y)p 743 3040 V 12 w(POINTER)p 992 3055 2 50 v 1000 3055 V 163 w Fh(Y)p 1143 3055 V 89 w Fk(GetP)o(oin)o(t)o(erv)p 1450 3055 V 91 w Fm(0)p 1609 3055 V 94 w(P)o(oin)o(ter)f(to)g(the)g(v)o (ertex)h(arra)o(y)p 2409 3055 V 320 w(2.8)p 2531 3055 V 58 w(v)o(ertex-arra)o(y)p 2801 3055 V 383 3057 2420 2 v 382 3106 2 50 v 567 3091 a Fe(NORMAL)p 704 3091 10 2 v 12 w(ARRA)n(Y)p 992 3106 2 50 v 1000 3106 V 234 w Fh(B)p 1143 3106 V 107 w Fk(IsEnabled)p 1450 3106 V 83 w Fb(F)m(alse)p 1609 3106 V 58 w Fm(Normal)d(arra)o(y)i(enable)p 2409 3106 V 436 w(2.8)p 2531 3106 V 58 w(v)o(ertex-arra)o(y)p 2801 3106 V 383 3108 2420 2 v 382 3158 2 50 v 519 3143 a Fe(NORMAL)p 656 3143 10 2 v 12 w(ARRA)n(Y)p 776 3143 V 11 w(TYPE)p 992 3158 2 50 v 1000 3158 V 180 w Fh(Z)1077 3149 y Fd(5)p 1143 3158 V 1171 3143 a Fk(GetIn)o(tegerv)p 1450 3158 V 50 w Fr(FLOAT)p 1609 3158 V 49 w Fm(T)o(yp)q(e)g(of)g (normal)d(co)q(ordinates)p 2409 3158 V 308 w(2.8)p 2531 3158 V 58 w(v)o(ertex-arra)o(y)p 2801 3158 V 383 3159 2420 2 v 382 3209 2 50 v 504 3194 a Fe(NORMAL)p 641 3194 10 2 v 12 w(ARRA)n(Y)p 761 3194 V 11 w(STRIDE)p 992 3209 2 50 v 1000 3209 V 158 w Fh(Z)1074 3179 y Fd(+)p 1143 3209 V 1171 3194 a Fk(GetIn)o(tegerv)p 1450 3209 V 94 w Fm(0)p 1609 3209 V 94 w(Stride)k(b)q(et)o(w)o(een)g(normals)p 2409 3209 V 381 w(2.8)p 2531 3209 V 58 w(v)o(ertex-arra)o(y)p 2801 3209 V 383 3211 2420 2 v 382 3261 2 50 v 491 3246 a Fe(NORMAL)p 628 3246 10 2 v 12 w(ARRA)n(Y)p 748 3246 V 11 w(POINTER)p 992 3261 2 50 v 1000 3261 V 159 w Fh(Y)p 1143 3261 V 89 w Fk(GetP)o(oin)o(t)o(erv)p 1450 3261 V 91 w Fm(0)p 1609 3261 V 94 w(P)o(oin)o(ter)f(to)g(the)g(normal)e (arra)o(y)p 2409 3261 V 305 w(2.8)p 2531 3261 V 58 w(v)o(ertex-arra)o (y)p 2801 3261 V 383 3262 2420 2 v 382 3312 2 50 v 580 3297 a Fe(COLOR)p 691 3297 10 2 v 11 w(ARRA)n(Y)p 992 3312 2 50 v 1000 3312 V 248 w Fh(B)p 1143 3312 V 107 w Fk(IsEnabled)p 1450 3312 V 83 w Fb(F)m(alse)p 1609 3312 V 58 w Fm(Color)h(arra)o(y)h(enable)p 2409 3312 V 472 w(2.8)p 2531 3312 V 58 w(v)o(ertex-arra)o(y)p 2801 3312 V 383 3314 2420 2 v 382 3364 2 50 v 542 3349 a Fe(COLOR)p 653 3349 10 2 v 11 w(ARRA)n(Y)p 772 3349 V 11 w(SIZE)p 992 3364 2 50 v 1000 3364 V 196 w Fh(Z)1074 3334 y Fd(+)p 1143 3364 V 1171 3349 a Fk(GetIn)o(tegerv)p 1450 3364 V 94 w Fm(4)p 1609 3364 V 94 w(Colors)g(p)q(er)g(v)o(ertex)p 2409 3364 V 496 w(2.8)p 2531 3364 V 58 w(v)o(ertex-arra)o(y)p 2801 3364 V 383 3365 2420 2 v 382 3415 2 50 v 532 3400 a Fe(COLOR)p 643 3400 10 2 v 11 w(ARRA)n(Y)p 762 3400 V 12 w(TYPE)p 992 3415 2 50 v 1000 3415 V 193 w Fh(Z)1077 3406 y Fd(8)p 1143 3415 V 1171 3400 a Fk(GetIn)o(tegerv)p 1450 3415 V 50 w Fr(FLOAT)p 1609 3415 V 49 w Fm(T)o(yp)q(e)g(of)g (color)f(comp)q(onen)o(ts)p 2409 3415 V 338 w(2.8)p 2531 3415 V 58 w(v)o(ertex-arra)o(y)p 2801 3415 V 383 3417 2420 2 v 382 3467 2 50 v 517 3452 a Fe(COLOR)p 628 3452 10 2 v 11 w(ARRA)n(Y)p 747 3452 V 12 w(STRIDE)p 992 3467 2 50 v 1000 3467 V 171 w Fh(Z)1074 3437 y Fd(+)p 1143 3467 V 1171 3452 a Fk(GetIn)o(tegerv)p 1450 3467 V 94 w Fm(0)p 1609 3467 V 94 w(Stride)i(b)q(et)o(w)o(een)g(colors)p 2409 3467 V 422 w(2.8)p 2531 3467 V 58 w(v)o(ertex-arra)o(y)p 2801 3467 V 383 3468 2420 2 v 382 3518 2 50 v 504 3503 a Fe(COLOR)p 615 3503 10 2 v 11 w(ARRA)n(Y)p 734 3503 V 12 w(POINTER)p 992 3518 2 50 v 1000 3518 V 172 w Fh(Y)p 1143 3518 V 89 w Fk(GetP)o(oin)o(t)o(erv)p 1450 3518 V 91 w Fm(0)p 1609 3518 V 94 w(P)o(oin)o(ter)f(to)g(the)g(color)g(arra) o(y)p 2409 3518 V 344 w(2.8)p 2531 3518 V 58 w(v)o(ertex-arra)o(y)p 2801 3518 V 383 3520 2420 2 v 382 3570 2 50 v 585 3555 a Fe(INDEX)p 685 3555 10 2 v 12 w(ARRA)n(Y)p 992 3570 2 50 v 1000 3570 V 253 w Fh(B)p 1143 3570 V 107 w Fk(IsEnabled)p 1450 3570 V 83 w Fb(F)m(alse)p 1609 3570 V 58 w Fm(Index)h(arra)o(y)e (enable)p 2409 3570 V 470 w(2.8)p 2531 3570 V 58 w(v)o(ertex-arra)o(y)p 2801 3570 V 383 3571 2420 2 v 382 3621 2 50 v 538 3606 a Fe(INDEX)p 638 3606 10 2 v 11 w(ARRA)n(Y)p 757 3606 V 12 w(TYPE)p 992 3621 2 50 v 1000 3621 V 198 w Fh(Z)1077 3612 y Fd(4)p 1143 3621 V 1171 3606 a Fk(GetIn)o(tegerv)p 1450 3621 V 50 w Fr(FLOAT)p 1609 3621 V 49 w Fm(T)o(yp)q(e)h(of)g (indices)p 2409 3621 V 532 w(2.8)p 2531 3621 V 58 w(v)o(ertex-arra)o(y) p 2801 3621 V 383 3623 2420 2 v 382 3673 2 50 v 523 3658 a Fe(INDEX)p 623 3658 10 2 v 11 w(ARRA)n(Y)p 742 3658 V 12 w(STRIDE)p 992 3673 2 50 v 1000 3673 V 176 w Fh(Z)1074 3643 y Fd(+)p 1143 3673 V 1171 3658 a Fk(GetIn)o(tegerv)p 1450 3673 V 94 w Fm(0)p 1609 3673 V 94 w(Stride)h(b)q(et)o(w)o(een)g (indices)p 2409 3673 V 404 w(2.8)p 2531 3673 V 58 w(v)o(ertex-arra)o(y) p 2801 3673 V 383 3674 2420 2 v 382 3724 2 50 v 509 3709 a Fe(INDEX)p 609 3709 10 2 v 12 w(ARRA)n(Y)p 729 3709 V 12 w(POINTER)p 992 3724 2 50 v 1000 3724 V 177 w Fh(Y)p 1143 3724 V 89 w Fk(GetP)o(oin)o(t)o(erv)p 1450 3724 V 91 w Fm(0)p 1609 3724 V 94 w(P)o(oin)o(ter)f(to)g(the)g(index)g(arra) o(y)p 2409 3724 V 334 w(2.8)p 2531 3724 V 58 w(v)o(ertex-arra)o(y)p 2801 3724 V 383 3726 2420 2 v 382 3776 2 50 v 497 3761 a Fe(TEXTURE)p 649 3761 10 2 v 12 w(COORD)p 774 3761 V 11 w(ARRA)n(Y)p 992 3776 2 50 v 1000 3776 V 165 w Fh(B)p 1143 3776 V 107 w Fk(IsEnabled)p 1450 3776 V 83 w Fb(F)m(alse)p 1609 3776 V 58 w Fm(T)m(exture)h(co)q(ordinate)f(arra)o(y)g(enable)p 2409 3776 V 226 w(2.8)p 2531 3776 V 58 w(v)o(ertex-arra)o(y)p 2801 3776 V 383 3777 2420 2 v 382 3827 2 50 v 459 3812 a Fe(TEXTURE)p 611 3812 10 2 v 11 w(COORD)p 735 3812 V 11 w(ARRA)n(Y)p 854 3812 V 12 w(SIZE)p 992 3827 2 50 v 1000 3827 V 113 w Fh(Z)1074 3797 y Fd(+)p 1143 3827 V 1171 3812 a Fk(GetIn)o(tegerv)p 1450 3827 V 94 w Fm(4)p 1609 3827 V 94 w(Co)q(ordinates)g(p)q(er)h(elemen)o(t)p 2409 3827 V 364 w(2.8)p 2531 3827 V 58 w(v)o(ertex-arra)o(y)p 2801 3827 V 383 3829 2420 2 v 382 3878 2 50 v 450 3864 a Fe(TEXTURE)p 602 3864 10 2 v 11 w(COORD)p 726 3864 V 11 w(ARRA)n(Y)p 845 3864 V 12 w(TYPE)p 992 3878 2 50 v 1000 3878 V 110 w Fh(Z)1077 3870 y Fd(4)p 1143 3878 V 1171 3864 a Fk(GetIn)o(tegerv)p 1450 3878 V 50 w Fr(FLOAT)p 1609 3878 V 49 w Fm(T)o(yp)q(e)f(of)g(texture)h(co)q(ordinates)p 2409 3878 V 304 w(2.8)p 2531 3878 V 58 w(v)o(ertex-arra)o(y)p 2801 3878 V 383 3880 2420 2 v 382 3930 2 50 v 435 3915 a Fe(TEXTURE)p 587 3915 10 2 v 11 w(COORD)p 711 3915 V 11 w(ARRA)n(Y)p 830 3915 V 12 w(STRIDE)p 992 3930 2 50 v 1000 3930 V 88 w Fh(Z)1074 3900 y Fd(+)p 1143 3930 V 1171 3915 a Fk(GetIn)o(tegerv)p 1450 3930 V 94 w Fm(0)p 1609 3930 V 94 w(Stride)g(b)q(et)o(w)o(een)g(texture)g(co)q(ordinates)p 2409 3930 V 176 w(2.8)p 2531 3930 V 58 w(v)o(ertex-arra)o(y)p 2801 3930 V 383 3932 2420 2 v 382 3981 2 50 v 421 3966 a Fe(TEXTURE)p 573 3966 10 2 v 12 w(COORD)p 698 3966 V 11 w(ARRA)n(Y)p 817 3966 V 12 w(POINTER)p 992 3981 2 50 v 1000 3981 V 89 w Fh(Y)p 1143 3981 V 89 w Fk(GetP)o(oin)o(t)o (erv)p 1450 3981 V 91 w Fm(0)p 1609 3981 V 94 w(P)o(oin)o(ter)f(to)g (the)g(texture)i(co)q(ordinate)e(arra)o(y)p 2409 3981 V 97 w(2.8)p 2531 3981 V 58 w(v)o(ertex-arra)o(y)p 2801 3981 V 383 3983 2420 2 v 382 4033 2 50 v 544 4018 a Fe(EDGE)p 632 4018 10 2 v 12 w(FLA)o(G)p 727 4018 V 11 w(ARRA)n(Y)p 992 4033 2 50 v 1000 4033 V 212 w Fh(B)p 1143 4033 V 107 w Fk(IsEnabled)p 1450 4033 V 83 w Fb(F)m(alse)p 1609 4033 V 58 w Fm(Edge)h(\015ag)e(arra)o(y)h(enable)p 2409 4033 V 402 w(2.8)p 2531 4033 V 58 w(v)o(ertex-arra)o(y)p 2801 4033 V 383 4035 2420 2 v 382 4084 2 50 v 481 4069 a Fe(EDGE)p 569 4069 10 2 v 12 w(FLA)o(G)p 664 4069 V 12 w(ARRA)n(Y)p 784 4069 V 11 w(STRIDE)p 992 4084 2 50 v 1000 4084 V 135 w Fh(Z)1074 4054 y Fd(+)p 1143 4084 V 1171 4069 a Fk(GetIn)o(tegerv)p 1450 4084 V 94 w Fm(0)p 1609 4084 V 94 w(Stride)h(b)q(et)o(w)o(een)g(edge)f(\015ags)p 2409 4084 V 351 w(2.8)p 2531 4084 V 58 w(v)o(ertex-arra)o(y)p 2801 4084 V 383 4086 2420 2 v 382 4136 2 50 v 468 4121 a Fe(EDGE)p 556 4121 10 2 v 12 w(FLA)o(G)p 651 4121 V 11 w(ARRA)n(Y)p 770 4121 V 12 w(POINTER)p 992 4136 2 50 v 1000 4136 V 136 w Fh(Y)p 1143 4136 V 89 w Fk(GetP)o(oin)o(t)o(erv) p 1450 4136 V 91 w Fm(0)p 1609 4136 V 94 w(P)o(oin)o(ter)g(to)g(the)g (edge)h(\015ag)e(arra)o(y)p 2409 4136 V 273 w(2.8)p 2531 4136 V 58 w(v)o(ertex-arra)o(y)p 2801 4136 V 383 4137 2420 2 v 1790 2717 a currentpoint grestore moveto 1790 2717 a 763 2876 a FF(T)l(able)j(6.6.)22 b(V)l(ertex)15 b(Arra)o(y)g(Data)p eop %%Page: 155 164 155 163 bop 1547 137 a FC(155)268 2598 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 268 2598 a 447 2664 a Fm(Get)14 b(v)n(alue)232 b(T)o(yp)q(e)1126 2627 y(Get)1126 2664 y(Cmnd)1416 2627 y(Initial)1416 2664 y(V)m(alue)207 b(Description)174 b(Sec.)139 b(A)o(ttribute)p 282 2680 2301 2 v 281 2780 2 100 v 373 2715 a Fe(MODEL)m(VIEW)p 567 2715 10 2 v 12 w(MA)n(TRIX)p 778 2780 2 100 v 786 2780 V 111 w Fm(32)9 b Fc(\003)g(\002)p Fh(M)c Fm(4)p 1014 2780 V 85 w Fk(GetFloatv)p 1347 2780 V 110 w Fm(Iden)o(tit)o(y)p 1593 2780 V 76 w(Mo)q(del-view)13 b(matrix)1619 2765 y(stac)o(k)p 2063 2780 V 2089 2715 a(2.10.2)p 2219 2780 V 194 w({)p 2582 2780 V 282 2782 2301 2 v 281 2881 2 100 v 369 2816 a Fe(PR)o(OJECTION)p 571 2816 10 2 v 12 w(MA)n(TRIX)p 778 2881 2 100 v 786 2881 V 117 w Fm(2)c Fc(\003)g(\002)p Fh(M)c Fm(4)p 1014 2881 V 96 w Fk(GetFloatv)p 1347 2881 V 110 w Fm(Iden)o(tit)o(y)p 1593 2881 V 76 w(Pro)r(jection)14 b(matrix)1619 2866 y(stac)o(k)p 2063 2881 V 2089 2816 a(2.10.2)p 2219 2881 V 194 w({)p 2582 2881 V 282 2883 2301 2 v 281 2933 2 50 v 394 2918 a Fe(TEXTURE)p 546 2918 10 2 v 12 w(MA)n(TRIX)p 778 2933 2 50 v 786 2933 V 142 w Fm(2)9 b Fc(\003)g(\002)p Fh(M)c Fm(4)p 1014 2933 V 96 w Fk(GetFloatv)p 1347 2933 V 110 w Fm(Iden)o(tit)o(y)p 1593 2933 V 76 w(T)m(exture)15 b(matrix)d(stac)o(k)p 2063 2933 V 88 w(2.10.2)p 2219 2933 V 194 w({)p 2582 2933 V 282 2934 2301 2 v 281 3034 2 100 v 453 2969 a Fe(VIEWPOR)n(T)p 778 3034 V 786 3034 V 229 w Fm(4)d Fc(\002)g Fh(Z)p 1014 3034 V 107 w Fk(GetIn)o(tegerv)p 1347 3034 V 73 w Fm(see)16 b(2.10.1)p 1593 3034 V 59 w(Viewp)q(ort)e(origin)f(&) 1619 3019 y(exten)o(t)p 2063 3034 V 2089 2969 a(2.10.1)p 2219 3034 V 124 w(viewp)q(ort)p 2582 3034 V 282 3036 2301 2 v 281 3135 2 100 v 423 3071 a Fe(DEPTH)p 532 3071 10 2 v 11 w(RANGE)p 778 3135 2 100 v 786 3135 V 186 w Fm(2)c Fc(\002)g Fh(R)939 3055 y Fd(+)p 1014 3135 V 1076 3071 a Fk(GetFloatv)p 1347 3135 V 155 w Fm(0,1)p 1593 3135 V 120 w(Depth)14 b(range)g(near)h(&)1619 3120 y(far)p 2063 3135 V 2089 3071 a(2.10.1)p 2219 3135 V 124 w(viewp)q(ort)p 2582 3135 V 282 3137 2301 2 v 281 3237 2 100 v 325 3172 a Fe(MODEL)m(VIEW)p 519 3172 10 2 v 12 w(ST)n(A)o(CK)p 634 3172 V 10 w(DEPTH)p 778 3237 2 100 v 786 3237 V 123 w Fh(Z)903 3157 y Fd(+)p 1014 3237 V 1056 3172 a Fk(GetIn)o(tegerv)p 1347 3237 V 150 w Fm(1)p 1593 3237 V 137 w(Mo)q(del-view)e(matrix)1619 3222 y(stac)o(k)h(p)q(oin)o(ter)p 2063 3237 V 2089 3172 a(2.10.2)p 2219 3237 V 194 w({)p 2582 3237 V 282 3238 2301 2 v 281 3338 2 100 v 321 3273 a Fe(PR)o(OJECTION)p 523 3273 10 2 v 12 w(ST)n(A)o(CK)p 638 3273 V 10 w(DEPTH)p 778 3338 2 100 v 786 3338 V 119 w Fh(Z)903 3258 y Fd(+)p 1014 3338 V 1056 3273 a Fk(GetIn)o(tegerv)p 1347 3338 V 150 w Fm(1)p 1593 3338 V 137 w(Pro)r(jection)g(matrix)1619 3323 y(stac)o(k)g(p)q(oin)o(ter)p 2063 3338 V 2089 3273 a(2.10.2)p 2219 3338 V 194 w({)p 2582 3338 V 282 3340 2301 2 v 281 3439 2 100 v 346 3374 a Fe(TEXTURE)p 498 3374 10 2 v 12 w(ST)n(A)o(CK)p 613 3374 V 10 w(DEPTH)p 778 3439 2 100 v 786 3439 V 144 w Fh(Z)903 3359 y Fd(+)p 1014 3439 V 1056 3374 a Fk(GetIn)o(tegerv)p 1347 3439 V 150 w Fm(1)p 1593 3439 V 137 w(T)m(exture)h(matrix)d(stac)o(k)1619 3424 y(p)q(oin)o(ter)p 2063 3439 V 2089 3374 a(2.10.2)p 2219 3439 V 194 w({)p 2582 3439 V 282 3441 2301 2 v 281 3491 2 50 v 423 3476 a Fe(MA)n(TRIX)p 549 3476 10 2 v 11 w(MODE)p 778 3491 2 50 v 786 3491 V 227 w Fh(Z)906 3482 y Fd(3)p 1014 3491 V 1056 3476 a Fk(GetIn)o(tegerv)p 1347 3491 V 62 w Fr(MODELVIEW)p 1593 3491 V 48 w Fm(Curren)o(t)j (matrix)d(mo)q(de)p 2063 3491 V 80 w(2.10.2)p 2219 3491 V 116 w(transform)p 2582 3491 V 282 3492 2301 2 v 281 3592 2 100 v 444 3527 a Fe(NORMALIZE)p 778 3592 V 786 3592 V 256 w Fh(B)p 1014 3592 V 164 w Fk(IsEnabled)p 1347 3592 V 138 w Fb(F)m(alse)p 1593 3592 V 102 w Fm(Curren)o(t)j (normal)1619 3577 y(normalization)c(on/o\013)p 2063 3592 V 2089 3527 a(2.10.3)p 2219 3592 V 48 w(transform/enable)p 2582 3592 V 282 3594 2301 2 v 281 3693 2 100 v 438 3628 a Fe(CLIP)p 512 3628 10 2 v 11 w(PLANE)p Fg(i)p 778 3693 2 100 v 786 3693 V 195 w Fm(6)e Fc(\003)g(\002)p Fh(R)954 3613 y Fd(4)p 1014 3693 V 1040 3628 a Fk(GetClipPlan)o(e)p 1347 3693 V 86 w Fm(0,0,0,0)p 1593 3693 V 87 w(User)15 b(clipping)e(plane)1619 3678 y(co)q(e\016cien)o(ts)p 2063 3693 V 2105 3628 a(2.11)p 2219 3693 V 133 w(transform)p 2582 3693 V 282 3695 2301 2 v 281 3794 2 100 v 438 3730 a Fe(CLIP)p 512 3730 10 2 v 11 w(PLANE)p Fg(i)p 778 3794 2 100 v 786 3794 V 203 w Fm(6)c Fc(\003)g(\002)p Fh(B)p 1014 3794 V 118 w Fk(IsEnabled)p 1347 3794 V 138 w Fb(F)m(alse)p 1593 3794 V 102 w Fh(x)p Fm(th)14 b(user)h(clipping)d(plane)1619 3780 y(enabled)p 2063 3794 V 2105 3730 a(2.11)p 2219 3794 V 65 w(transform/enable)p 2582 3794 V 282 3796 2301 2 v 1467 2598 a currentpoint grestore moveto 1467 2598 a 528 2757 a FF(T)l(able)k(6.7.)22 b(T)l(ransformation)16 b(state)p eop %%Page: 156 165 156 164 bop 332 137 a FC(156)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)807 2204 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 807 2204 a 884 2270 a Fm(Get)f(v)n(alue)87 b(T)o(yp)q(e)1360 2233 y(Get)1360 2270 y(Cmnd)1602 2233 y(Initial)1602 2270 y(V)m(alue)174 b(Description)g(Sec.)77 b(A)o(ttribute)p 821 2287 1792 2 v 820 2337 2 50 v 881 2322 a Fe(F)o(OG)p 948 2322 10 2 v 12 w(COLOR)p 1112 2337 2 50 v 1120 2337 V 109 w Fh(C)p 1263 2337 V 103 w Fk(GetFloatv)p 1566 2337 V 75 w Fm(0,0,0,0)p 1746 2337 V 54 w(F)m(og)13 b(color)p 2216 2337 V 329 w(3.9)p 2372 2337 V 144 w(fog)p 2612 2337 V 821 2338 1792 2 v 820 2388 2 50 v 886 2373 a Fe(F)o(OG)p 953 2373 10 2 v 12 w(INDEX)p 1112 2388 2 50 v 1120 2388 V 121 w Fh(I)p 1263 2388 V 109 w Fk(GetFloatv)p 1566 2388 V 123 w Fm(0)p 1746 2388 V 105 w(F)m(og)g(index)p 2216 2388 V 319 w(3.9)p 2372 2388 V 144 w(fog)p 2612 2388 V 821 2390 1792 2 v 820 2489 2 100 v 867 2425 a Fe(F)o(OG)p 934 2425 10 2 v 11 w(DENSITY)p 1112 2489 2 100 v 1120 2489 V 97 w Fh(R)p 1263 2489 V 100 w Fk(GetFloatv)p 1566 2489 V 107 w Fm(1.0)p 1746 2489 V 88 w(Exp)q(onen)o(tial)g(fog) 1772 2474 y(densit)o(y)p 2216 2489 V 2268 2425 a(3.9)p 2372 2489 V 144 w(fog)p 2612 2489 V 821 2491 1792 2 v 820 2541 2 50 v 886 2526 a Fe(F)o(OG)p 953 2526 10 2 v 11 w(ST)n(AR)n(T)p 1112 2541 2 50 v 1120 2541 V 114 w Fh(R)p 1263 2541 V 100 w Fk(GetFloatv)p 1566 2541 V 107 w Fm(0.0)p 1746 2541 V 88 w(Linear)h(fog)f(start)p 2216 2541 V 213 w(3.9)p 2372 2541 V 144 w(fog)p 2612 2541 V 821 2543 1792 2 v 820 2592 2 50 v 903 2577 a Fe(F)o(OG)p 970 2577 10 2 v 11 w(END)p 1112 2592 2 50 v 1120 2592 V 133 w Fh(R)p 1263 2592 V 100 w Fk(GetFloatv)p 1566 2592 V 107 w Fm(1.0)p 1746 2592 V 88 w(Linear)h(fog)f(end)p 2216 2592 V 234 w(3.9)p 2372 2592 V 144 w(fog)p 2612 2592 V 821 2594 1792 2 v 820 2644 2 50 v 889 2629 a Fe(F)o(OG)p 956 2629 10 2 v 11 w(MODE)p 1112 2644 2 50 v 1120 2644 V 111 w Fh(Z)1197 2635 y Fd(3)p 1263 2644 V 1289 2629 a Fk(GetIn)o(tegerv)p 1566 2644 V 80 w Fr(EXP)p 1746 2644 V 82 w Fm(F)m(og)g(mo)q(de)p 2216 2644 V 318 w(3.9)p 2372 2644 V 144 w(fog)p 2612 2644 V 821 2645 1792 2 v 820 2695 2 50 v 941 2680 a Fe(F)o(OG)p 1112 2695 V 1120 2695 V 170 w Fh(B)p 1263 2695 V 105 w Fk(IsEnabled)p 1566 2695 V 91 w Fb(F)m(alse)p 1746 2695 V 69 w Fm(T)m(rue)h(if)f(fog)g (enabled)p 2216 2695 V 154 w(3.9)p 2372 2695 V 76 w(fog/enable)p 2612 2695 V 821 2697 1792 2 v 820 2747 2 50 v 860 2732 a Fe(SHADE)p 966 2732 10 2 v 11 w(MODEL)p 1112 2747 2 50 v 1120 2747 V 76 w Fh(Z)1194 2717 y Fd(+)p 1263 2747 V 1289 2732 a Fk(GetIn)o(tegerv)p 1566 2747 V 47 w Fr(SMOOTH)p 1746 2747 V 49 w Fk(ShadeMo)q(del)f Fm(setting)p 2216 2747 V 77 w(2.13.7)p 2372 2747 V 74 w(ligh)o(ting)p 2612 2747 V 821 2748 1792 2 v 1351 2204 a currentpoint grestore moveto 1351 2204 a 873 2363 a FF(T)l(able)k(6.8.)21 b(Coloring)p eop %%Page: 157 166 157 165 bop 1547 137 a FC(157)-90 2831 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate -90 2831 a 118 2897 a Fm(Get)14 b(v)n(alue)259 b(T)o(yp)q(e)828 2860 y(Get)828 2897 y(Cmnd)1228 2860 y(Initial)1228 2897 y(V)m(alue)309 b(Description)174 b(Sec.)119 b(A)o(ttribute)p -76 2913 2534 2 v -77 3013 2 100 v 131 2948 a Fe(LIGHTING)p 477 3013 V 485 3013 V 297 w Fh(B)p 710 3013 V 168 w Fk(IsEnabled)p 1056 3013 V 248 w Fb(F)m(alse)p 1507 3013 V 205 w Fm(T)m(rue)14 b(if)f(ligh)o(ting)f(is)1533 2998 y(enabled)p 1977 3013 V 2003 2948 a(2.13.1)p 2133 3013 V 48 w(ligh)o(ting/enable)p 2456 3013 V -76 3015 2534 2 v -77 3114 2 100 v 66 3050 a Fe(COLOR)p 177 3050 10 2 v 11 w(MA)n(TERIAL)p 477 3114 2 100 v 485 3114 V 232 w Fh(B)p 710 3114 V 168 w Fk(IsEnabled)p 1056 3114 V 248 w Fb(F)m(alse)p 1507 3114 V 205 w Fm(T)m(rue)i(if)f (color)h(trac)o(king)1533 3099 y(is)g(enabled)p 1977 3114 V 2003 3050 a(2.13.3)p 2133 3114 V 48 w(ligh)o(ting/enable)p 2456 3114 V -76 3116 2534 2 v -77 3216 2 100 v -38 3151 a Fe(COLOR)p 73 3151 10 2 v 11 w(MA)n(TERIAL)p 247 3151 V 12 w(P)n(ARAMETER)p 477 3216 2 100 v 485 3216 V 123 w Fh(Z)603 3157 y Fd(5)p 710 3216 V 757 3151 a Fk(GetIn)o(tegerv)p 1056 3216 V 69 w Fr(AMBIENT)p 1238 3151 14 2 v 15 w(AND)p 1319 3151 V 15 w(DIFFUSE)p 1507 3216 2 100 v 48 w Fm(Material)f(prop)q (erties)1533 3201 y(trac)o(king)h(curren)o(t)h(color)p 1977 3216 V 2003 3151 a(2.13.3)p 2133 3216 V 116 w(ligh)o(ting)p 2456 3216 V -76 3217 2534 2 v -77 3317 2 100 v 20 3252 a Fe(COLOR)p 131 3252 10 2 v 11 w(MA)n(TERIAL)p 305 3252 V 12 w(F)m(A)o(CE)p 477 3317 2 100 v 485 3317 V 180 w Fh(Z)603 3258 y Fd(3)p 710 3317 V 757 3252 a Fk(GetIn)o(tegerv)p 1056 3317 V 124 w Fr(FRONT)p 1249 3252 14 2 v 15 w(AND)p 1330 3252 V 15 w(BACK)p 1507 3317 2 100 v 103 w Fm(F)m(ace\(s\))g (a\013ected)g(b)o(y)1533 3302 y(color)f(trac)o(king)p 1977 3317 V 2003 3252 a(2.13.3)p 2133 3317 V 116 w(ligh)o(ting)p 2456 3317 V -76 3319 2534 2 v -77 3368 2 50 v 134 3353 a Fe(AMBIENT)p 477 3368 V 485 3368 V 267 w Fm(2)9 b Fc(\002)h Fh(C)p 710 3368 V 88 w Fk(GetMaterialf)o(v)p 1056 3368 V 109 w Fm(\(0.2,0.2,0.)o(2,1)o(.0\))p 1507 3368 V 108 w(Am)o(bien)o(t)i(material)f(color)p 1977 3368 V 50 w(2.13.1)p 2133 3368 V 116 w(ligh)o(ting)p 2456 3368 V -76 3370 2534 2 v -77 3420 2 50 v 141 3405 a Fe(DIFFUSE)p 477 3420 V 485 3420 V 272 w Fm(2)e Fc(\002)h Fh(C)p 710 3420 V 88 w Fk(GetMaterialf)o(v)p 1056 3420 V 109 w Fm(\(0.8,0.8,0.)o(8,1)o (.0\))p 1507 3420 V 108 w(Di\013use)k(material)e(color)p 1977 3420 V 79 w(2.13.1)p 2133 3420 V 116 w(ligh)o(ting)p 2456 3420 V -76 3422 2534 2 v -77 3471 2 50 v 125 3456 a Fe(SPECULAR)p 477 3471 V 485 3471 V 257 w Fm(2)d Fc(\002)h Fh(C)p 710 3471 V 88 w Fk(GetMaterialf)o(v)p 1056 3471 V 109 w Fm(\(0.0,0.0,0.)o(0,1)o(.0\))p 1507 3471 V 108 w(Sp)q(ecular)k(material)d(color)p 1977 3471 V 50 w(2.13.1)p 2133 3471 V 116 w(ligh)o(ting)p 2456 3471 V -76 3473 2534 2 v -77 3523 2 50 v 133 3508 a Fe(EMISSION)p 477 3523 V 485 3523 V 265 w Fm(2)e Fc(\002)h Fh(C)p 710 3523 V 88 w Fk(GetMaterialf)o(v)p 1056 3523 V 109 w Fm(\(0.0,0.0,0.)o(0,1)o (.0\))p 1507 3523 V 108 w(Emissiv)o(e)j(mat.)j(color)p 1977 3523 V 109 w(2.13.1)p 2133 3523 V 116 w(ligh)o(ting)p 2456 3523 V -76 3525 2534 2 v -77 3624 2 100 v 128 3559 a Fe(SHININESS)p 477 3624 V 485 3624 V 260 w Fm(2)9 b Fc(\002)g Fh(R)p 710 3624 V 86 w Fk(GetMaterialf)o(v)p 1056 3624 V 222 w Fm(0.0)p 1507 3624 V 223 w(Sp)q(ecular)15 b(exp)q(onen)o(t)f(of)1533 3609 y(material)p 1977 3624 V 2003 3559 a(2.13.1)p 2133 3624 V 116 w(ligh)o(ting)p 2456 3624 V -76 3626 2534 2 v -77 3676 2 50 v 19 3661 a Fe(LIGHT)p 118 3661 10 2 v 11 w(MODEL)p 241 3661 V 11 w(AMBIENT)p 477 3676 2 50 v 485 3676 V 187 w Fh(C)p 710 3676 V 166 w Fk(GetFloatv)p 1056 3676 V 151 w Fm(\(0.2,0.2,0.)o (2,1)o(.0\))p 1507 3676 V 108 w(Am)o(bien)o(t)f(scene)i(color)p 1977 3676 V 104 w(2.13.1)p 2133 3676 V 116 w(ligh)o(ting)p 2456 3676 V -76 3677 2534 2 v -77 3727 2 50 v -29 3712 a Fe(LIGHT)p 70 3712 10 2 v 11 w(MODEL)p 193 3712 V 11 w(LOCAL)p 309 3712 V 11 w(VIEWER)p 477 3727 2 50 v 485 3727 V 138 w Fh(B)p 710 3727 V 137 w Fk(GetBo)q(olean)o(v)p 1056 3727 V 215 w Fb(F)m(alse)p 1507 3727 V 205 w Fm(View)o(er)g(is)e (lo)q(cal)p 1977 3727 V 205 w(2.13.1)p 2133 3727 V 116 w(ligh)o(ting)p 2456 3727 V -76 3729 2534 2 v -77 3779 2 50 v 13 3764 a Fe(LIGHT)p 112 3764 10 2 v 12 w(MODEL)p 236 3764 V 11 w(TW)o(O)p 321 3764 V 12 w(SIDE)p 477 3779 2 50 v 485 3779 V 179 w Fh(B)p 710 3779 V 137 w Fk(GetBo)q(olean)o(v)p 1056 3779 V 215 w Fb(F)m(alse)p 1507 3779 V 205 w Fm(Use)i(t)o(w)o (o-sided)f(ligh)o(ting)p 1977 3779 V 66 w(2.13.1)p 2133 3779 V 116 w(ligh)o(ting)p 2456 3779 V -76 3780 2534 2 v -77 3880 2 100 v 134 3815 a Fe(AMBIENT)p 477 3880 V 485 3880 V 257 w Fm(8)9 b Fc(\003)g(\002)p Fh(C)p 710 3880 V 112 w Fk(GetLigh)o(t)o(fv)p 1056 3880 V 143 w Fm(\(0.0,0.0,0.)o(0,1)o(.0\))p 1507 3880 V 108 w(Am)o(bien)o(t)k(in)o (tensit)o(y)g(of)1533 3865 y(ligh)o(t)g Fh(i)p 1977 3880 V 2003 3815 a Fm(2.13.1)p 2133 3880 V 116 w(ligh)o(ting)p 2456 3880 V -76 3882 2534 2 v -77 3981 2 100 v 141 3916 a Fe(DIFFUSE)p 477 3981 V 485 3981 V 262 w Fm(8)c Fc(\003)g(\002)p Fh(C)p 710 3981 V 112 w Fk(GetLigh)o(t)o(fv)p 1056 3981 V 222 w Fm(see)15 b(2.5)p 1507 3981 V 190 w(Di\013use)f(in)o(tensit)o (y)g(of)1533 3966 y(ligh)o(t)f Fh(i)p 1977 3981 V 2003 3916 a Fm(2.13.1)p 2133 3981 V 116 w(ligh)o(ting)p 2456 3981 V -76 3983 2534 2 v -77 4082 2 100 v 125 4018 a Fe(SPECULAR)p 477 4082 V 485 4082 V 247 w Fm(8)c Fc(\003)g(\002)p Fh(C)p 710 4082 V 112 w Fk(GetLigh)o(t)o(fv)p 1056 4082 V 222 w Fm(see)15 b(2.5)p 1507 4082 V 190 w(Sp)q(ecular)g(in)o(tensit)o (y)e(of)1533 4067 y(ligh)o(t)g Fh(i)p 1977 4082 V 2003 4018 a Fm(2.13.1)p 2133 4082 V 116 w(ligh)o(ting)p 2456 4082 V -76 4084 2534 2 v -77 4134 2 50 v 133 4119 a Fe(POSITION)p 477 4134 V 485 4134 V 254 w Fm(8)c Fc(\003)g(\002)p Fh(P)p 710 4134 V 115 w Fk(GetLigh)o(t)o(fv)p 1056 4134 V 143 w Fm(\(0.0,0.0,1.)o(0,0)o(.0\))p 1507 4134 V 108 w(P)o(osition)k(of)g (ligh)o(t)g Fh(i)p 1977 4134 V 152 w Fm(2.13.1)p 2133 4134 V 116 w(ligh)o(ting)p 2456 4134 V -76 4136 2534 2 v -77 4185 2 50 v 4 4170 a Fe(CONST)n(ANT)p 176 4170 10 2 v 11 w(A)n(TTENUA)n(TION)p 477 4185 2 50 v 485 4185 V 111 w Fm(8)c Fc(\003)g(\002)p Fh(R)646 4155 y Fd(+)p 710 4185 V 770 4170 a Fk(GetLigh)o(t)o(fv)p 1056 4185 V 256 w Fm(1.0)p 1507 4185 V 223 w(Constan)o(t)14 b(atten.)19 b(factor)p 1977 4185 V 61 w(2.13.1)p 2133 4185 V 116 w(ligh)o(ting)p 2456 4185 V -76 4187 2534 2 v -77 4237 2 50 v 30 4222 a Fe(LINEAR)p 148 4222 10 2 v 12 w(A)n(TTENUA)n(TION)p 477 4237 2 50 v 485 4237 V 138 w Fm(8)9 b Fc(\003)g(\002)p Fh(R)646 4207 y Fd(+)p 710 4237 V 770 4222 a Fk(GetLigh)o(t)o(fv)p 1056 4237 V 256 w Fm(0.0)p 1507 4237 V 223 w(Linear)14 b(atten.)k(factor)p 1977 4237 V 111 w(2.13.1)p 2133 4237 V 116 w(ligh)o(ting)p 2456 4237 V -76 4239 2534 2 v -77 4338 2 100 v -5 4273 a Fe(QUADRA)n(TIC)p 184 4273 10 2 v 11 w(A)n(TTENUA)n(TION)p 477 4338 2 100 v 485 4338 V 103 w Fm(8)9 b Fc(\003)g(\002)p Fh(R)646 4258 y Fd(+)p 710 4338 V 770 4273 a Fk(GetLigh)o(t)o(fv)p 1056 4338 V 256 w Fm(0.0)p 1507 4338 V 223 w(Quadratic)14 b(atten.)1533 4323 y(factor)p 1977 4338 V 2003 4273 a(2.13.1)p 2133 4338 V 116 w(ligh)o(ting)p 2456 4338 V -76 4340 2534 2 v -77 4439 2 100 v 73 4375 a Fe(SPOT)p 157 4375 10 2 v 11 w(DIRECTION)p 477 4439 2 100 v 485 4439 V 192 w Fm(8)9 b Fc(\003)g(\002)p Fh(D)p 710 4439 V 110 w Fk(GetLigh)o(t)o (fv)p 1056 4439 V 168 w Fm(\(0.0,0.0,-1.0)o(\))p 1507 4439 V 134 w(Sp)q(otligh)o(t)k(direction)h(of)1533 4424 y(ligh)o(t)f Fh(i)p 1977 4439 V 2003 4375 a Fm(2.13.1)p 2133 4439 V 116 w(ligh)o(ting)p 2456 4439 V -76 4441 2534 2 v -77 4541 2 100 v 74 4476 a Fe(SPOT)p 158 4476 10 2 v 12 w(EXPONENT)p 477 4541 2 100 v 485 4541 V 183 w Fm(8)c Fc(\003)g(\002)p Fh(R)646 4461 y Fd(+)p 710 4541 V 770 4476 a Fk(GetLigh)o(t)o(fv)p 1056 4541 V 256 w Fm(0.0)p 1507 4541 V 223 w(Sp)q(otligh)o(t)k(exp)q(onen)o(t)i(of)1533 4526 y(ligh)o(t)e Fh(i)p 1977 4541 V 2003 4476 a Fm(2.13.1)p 2133 4541 V 116 w(ligh)o(ting)p 2456 4541 V -76 4542 2534 2 v -77 4592 2 50 v 97 4577 a Fe(SPOT)p 181 4577 10 2 v 11 w(CUTOFF)p 477 4592 2 50 v 485 4592 V 203 w Fm(8)c Fc(\003)g(\002)p Fh(R)646 4562 y Fd(+)p 710 4592 V 770 4577 a Fk(GetLigh)o(t)o(fv)p 1056 4592 V 235 w Fm(180.0)p 1507 4592 V 202 w(Sp)q(ot.)18 b(angle)c(of)f(ligh)o(t)g Fh(i)p 1977 4592 V 90 w Fm(2.13.1)p 2133 4592 V 116 w(ligh)o(ting)p 2456 4592 V -76 4594 2534 2 v -77 4644 2 50 v 153 4629 a Fe(LIGHT)p Fg(i)p 477 4644 V 485 4644 V 274 w Fm(8)c Fc(\003)g(\002)p Fh(B)p 710 4644 V 122 w Fk(IsEnabled)p 1056 4644 V 248 w Fb(F)m(alse)p 1507 4644 V 205 w Fm(T)m(rue)14 b(if)f(ligh)o(t)g Fh(i)h Fm(enabled)p 1977 4644 V 72 w(2.13.1)p 2133 4644 V 48 w(ligh)o(ting/enable)p 2456 4644 V -76 4645 2534 2 v -77 4745 2 100 v 79 4680 a Fe(COLOR)p 190 4680 10 2 v 11 w(INDEXES)p 477 4745 2 100 v 485 4745 V 177 w Fm(2)9 b Fc(\002)g Fm(3)g Fc(\002)h Fh(R)p 710 4745 V 50 w Fk(GetMaterialf)o(v)p 1056 4745 V 206 w Fm(0,1,1)p 1507 4745 V 206 w Fh(a)1555 4686 y Ff(m)1587 4680 y Fm(,)j Fh(d)1634 4686 y Ff(m)1665 4680 y Fm(,)g(and)h Fh(s)1790 4686 y Ff(m)1836 4680 y Fm(for)1533 4730 y(color)g(index)g(ligh)o(ting) p 1977 4745 V 2003 4680 a(2.13.1)p 2133 4745 V 116 w(ligh)o(ting)p 2456 4745 V -76 4747 2534 2 v 1825 2831 a currentpoint grestore moveto 1825 2831 a 320 2993 a FF(T)l(able)i(6.9.)22 b(Ligh)o(ting)16 b(\(see)g(also)h(T)l (able)f(2.5)h(for)f(defaults\))p eop %%Page: 158 167 158 166 bop 332 137 a FC(158)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)275 2494 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 275 2494 a 448 2560 a Fm(Get)f(v)n(alue)196 b(T)o(yp)q(e)1116 2523 y(Get)1116 2560 y(Cmnd)1417 2523 y(Initial)1417 2560 y(V)m(alue)164 b(Description)f(Sec.)112 b(A)o(ttribute)p 289 2577 2197 2 v 288 2627 2 50 v 450 2612 a Fe(POINT)p 550 2612 10 2 v 12 w(SIZE)p 773 2627 2 50 v 781 2627 V 210 w Fh(R)868 2597 y Fd(+)p 949 2627 V 1065 2612 a Fk(GetFloatv)p 1392 2627 V 167 w Fm(1.0)p 1551 2627 V 77 w(P)o(oin)o(t)13 b(size)p 2021 2627 V 311 w(3.3)p 2156 2627 V 157 w(p)q(oin)o(t)p 2485 2627 V 289 2628 2197 2 v 288 2678 2 50 v 416 2663 a Fe(POINT)p 516 2663 10 2 v 12 w(SMOOTH)p 773 2678 2 50 v 781 2678 V 189 w Fh(B)p 949 2678 V 188 w Fk(IsEnabled)p 1392 2678 V 150 w Fb(F)m(alse)p 1551 2678 V 59 w Fm(P)o(oin)o(t)g(an)o(tialiasing)f(on) p 2021 2678 V 110 w(3.3)p 2156 2678 V 89 w(p)q(oin)o(t/enable)p 2485 2678 V 289 2680 2197 2 v 288 2730 2 50 v 442 2715 a Fe(LINE)p 516 2715 10 2 v 12 w(WIDTH)p 773 2730 2 50 v 781 2730 V 202 w Fh(R)868 2700 y Fd(+)p 949 2730 V 1065 2715 a Fk(GetFloatv)p 1392 2730 V 167 w Fm(1.0)p 1551 2730 V 77 w(Line)i(width)p 2021 2730 V 289 w(3.4)p 2156 2730 V 172 w(line)p 2485 2730 V 289 2731 2197 2 v 288 2781 2 50 v 429 2766 a Fe(LINE)p 503 2766 10 2 v 12 w(SMOOTH)p 773 2781 2 50 v 781 2781 V 202 w Fh(B)p 949 2781 V 188 w Fk(IsEnabled)p 1392 2781 V 150 w Fb(F)m(alse)p 1551 2781 V 59 w Fm(Line)g(an)o(tialiasing)d(on)p 2021 2781 V 129 w(3.4)p 2156 2781 V 104 w(line/enable)p 2485 2781 V 289 2783 2197 2 v 288 2833 2 50 v 353 2818 a Fe(LINE)p 427 2818 10 2 v 12 w(STIPPLE)p 568 2818 V 11 w(P)n(A)n(TTERN)p 773 2833 2 50 v 781 2833 V 114 w Fh(Z)868 2803 y Fd(+)p 949 2833 V 1045 2818 a Fk(GetIn)o(tegerv)p 1392 2833 V 148 w Fm(1's)p 1551 2833 V 80 w(Line)j(stipple)p 2021 2833 V 257 w(3.4.2)p 2156 2833 V 155 w(line)p 2485 2833 V 289 2834 2197 2 v 288 2884 2 50 v 364 2869 a Fe(LINE)p 438 2869 10 2 v 11 w(STIPPLE)p 578 2869 V 12 w(REPEA)n(T)p 773 2884 2 50 v 781 2884 V 125 w Fh(Z)868 2854 y Fd(+)p 949 2884 V 1045 2869 a Fk(GetIn)o(tegerv)p 1392 2884 V 162 w Fm(1)p 1551 2884 V 94 w(Line)g(stipple)g(rep)q(eat)p 2021 2884 V 130 w(3.4.2)p 2156 2884 V 155 w(line)p 2485 2884 V 289 2886 2197 2 v 288 2936 2 50 v 432 2921 a Fe(LINE)p 506 2921 10 2 v 11 w(STIPPLE)p 773 2936 2 50 v 781 2936 V 205 w Fh(B)p 949 2936 V 188 w Fk(IsEnabled)p 1392 2936 V 150 w Fb(F)m(alse)p 1551 2936 V 59 w Fm(Line)g(stipple)g(enable)p 2021 2936 V 128 w(3.4.2)p 2156 2936 V 87 w(line/enable)p 2485 2936 V 289 2937 2197 2 v 288 3037 2 100 v 452 2972 a Fe(CULL)p 536 2972 10 2 v 11 w(F)m(A)o(CE)p 773 3037 2 100 v 781 3037 V 224 w Fh(B)p 949 3037 V 188 w Fk(IsEnabled)p 1392 3037 V 150 w Fb(F)m(alse)p 1551 3037 V 59 w Fm(P)o(olygon)e (culling)1577 3022 y(enabled)p 2021 3037 V 2047 2972 a(3.5.1)p 2156 3037 V 48 w(p)q(olygon/enable)p 2485 3037 V 289 3038 2197 2 v 288 3138 2 100 v 400 3073 a Fe(CULL)p 484 3073 10 2 v 10 w(F)m(A)o(CE)p 574 3073 V 11 w(MODE)p 773 3138 2 100 v 781 3138 V 167 w Fh(Z)871 3079 y Fd(3)p 949 3138 V 1045 3073 a Fk(GetIn)o(tegerv)p 1392 3138 V 129 w Fr(BACK)p 1551 3138 V 60 w Fm(Cull)h(fron)o(t/bac)o(k)g(facing) 1577 3123 y(p)q(olygons)p 2021 3138 V 2047 3073 a(3.5.1)p 2156 3138 V 116 w(p)q(olygon)p 2485 3138 V 289 3140 2197 2 v 288 3239 2 100 v 439 3175 a Fe(FR)o(ONT)p 549 3175 10 2 v 11 w(F)m(A)o(CE)p 773 3239 2 100 v 781 3239 V 205 w Fh(Z)871 3181 y Fd(2)p 949 3239 V 1045 3175 a Fk(GetIn)o(tegerv)p 1392 3239 V 139 w Fr(CCW)p 1551 3239 V 72 w Fm(P)o(olygon)f(fron)o (tface)1577 3224 y(CW/CCW)h(indicator)p 2021 3239 V 2047 3175 a(3.5.1)p 2156 3239 V 116 w(p)q(olygon)p 2485 3239 V 289 3241 2197 2 v 288 3341 2 100 v 390 3276 a Fe(POL)n(YGON)p 542 3276 10 2 v 12 w(SMOOTH)p 773 3341 2 100 v 781 3341 V 163 w Fh(B)p 949 3341 V 188 w Fk(IsEnabled)p 1392 3341 V 150 w Fb(F)m(alse)p 1551 3341 V 59 w Fm(P)o(olygon)f(an)o(tialiasing) 1577 3326 y(on)p 2021 3341 V 2063 3276 a(3.5)p 2156 3341 V 65 w(p)q(olygon/enable)p 2485 3341 V 289 3342 2197 2 v 288 3442 2 100 v 410 3377 a Fe(POL)n(YGON)p 562 3377 10 2 v 13 w(MODE)p 773 3442 2 100 v 781 3442 V 141 w Fm(2)d Fc(\002)g Fh(Z)906 3383 y Fd(3)p 949 3442 V 1045 3377 a Fk(GetIn)o(tegerv)p 1392 3442 V 129 w Fr(FILL)p 1551 3442 V 60 w Fm(P)o(olygon)j(rasterization)1577 3427 y(mo)q(de)h(\(fron)o(t)g(&)h(bac)o(k\))p 2021 3442 V 2047 3377 a(3.5.4)p 2156 3442 V 116 w(p)q(olygon)p 2485 3442 V 289 3444 2197 2 v 288 3493 2 50 v 328 3478 a Fe(POL)n(YGON)p 480 3478 10 2 v 12 w(OFFSET)p 614 3478 V 10 w(F)m(A)o(CTOR)p 773 3493 2 50 v 781 3493 V 101 w Fh(R)p 949 3493 V 183 w Fk(GetFloatv)p 1392 3493 V 183 w Fm(0)p 1551 3493 V 94 w(P)o(olygon)e(o\013set)j(factor)p 2021 3493 V 96 w(3.5.5)p 2156 3493 V 116 w(p)q(olygon)p 2485 3493 V 289 3495 2197 2 v 288 3545 2 50 v 344 3530 a Fe(POL)n(YGON)p 496 3530 10 2 v 12 w(OFFSET)p 630 3530 V 10 w(UNITS)p 773 3545 2 50 v 781 3545 V 118 w Fh(R)p 949 3545 V 183 w Fk(GetFloatv)p 1392 3545 V 183 w Fm(0)p 1551 3545 V 94 w(P)o(olygon)d(o\013set)j(bias)p 2021 3545 V 129 w(3.5.5)p 2156 3545 V 116 w(p)q(olygon)p 2485 3545 V 289 3547 2197 2 v 288 3696 2 150 v 342 3581 a Fe(POL)n(YGON)p 494 3581 10 2 v 12 w(OFFSET)p 628 3581 V 10 w(POINT)p 773 3696 2 150 v 781 3696 V 115 w Fh(B)p 949 3696 V 188 w Fk(IsEnabled)p 1392 3696 V 150 w Fb(F)m(alse)p 1551 3696 V 59 w Fm(P)o(olygon)d (o\013set)j(enable)1577 3631 y(for)e Fr(POINT)g Fm(mo)q(de)1577 3681 y(rasterization)p 2021 3696 V 2047 3581 a(3.5.5)p 2156 3696 V 48 w(p)q(olygon/enable)p 2485 3696 V 289 3698 2197 2 v 288 3847 2 150 v 355 3733 a Fe(POL)n(YGON)p 507 3733 10 2 v 12 w(OFFSET)p 641 3733 V 10 w(LINE)p 773 3847 2 150 v 781 3847 V 128 w Fh(B)p 949 3847 V 188 w Fk(IsEnabled)p 1392 3847 V 150 w Fb(F)m(alse)p 1551 3847 V 59 w Fm(P)o(olygon)f(o\013set)j(enable)1577 3782 y(for)e Fr(LINE)g Fm(mo)q(de)1577 3832 y(rasterization)p 2021 3847 V 2047 3733 a(3.5.5)p 2156 3847 V 48 w(p)q(olygon/enable)p 2485 3847 V 289 3849 2197 2 v 288 3998 2 150 v 357 3884 a Fe(POL)n(YGON)p 509 3884 10 2 v 12 w(OFFSET)p 643 3884 V 10 w(FILL)p 773 3998 2 150 v 781 3998 V 129 w Fh(B)p 949 3998 V 188 w Fk(IsEnabled)p 1392 3998 V 150 w Fb(F)m(alse)p 1551 3998 V 59 w Fm(P)o(olygon)f(o\013set)j(enable)1577 3933 y(for)e Fr(FILL)g Fm(mo)q(de)1577 3983 y(rasterization)p 2021 3998 V 2047 3884 a(3.5.5)p 2156 3998 V 48 w(p)q(olygon/enable)p 2485 3998 V 289 4000 2197 2 v 288 4050 2 50 v 531 4035 a Fe({)p 773 4050 V 781 4050 V 309 w Fh(I)p 949 4050 V 102 w Fk(GetP)o(olygonSt)o(i)o(pp)o(le)p 1392 4050 V 77 w Fm(1's)p 1551 4050 V 80 w(P)o(olygon)f(stipple)p 2021 4050 V 207 w(3.5)p 2156 4050 V 66 w(p)q(olygon-stipple)p 2485 4050 V 289 4051 2197 2 v 288 4101 2 50 v 392 4086 a Fe(POL)n(YGON)p 544 4086 10 2 v 13 w(STIPPLE)p 773 4101 2 50 v 781 4101 V 165 w Fh(B)p 949 4101 V 188 w Fk(IsEnabled)p 1392 4101 V 150 w Fb(F)m(alse)p 1551 4101 V 59 w Fm(P)o(olygon)g(stipple)i(enable)p 2021 4101 V 62 w(3.5.2)p 2156 4101 V 48 w(p)q(olygon/enable)p 2485 4101 V 289 4103 2197 2 v 1884 2494 a currentpoint grestore moveto 1884 2494 a 810 2653 a FF(T)l(able)i(6.10.)22 b(Rasterization)p eop %%Page: 159 168 159 167 bop 1547 137 a FC(159)-164 2715 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate -164 2715 a 31 2781 a Fm(Get)14 b(v)n(alue)257 b(T)o(yp)q(e)843 2744 y(Get)843 2781 y(Cmnd)1201 2744 y(Initial)1201 2781 y(V)m(alue)174 b(Description)163 b(Sec.)105 b(A)o(ttribute)p -150 2797 2418 2 v -151 2897 2 100 v -126 2832 a Fe(TEXTURE)p 26 2832 10 2 v 12 w(1D)p 379 2897 2 100 v 387 2897 V 419 w Fh(B)p 631 2897 V 271 w Fk(IsEnabled)p 1164 2897 V 206 w Fb(F)m(alse)p 1345 2897 V 69 w Fm(T)m(rue)15 b(if)e(1D)g (texturing)h(is)1370 2882 y(enabled)p 1815 2897 V 1840 2832 a(3.8.6)p 1950 2897 V 48 w(texture/enable)p 2266 2897 V -150 2899 2418 2 v -151 2998 2 100 v -126 2934 a Fe(TEXTURE)p 26 2934 10 2 v 12 w(2D)p 379 2998 2 100 v 387 2998 V 419 w Fh(B)p 631 2998 V 271 w Fk(IsEnabled)p 1164 2998 V 206 w Fb(F)m(alse)p 1345 2998 V 69 w Fm(T)m(rue)h(if)e(2D)g (texturing)h(is)1370 2983 y(enabled)p 1815 2998 V 1840 2934 a(3.8.6)p 1950 2998 V 48 w(texture/enable)p 2266 2998 V -150 3000 2418 2 v -151 3100 2 100 v -126 3035 a Fe(TEXTURE)p 26 3035 10 2 v 12 w(BINDING)p 171 3035 V 12 w(1D)p 379 3100 2 100 v 387 3100 V 261 w Fh(Z)511 3020 y Fd(+)p 631 3100 V 772 3035 a Fk(GetIn)o(tegerv)p 1164 3100 V 218 w Fm(0)p 1345 3100 V 104 w(T)m(exture)h(ob)r(ject)g(b)q (ound)1370 3085 y(to)f Fr(TEXTURE)p 1578 3085 14 2 v 14 w(1D)p 1815 3100 2 100 v 1840 3035 a Fm(3.8.4)p 1950 3100 V 116 w(texture)p 2266 3100 V -150 3101 2418 2 v -151 3201 2 100 v -126 3136 a Fe(TEXTURE)p 26 3136 10 2 v 12 w(BINDING)p 171 3136 V 12 w(2D)p 379 3201 2 100 v 387 3201 V 261 w Fh(Z)511 3121 y Fd(+)p 631 3201 V 772 3136 a Fk(GetIn)o(tegerv)p 1164 3201 V 218 w Fm(0)p 1345 3201 V 104 w(T)m(exture)h(ob)r(ject)g(b)q(ound)1370 3186 y(to)f Fr(TEXTURE)p 1578 3186 14 2 v 14 w(2D)p 1815 3201 2 100 v 1840 3136 a Fm(3.8.4)p 1950 3201 V 116 w(texture)p 2266 3201 V -150 3202 2418 2 v -151 3302 2 100 v -126 3237 a Fe(TEXTURE)p 379 3302 V 387 3302 V 437 w Fh(n)9 b Fc(\002)h Fh(I)p 631 3302 V 203 w Fk(GetT)l(exImage)p 1164 3302 V 155 w Fm(see)15 b(3.8)p 1345 3302 V 54 w Fh(x)p Fm(D)f(texture)h(image)d(at)1370 3287 y(l.o.d.)17 b Fh(i)p 1815 3302 V 1856 3237 a Fm(3.8)p 1950 3302 V 188 w({)p 2266 3302 V -150 3304 2418 2 v -151 3403 2 100 v -126 3339 a Fe(TEXTURE)p 26 3339 10 2 v 12 w(WIDTH)p 379 3403 2 100 v 387 3403 V 299 w Fh(n)9 b Fc(\002)g Fh(Z)549 3324 y Fd(+)p 631 3403 V 657 3339 a Fk(GetT)l(exLev)o(elP)o (aramete)o(r)p 1164 3403 V 102 w Fm(0)p 1345 3403 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 3388 y(sp)q(eci\014ed)k(width)p 1815 3403 V 1856 3339 a(3.8)p 1950 3403 V 188 w({)p 2266 3403 V -150 3405 2418 2 v -151 3505 2 100 v -126 3440 a Fe(TEXTURE)p 26 3440 10 2 v 12 w(HEIGHT)p 379 3505 2 100 v 387 3505 V 287 w Fh(n)9 b Fc(\002)g Fh(Z)549 3425 y Fd(+)p 631 3505 V 657 3440 a Fk(GetT)l(exLev)o(elP)o(aramete)o(r)p 1164 3505 V 102 w Fm(0)p 1345 3505 V 104 w(2D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 3490 y(sp)q(eci\014ed)k(heigh)o(t)p 1815 3505 V 1856 3440 a(3.8)p 1950 3505 V 188 w({)p 2266 3505 V -150 3506 2418 2 v -151 3606 2 100 v -126 3541 a Fe(TEXTURE)p 26 3541 10 2 v 12 w(BORDER)p 379 3606 2 100 v 387 3606 V 276 w Fh(n)9 b Fc(\002)g Fh(Z)549 3526 y Fd(+)p 631 3606 V 657 3541 a Fk(GetT)l(exLev)o(elP)o(aramete)o (r)p 1164 3606 V 102 w Fm(0)p 1345 3606 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 3591 y(sp)q(eci\014ed)k (b)q(order)f(width)p 1815 3606 V 1856 3541 a(3.8)p 1950 3606 V 188 w({)p 2266 3606 V -150 3608 2418 2 v -151 3707 2 100 v -126 3643 a Fe(TEXTURE)p 26 3643 10 2 v 12 w(INTERNAL)p 198 3643 V 12 w(F)o(ORMA)n(T)-126 3692 y(\(TEXTURE)p 38 3692 V 12 w(COMPONENTS\))p 379 3707 2 100 v 387 3707 V 440 3643 a Fh(n)9 b Fc(\002)h Fh(Z)544 3649 y Fd(42)p 631 3707 V 657 3643 a Fk(GetT)l(exLev)o(elP)o(aramete)o (r)p 1164 3707 V 102 w Fm(1)p 1345 3707 V 104 w Fh(x)p Fm(D)k(texture)h(image)d Fh(i)p Fm('s)1370 3692 y(in)o(ternal)i(image)e (format)p 1815 3707 V 1856 3643 a(3.8)p 1950 3707 V 188 w({)p 2266 3707 V -150 3709 2418 2 v -151 3809 2 100 v -126 3744 a Fe(TEXTURE)p 26 3744 10 2 v 12 w(RED)p 103 3744 V 11 w(SIZE)p 379 3809 2 100 v 387 3809 V 265 w Fh(n)d Fc(\002)g Fh(Z)549 3729 y Fd(+)p 631 3809 V 657 3744 a Fk(GetT)l(exLev)o(elP)o(aramete)o(r)p 1164 3809 V 102 w Fm(0)p 1345 3809 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 3794 y(red)j(resolution)p 1815 3809 V 1856 3744 a(3.8)p 1950 3809 V 188 w({)p 2266 3809 V -150 3810 2418 2 v -151 3910 2 100 v -126 3845 a Fe(TEXTURE)p 26 3845 10 2 v 12 w(GREEN)p 145 3845 V 13 w(SIZE)p 379 3910 2 100 v 387 3910 V 221 w Fh(n)9 b Fc(\002)g Fh(Z)549 3830 y Fd(+)p 631 3910 V 657 3845 a Fk(GetT)l(exLev)o(elP)o(aramete)o(r)p 1164 3910 V 102 w Fm(0)p 1345 3910 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 3895 y(green)j(resolution)p 1815 3910 V 1856 3845 a(3.8)p 1950 3910 V 188 w({)p 2266 3910 V -150 3912 2418 2 v -151 4011 2 100 v -126 3946 a Fe(TEXTURE)p 26 3946 10 2 v 12 w(BLUE)p 120 3946 V 12 w(SIZE)p 379 4011 2 100 v 387 4011 V 247 w Fh(n)9 b Fc(\002)g Fh(Z)549 3931 y Fd(+)p 631 4011 V 657 3946 a Fk(GetT)l(exLev)o(elP)o(aramete)o (r)p 1164 4011 V 102 w Fm(0)p 1345 4011 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 3996 y(blue)i(resolution) p 1815 4011 V 1856 3946 a(3.8)p 1950 4011 V 188 w({)p 2266 4011 V -150 4013 2418 2 v -151 4112 2 100 v -126 4048 a Fe(TEXTURE)p 26 4048 10 2 v 12 w(ALPHA)p 143 4048 V 12 w(SIZE)p 379 4112 2 100 v 387 4112 V 224 w Fh(n)9 b Fc(\002)g Fh(Z)549 4033 y Fd(+)p 631 4112 V 657 4048 a Fk(GetT)l(exLev)o(elP)o(aramete)o(r)p 1164 4112 V 102 w Fm(0)p 1345 4112 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 4097 y(alpha)h(resolution)p 1815 4112 V 1856 4048 a(3.8)p 1950 4112 V 188 w({)p 2266 4112 V -150 4114 2418 2 v -151 4214 2 100 v -126 4149 a Fe(TEXTURE)p 26 4149 10 2 v 12 w(LUMINANCE)p 225 4149 V 12 w(SIZE)p 379 4214 2 100 v 387 4214 V 142 w Fh(n)c Fc(\002)g Fh(Z)549 4134 y Fd(+)p 631 4214 V 657 4149 a Fk(GetT)l(exLev)o(elP)o(aramete)o (r)p 1164 4214 V 102 w Fm(0)p 1345 4214 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 4199 y(luminance)h (resolution)p 1815 4214 V 1856 4149 a(3.8)p 1950 4214 V 188 w({)p 2266 4214 V -150 4215 2418 2 v -151 4315 2 100 v -126 4250 a Fe(TEXTURE)p 26 4250 10 2 v 12 w(INTENSITY)p 207 4250 V 12 w(SIZE)p 379 4315 2 100 v 387 4315 V 160 w Fh(n)c Fc(\002)g Fh(Z)549 4235 y Fd(+)p 631 4315 V 657 4250 a Fk(GetT)l(exLev)o(elP)o(aramete)o(r)p 1164 4315 V 102 w Fm(0)p 1345 4315 V 104 w Fh(x)p Fm(D)14 b(texture)h(image)d Fh(i)p Fm('s)1370 4300 y(in)o(tensit)o(y)i (resolution)p 1815 4315 V 1856 4250 a(3.8)p 1950 4315 V 188 w({)p 2266 4315 V -150 4317 2418 2 v -151 4366 2 50 v -126 4352 a Fe(TEXTURE)p 26 4352 10 2 v 12 w(BORDER)p 169 4352 V 12 w(COLOR)p 379 4366 2 50 v 387 4366 V 156 w Fm(2)465 4336 y Fd(+)502 4352 y Fc(\002)9 b Fh(C)p 631 4366 V 139 w Fk(GetT)l(exP)o(arameter)p 1164 4366 V 108 w Fm(0,0,0,0)p 1345 4366 V 54 w(T)m(exture)15 b(b)q(order)g (color)p 1815 4366 V 110 w(3.8)p 1950 4366 V 133 w(texture)p 2266 4366 V -150 4368 2418 2 v -151 4468 2 100 v -126 4403 a Fe(TEXTURE)p 26 4403 10 2 v 12 w(MIN)p 98 4403 V 12 w(FIL)n(TER)p 379 4468 2 100 v 387 4468 V 217 w Fm(2)458 4388 y Fd(+)494 4403 y Fc(\002)10 b Fh(Z)564 4409 y Fd(6)p 631 4468 V 712 4403 a Fk(GetT)l(exP)o(arameter)p 1164 4468 V 107 w Fm(see)15 b(3.8)p 1345 4468 V 54 w(T)m(exture)g (mini\014cation)1370 4453 y(function)p 1815 4468 V 1840 4403 a(3.8.1)p 1950 4468 V 116 w(texture)p 2266 4468 V -150 4469 2418 2 v -151 4569 2 100 v -126 4504 a Fe(TEXTURE)p 26 4504 10 2 v 12 w(MA)o(G)p 109 4504 V 12 w(FIL)n(TER)p 379 4569 2 100 v 387 4569 V 206 w Fm(2)458 4489 y Fd(+)494 4504 y Fc(\002)10 b Fh(Z)564 4510 y Fd(2)p 631 4569 V 712 4504 a Fk(GetT)l(exP)o(arameter)p 1164 4569 V 107 w Fm(see)15 b(3.8)p 1345 4569 V 54 w(T)m(exture)g(magni\014cation)1370 4554 y(function)p 1815 4569 V 1840 4504 a(3.8.2)p 1950 4569 V 116 w(texture)p 2266 4569 V -150 4571 2418 2 v -151 4621 2 50 v -126 4606 a Fe(TEXTURE)p 26 4606 10 2 v 12 w(WRAP)p 132 4606 V 12 w(S)p 379 4621 2 50 v 387 4621 V 278 w Fm(2)458 4591 y Fd(+)494 4606 y Fc(\002)10 b Fh(Z)564 4612 y Fd(2)p 631 4621 V 712 4606 a Fk(GetT)l(exP)o (arameter)p 1164 4621 V 102 w Fr(REPEAT)p 1345 4621 V 48 w Fm(T)m(exture)15 b(wrap)f(mo)q(de)f(S)p 1815 4621 V 92 w(3.8)p 1950 4621 V 133 w(texture)p 2266 4621 V -150 4622 2418 2 v -151 4672 2 50 v -126 4657 a Fe(TEXTURE)p 26 4657 10 2 v 12 w(WRAP)p 132 4657 V 12 w(T)p 379 4672 2 50 v 387 4672 V 273 w Fm(1)458 4642 y Fd(+)494 4657 y Fc(\002)d Fh(Z)564 4663 y Fd(2)p 631 4672 V 712 4657 a Fk(GetT)l(exP)o(arameter)p 1164 4672 V 102 w Fr(REPEAT)p 1345 4672 V 48 w Fm(T)m(exture)15 b(wrap)f(mo)q(de)f(T)p 1815 4672 V 85 w(3.8)p 1950 4672 V 133 w(texture)p 2266 4672 V -150 4674 2418 2 v -151 4725 2 52 v -126 4711 a Fe(TEXTURE)p 26 4711 10 2 v 12 w(PRIORITY)p 379 4725 2 52 v 387 4725 V 224 w Fm(2)434 4695 y Fd(+)470 4711 y Fc(\002)d Fh(R)544 4695 y Fd([0)p Ff(;)p Fd(1])p 631 4725 V 692 4711 a Fk(GetT)l(exP)o(arameterfv)p 1164 4725 V 137 w Fm(1)p 1345 4725 V 104 w(T)m(exture)15 b(ob)r(ject)g(priorit)o (y)p 1815 4725 V 52 w(3.8.4)p 1950 4725 V 116 w(texture)p 2266 4725 V -150 4727 2418 2 v -151 4777 2 50 v -126 4762 a Fe(TEXTURE)p 26 4762 10 2 v 12 w(RESIDENT)p 379 4777 2 50 v 387 4777 V 251 w Fm(2)465 4747 y Fd(+)501 4762 y Fc(\002)10 b Fh(B)p 631 4777 V 119 w Fk(GetT)l(exP)o(arameteri)o (v)p 1164 4777 V 102 w Fb(F)m(alse)p 1345 4777 V 69 w Fm(T)m(exture)15 b(residency)p 1815 4777 V 149 w(3.8.4)p 1950 4777 V 116 w(texture)p 2266 4777 V -150 4779 2418 2 v 1899 2715 a currentpoint grestore moveto 1899 2715 a 567 2874 a FF(T)l(able)h(6.11.)22 b(T)l(exture)15 b(Ob)s(jects)p eop %%Page: 160 169 160 168 bop 332 137 a FC(160)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)659 2421 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 659 2421 a 795 2487 a Fm(Get)f(v)n(alue)161 b(T)o(yp)q(e)1373 2450 y(Get)1373 2487 y(Cmnd)1670 2450 y(Initial)1670 2487 y(V)m(alue)214 b(Description)174 b(Sec.)116 b(A)o(ttribute)p 673 2504 2124 2 v 672 2604 2 100 v 720 2539 a Fe(TEXTURE)p 872 2539 10 2 v 11 w(ENV)p 947 2539 V 12 w(MODE)p 1083 2604 2 100 v 1091 2604 V 104 w Fh(Z)1182 2545 y Fd(4)p 1263 2604 V 1291 2539 a Fk(GetT)l(exEn)o(viv)p 1593 2604 V 70 w Fr(MODULATE)p 1854 2604 V 67 w Fm(T)m(exture)15 b(application)1880 2589 y(function)p 2324 2604 V 2360 2539 a(3.8.5)p 2480 2604 V 127 w(texture)p 2796 2604 V 673 2605 2124 2 v 672 2705 2 100 v 712 2640 a Fe(TEXTURE)p 864 2640 10 2 v 12 w(ENV)p 940 2640 V 12 w(COLOR)p 1083 2705 2 100 v 1091 2705 V 103 w Fh(C)p 1263 2705 V 99 w Fk(GetT)l(exEn)o(vfv)p 1593 2705 V 98 w Fm(0,0,0,0)p 1854 2705 V 94 w(T)m(exture)g(en)o(vironmen)o(t)1880 2690 y(color)p 2324 2705 V 2360 2640 a(3.8.5)p 2480 2705 V 127 w(texture)p 2796 2705 V 673 2707 2124 2 v 672 2806 2 100 v 757 2741 a Fe(TEXTURE)p 909 2741 10 2 v 12 w(GEN)p 986 2741 V 12 w Fg(x)p 1083 2806 2 100 v 1091 2806 V 112 w Fm(4)9 b Fc(\002)h Fh(B)p 1263 2806 V 98 w Fk(IsEnabled)p 1593 2806 V 144 w Fb(F)m(alse)p 1854 2806 V 110 w Fm(T)m(exgen)k (enabled)g(\()p Fh(x)g Fm(is)1880 2791 y(S,)g(T,)f(R,)g(or)h(Q\))p 2324 2806 V 2350 2741 a(2.10.4)p 2480 2806 V 48 w(texture/enable)p 2796 2806 V 673 2808 2124 2 v 672 2957 2 150 v 796 2843 a Fe(EYE)p 860 2843 10 2 v 12 w(PLANE)p 1083 2957 2 150 v 1091 2957 V 144 w Fm(4)9 b Fc(\002)g Fh(R)1220 2828 y Fd(4)p 1263 2957 V 1289 2843 a Fk(GetT)l(exGenfv)p 1593 2957 V 67 w Fm(see)15 b(2.10.4)p 1854 2957 V 67 w(T)m(exgen)f(plane)g(equation)1880 2893 y(co)q(e\016cien)o(ts)h(\(for) f(S,)f(T,)1880 2942 y(R,)g(and)h(Q\))p 2324 2957 V 2350 2843 a(2.10.4)p 2480 2957 V 116 w(texture)p 2796 2957 V 673 2959 2124 2 v 672 3108 2 150 v 766 2994 a Fe(OBJECT)p 892 2994 10 2 v 11 w(PLANE)p 1083 3108 2 150 v 1091 3108 V 113 w Fm(4)9 b Fc(\002)g Fh(R)1220 2979 y Fd(4)p 1263 3108 V 1289 2994 a Fk(GetT)l(exGenfv)p 1593 3108 V 67 w Fm(see)15 b(2.10.4)p 1854 3108 V 67 w(T)m(exgen)f(ob)r(ject)h(linear) 1880 3044 y(co)q(e\016cien)o(ts)g(\(for)f(S,)f(T,)1880 3093 y(R,)g(and)h(Q\))p 2324 3108 V 2350 2994 a(2.10.4)p 2480 3108 V 116 w(texture)p 2796 3108 V 673 3110 2124 2 v 672 3259 2 150 v 719 3145 a Fe(TEXTURE)p 871 3145 10 2 v 12 w(GEN)p 948 3145 V 12 w(MODE)p 1083 3259 2 150 v 1091 3259 V 68 w Fm(4)9 b Fc(\002)g Fh(Z)1218 3151 y Fd(3)p 1263 3259 V 1289 3145 a Fk(GetT)l(exGeniv)p 1593 3259 V 48 w Fr(EYE)p 1687 3145 14 2 v 16 w(LINEAR)p 1854 3259 2 150 v 48 w Fm(F)m(unction)14 b(used)g(for)1880 3195 y(texgen)h(\(for)e(S,)h(T,)f(R,)1880 3245 y(and)h(Q)p 2324 3259 V 2350 3145 a(2.10.4)p 2480 3259 V 116 w(texture)p 2796 3259 V 673 3261 2124 2 v 1499 2421 a currentpoint grestore moveto 1499 2421 a 549 2581 a FF(T)l(able)i(6.12.)22 b(T)l(exture)16 b(En)o(vironmen)o(t)e (and)i(Generation)p eop %%Page: 161 170 161 169 bop 1547 137 a FC(161)136 2632 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 136 2632 a 389 2698 a Fm(Get)14 b(v)n(alue)268 b(T)o(yp)q(e)1051 2661 y(Get)1051 2698 y(Cmnd)1304 2661 y(Initial)1304 2698 y(V)m(alue)185 b(Description)163 b(Sec.)158 b(A)o(ttribute)p 150 2715 2335 2 v 149 2765 2 50 v 369 2750 a Fe(SCISSOR)p 500 2750 10 2 v 11 w(TEST)p 794 2765 2 50 v 802 2765 V 272 w Fh(B)p 955 2765 V 110 w Fk(IsEnabled)p 1257 2765 V 102 w Fb(F)m(alse)p 1459 2765 V 80 w Fm(Scissoring)14 b(enabled)p 1929 2765 V 140 w(4.1.2)p 2064 2765 V 107 w(scissor/enable)p 2484 2765 V 150 2766 2335 2 v 149 2816 2 50 v 377 2801 a Fe(SCISSOR)p 508 2801 10 2 v 10 w(BO)o(X)p 794 2816 2 50 v 802 2816 V 247 w Fm(4)9 b Fc(\002)g Fh(Z)p 955 2816 V 53 w Fk(GetIn)o(tegerv)p 1257 2816 V 48 w Fm(see)15 b(4.1.2)p 1459 2816 V 48 w(Scissor)f(b)q(o)o (x)p 1929 2816 V 268 w(4.1.2)p 2064 2816 V 175 w(scissor)p 2484 2816 V 150 2818 2335 2 v 149 2868 2 50 v 380 2853 a Fe(ALPHA)p 487 2853 10 2 v 13 w(TEST)p 794 2868 2 50 v 802 2868 V 283 w Fh(B)p 955 2868 V 110 w Fk(IsEnabled)p 1257 2868 V 102 w Fb(F)m(alse)p 1459 2868 V 80 w Fm(Alpha)f(test)i (enabled)p 1929 2868 V 128 w(4.1.3)p 2064 2868 V 62 w (color-bu\013er/enable)p 2484 2868 V 150 2869 2335 2 v 149 2919 2 50 v 332 2904 a Fe(ALPHA)p 439 2904 10 2 v 12 w(TEST)p 532 2904 V 11 w(FUNC)p 794 2919 2 50 v 802 2919 V 229 w Fh(Z)884 2910 y Fd(8)p 955 2919 V 980 2904 a Fk(GetIn)o(tegerv)p 1257 2919 V 58 w Fr(ALWAYS)p 1459 2919 V 60 w Fm(Alpha)e(test)i(function)p 1929 2919 V 117 w(4.1.3)p 2064 2919 V 130 w(color-bu\013er)p 2484 2919 V 150 2921 2335 2 v 149 3020 2 100 v 344 2956 a Fe(ALPHA)p 451 2956 10 2 v 12 w(TEST)p 544 2956 V 11 w(REF)p 794 3020 2 100 v 802 3020 V 234 w Fh(R)881 2941 y Fd(+)p 955 3020 V 980 2956 a Fk(GetIn)o(tegerv)p 1257 3020 V 113 w Fm(0)p 1459 3020 V 116 w(Alpha)e(test)i(reference)1485 3006 y(v)n(alue)p 1929 3020 V 1955 2956 a(4.1.3)p 2064 3020 V 130 w(color-bu\013er)p 2484 3020 V 150 3022 2335 2 v 149 3072 2 50 v 367 3057 a Fe(STENCIL)p 502 3057 10 2 v 11 w(TEST)p 794 3072 2 50 v 802 3072 V 270 w Fh(B)p 955 3072 V 110 w Fk(IsEnabled)p 1257 3072 V 102 w Fb(F)m(alse)p 1459 3072 V 80 w Fm(Stenciling)e(enabled)p 1929 3072 V 141 w(4.1.4)p 2064 3072 V 48 w(stencil-bu\013er/enable)p 2484 3072 V 150 3074 2335 2 v 149 3123 2 50 v 365 3108 a Fe(STENCIL)p 500 3108 10 2 v 10 w(FUNC)p 794 3123 2 50 v 802 3123 V 262 w Fh(Z)884 3114 y Fd(8)p 955 3123 V 980 3108 a Fk(GetIn)o(tegerv)p 1257 3123 V 58 w Fr(ALWAYS)p 1459 3123 V 60 w Fm(Stencil)h(function)p 1929 3123 V 185 w(4.1.4)p 2064 3123 V 116 w(stencil-bu\013er)p 2484 3123 V 150 3125 2335 2 v 149 3175 2 50 v 306 3160 a Fe(STENCIL)p 441 3160 10 2 v 10 w(V)m(ALUE)p 553 3160 V 12 w(MASK)p 794 3175 2 50 v 802 3175 V 198 w Fh(Z)881 3145 y Fd(+)p 955 3175 V 980 3160 a Fk(GetIn)o(tegerv)p 1257 3175 V 99 w Fm(1's)p 1459 3175 V 102 w(Stencil)g(mask)p 1929 3175 V 239 w(4.1.4)p 2064 3175 V 116 w(stencil-bu\013er)p 2484 3175 V 150 3177 2335 2 v 149 3226 2 50 v 376 3211 a Fe(STENCIL)p 511 3211 10 2 v 11 w(REF)p 794 3226 2 50 v 802 3226 V 268 w Fh(Z)881 3196 y Fd(+)p 955 3226 V 980 3211 a Fk(GetIn)o(tegerv)p 1257 3226 V 113 w Fm(0)p 1459 3226 V 116 w(Stencil)g(reference)i(v)n(alue)p 1929 3226 V 66 w(4.1.4)p 2064 3226 V 116 w(stencil-bu\013er)p 2484 3226 V 150 3228 2335 2 v 149 3278 2 50 v 373 3263 a Fe(STENCIL)p 508 3263 10 2 v 11 w(F)m(AIL)p 794 3278 2 50 v 802 3278 V 270 w Fh(Z)884 3269 y Fd(6)p 955 3278 V 980 3263 a Fk(GetIn)o(tegerv)p 1257 3278 V 80 w Fr(KEEP)p 1459 3278 V 82 w Fm(Stencil)e(fail)e(action)p 1929 3278 V 153 w(4.1.4)p 2064 3278 V 116 w(stencil-bu\013er)p 2484 3278 V 150 3279 2335 2 v 149 3379 2 100 v 272 3314 a Fe(STENCIL)p 407 3314 10 2 v 10 w(P)n(ASS)p 491 3314 V 11 w(DEPTH)p 609 3314 V 12 w(F)m(AIL)p 794 3379 2 100 v 802 3379 V 168 w Fh(Z)884 3320 y Fd(6)p 955 3379 V 980 3314 a Fk(GetIn)o(tegerv)p 1257 3379 V 80 w Fr(KEEP)p 1459 3379 V 82 w Fm(Stencil)i(depth)g(bu\013er)1485 3364 y(fail)e(action)p 1929 3379 V 1955 3314 a(4.1.4)p 2064 3379 V 116 w(stencil-bu\013er)p 2484 3379 V 150 3381 2335 2 v 149 3480 2 100 v 269 3416 a Fe(STENCIL)p 404 3416 10 2 v 10 w(P)n(ASS)p 488 3416 V 11 w(DEPTH)p 606 3416 V 12 w(P)n(ASS)p 794 3480 2 100 v 802 3480 V 166 w Fh(Z)884 3422 y Fd(6)p 955 3480 V 980 3416 a Fk(GetIn)o(tegerv)p 1257 3480 V 80 w Fr(KEEP)p 1459 3480 V 82 w Fm(Stencil)i(depth)g (bu\013er)1485 3465 y(pass)g(action)p 1929 3480 V 1955 3416 a(4.1.4)p 2064 3480 V 116 w(stencil-bu\013er)p 2484 3480 V 150 3482 2335 2 v 149 3532 2 50 v 380 3517 a Fe(DEPTH)p 489 3517 10 2 v 11 w(TEST)p 794 3532 2 50 v 802 3532 V 283 w Fh(B)p 955 3532 V 110 w Fk(IsEnabled)p 1257 3532 V 102 w Fb(F)m(alse)p 1459 3532 V 80 w Fm(Depth)g(bu\013er)h(enabled)p 1929 3532 V 87 w(4.1.5)p 2064 3532 V 54 w(depth-bu\013er/enable)p 2484 3532 V 150 3534 2335 2 v 149 3633 2 100 v 377 3568 a Fe(DEPTH)p 486 3568 10 2 v 12 w(FUNC)p 794 3633 2 100 v 802 3633 V 274 w Fh(Z)884 3574 y Fd(8)p 955 3633 V 980 3568 a Fk(GetIn)o(tegerv)p 1257 3633 V 80 w Fr(LESS)p 1459 3633 V 82 w Fm(Depth)f(bu\013er)h(test)1485 3618 y(function)p 1929 3633 V 1955 3568 a(4.1.5)p 2064 3633 V 122 w(depth-bu\013er)p 2484 3633 V 150 3635 2335 2 v 149 3685 2 50 v 427 3670 a Fe(BLEND)p 794 3685 V 802 3685 V 330 w Fh(B)p 955 3685 V 110 w Fk(IsEnabled)p 1257 3685 V 102 w Fb(F)m(alse)p 1459 3685 V 80 w Fm(Blending)e(enabled)p 1929 3685 V 158 w(4.1.6)p 2064 3685 V 62 w(color-bu\013er/enable)p 2484 3685 V 150 3686 2335 2 v 149 3786 2 100 v 391 3721 a Fe(BLEND)p 498 3721 10 2 v 12 w(SR)o(C)p 794 3786 2 100 v 802 3786 V 288 w Fh(Z)884 3727 y Fd(9)p 955 3786 V 980 3721 a Fk(GetIn)o(tegerv)p 1257 3786 V 91 w Fr(ONE)p 1459 3786 V 93 w Fm(Blending)g(source)1485 3771 y(function)p 1929 3786 V 1955 3721 a(4.1.6)p 2064 3786 V 130 w(color-bu\013er)p 2484 3786 V 150 3788 2335 2 v 149 3887 2 100 v 390 3822 a Fe(BLEND)p 497 3822 10 2 v 12 w(DST)p 794 3887 2 100 v 802 3887 V 287 w Fh(Z)884 3828 y Fd(8)p 955 3887 V 980 3822 a Fk(GetIn)o(tegerv)p 1257 3887 V 80 w Fr(ZERO)p 1459 3887 V 82 w Fm(Blending)g(destination)1485 3872 y(function)p 1929 3887 V 1955 3822 a(4.1.6)p 2064 3887 V 130 w(color-bu\013er)p 2484 3887 V 150 3889 2335 2 v 149 3939 2 50 v 419 3924 a Fe(DITHER)p 794 3939 V 802 3939 V 323 w Fh(B)p 955 3939 V 110 w Fk(IsEnabled)p 1257 3939 V 105 w Fb(T)m(rue)p 1459 3939 V 83 w Fm(Dithering)g(enabled)p 1929 3939 V 146 w(4.1.7)p 2064 3939 V 62 w(color-bu\013er/enable)p 2484 3939 V 150 3940 2335 2 v 149 3990 2 50 v 189 3975 a Fe(INDEX)p 289 3975 10 2 v 12 w(LOGIC)p 399 3975 V 11 w(OP)e(\(v1.0:)j(GL)p 596 3975 V 11 w(LOGIC)p 705 3975 V 11 w(OP\))p 794 3990 2 50 v 802 3990 V 93 w Fh(B)p 955 3990 V 110 w Fk(IsEnabled)p 1257 3990 V 102 w Fb(F)m(alse)p 1459 3990 V 80 w Fm(Index)g(logic)f(op)h(enabled)p 1929 3990 V 62 w(4.1.8)p 2064 3990 V 62 w(color-bu\013er/enable)p 2484 3990 V 150 3992 2335 2 v 149 4042 2 50 v 343 4027 a Fe(COLOR)p 454 4027 10 2 v 11 w(LOGIC)p 563 4027 V 11 w(OP)p 794 4042 2 50 v 802 4042 V 247 w Fh(B)p 955 4042 V 110 w Fk(IsEnabled)p 1257 4042 V 102 w Fb(F)m(alse)p 1459 4042 V 80 w Fm(Color)f(logic)g(op)g(enabled)p 1929 4042 V 65 w(4.1.8)p 2064 4042 V 62 w(color-bu\013er/enable)p 2484 4042 V 150 4043 2335 2 v 149 4093 2 50 v 351 4078 a Fe(LOGIC)p 451 4078 10 2 v 11 w(OP)p 505 4078 V 11 w(MODE)p 794 4093 2 50 v 802 4093 V 240 w Fh(Z)875 4084 y Fd(16)p 955 4093 V 980 4078 a Fk(GetIn)o(tegerv)p 1257 4093 V 80 w Fr(COPY)p 1459 4093 V 82 w Fm(Logic)g(op)h(function)p 1929 4093 V 152 w(4.1.8)p 2064 4093 V 130 w(color-bu\013er)p 2484 4093 V 150 4095 2335 2 v 1599 2632 a currentpoint grestore moveto 1599 2632 a 560 2792 a FF(T)l(able)i(6.13.)22 b(Pixel)15 b(Op)q(erations)p eop %%Page: 162 171 162 170 bop 332 137 a FC(162)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)581 2326 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 581 2326 a 725 2392 a Fm(Get)f(v)n(alue)173 b(T)o(yp)q(e)1315 2355 y(Get)1315 2392 y(Cmnd)1576 2355 y(Initial)1576 2392 y(V)m(alue)186 b(Description)163 b(Sec.)89 b(A)o(ttribute)p 595 2409 2027 2 v 594 2509 2 100 v 700 2444 a Fe(DRA)m(W)p 796 2444 10 2 v 11 w(BUFFER)p 1021 2509 2 100 v 1029 2509 V 150 w Fh(Z)1108 2450 y Fd(10)p Fa(\003)p 1210 2509 V 1244 2444 a Fk(GetIn)o(tegerv)p 1529 2509 V 56 w Fm(see)15 b(4.2.1)p 1732 2509 V 48 w(Bu\013ers)h(selected)g(for)1757 2494 y(dra)o(wing)p 2201 2509 V 2227 2444 a(4.2.1)p 2336 2509 V 62 w(color-bu\013er)p 2621 2509 V 595 2510 2027 2 v 594 2560 2 50 v 663 2545 a Fe(INDEX)p 763 2545 10 2 v 12 w(WRITEMASK)p 1021 2560 2 50 v 1029 2560 V 124 w Fh(Z)1122 2530 y Fd(+)p 1210 2560 V 1244 2545 a Fk(GetIn)o(tegerv)p 1529 2560 V 108 w Fm(1's)p 1732 2560 V 101 w(Color)d(index)h(writemask) p 2201 2560 V 58 w(4.2.2)p 2336 2560 V 62 w(color-bu\013er)p 2621 2560 V 595 2562 2027 2 v 594 2661 2 100 v 658 2597 a Fe(COLOR)p 769 2597 10 2 v 11 w(WRITEMASK)p 1021 2661 2 100 v 1029 2661 V 96 w Fm(4)9 b Fc(\002)g Fh(B)p 1210 2661 V 65 w Fk(GetBo)q(olean)o(v)p 1529 2661 V 82 w Fb(T)m(rue)p 1732 2661 V 82 w Fm(Color)k(write)i(enables;)f(R,)1757 2646 y(G,)f(B,)h(or)g(A)p 2201 2661 V 2227 2597 a(4.2.2)p 2336 2661 V 62 w(color-bu\013er)p 2621 2661 V 595 2663 2027 2 v 594 2763 2 100 v 659 2698 a Fe(DEPTH)p 768 2698 10 2 v 11 w(WRITEMASK)p 1021 2763 2 100 v 1029 2763 V 132 w Fh(B)p 1210 2763 V 101 w Fk(GetBo)q(olean)o(v)p 1529 2763 V 82 w Fb(T)m(rue)p 1732 2763 V 82 w Fm(Depth)h(bu\013er)f (enabled)1757 2748 y(for)g(writing)p 2201 2763 V 2227 2698 a(4.2.2)p 2336 2763 V 54 w(depth-bu\013er)p 2621 2763 V 595 2764 2027 2 v 594 2864 2 100 v 646 2799 a Fe(STENCIL)p 781 2799 10 2 v 11 w(WRITEMASK)p 1021 2864 2 100 v 1029 2864 V 107 w Fh(Z)1122 2784 y Fd(+)p 1210 2864 V 1244 2799 a Fk(GetIn)o(tegerv)p 1529 2864 V 108 w Fm(1's)p 1732 2864 V 101 w(Stencil)g(bu\013er)1757 2849 y(writemask)p 2201 2864 V 2227 2799 a(4.2.2)p 2336 2864 V 48 w(stencil-bu\013er)p 2621 2864 V 595 2866 2027 2 v 594 2965 2 100 v 646 2900 a Fe(COLOR)p 757 2900 10 2 v 11 w(CLEAR)p 873 2900 V 11 w(V)m(ALUE)p 1021 2965 2 100 v 1029 2965 V 120 w Fh(C)p 1210 2965 V 130 w Fk(GetFloatv)p 1529 2965 V 94 w Fm(0,0,0,0)p 1732 2965 V 65 w(Color)f(bu\013er)i (clear)1757 2950 y(v)n(alue)e(\(R)o(GBA)h(mo)q(de\))p 2201 2965 V 2227 2900 a(4.2.3)p 2336 2965 V 62 w(color-bu\013er)p 2621 2965 V 595 2967 2027 2 v 594 3067 2 100 v 651 3002 a Fe(INDEX)p 751 3002 10 2 v 12 w(CLEAR)p 868 3002 V 11 w(V)m(ALUE)p 1021 3067 2 100 v 1029 3067 V 114 w Fh(C)s(I)p 1210 3067 V 120 w Fk(GetFloatv)p 1529 3067 V 143 w Fm(0)p 1732 3067 V 115 w(Color)e(bu\013er)h(clear)g(v)n(alue)1757 3052 y(\(color)h(index)g(mo)q(de\))p 2201 3067 V 2227 3002 a(4.2.3)p 2336 3067 V 62 w(color-bu\013er)p 2621 3067 V 595 3068 2027 2 v 594 3168 2 100 v 647 3103 a Fe(DEPTH)p 756 3103 10 2 v 11 w(CLEAR)p 872 3103 V 11 w(V)m(ALUE)p 1021 3168 2 100 v 1029 3168 V 107 w Fh(R)1122 3088 y Fd(+)p 1210 3168 V 1244 3103 a Fk(GetIn)o(tegerv)p 1529 3168 V 122 w Fm(1)p 1732 3168 V 115 w(Depth)h(bu\013er)f(clear) 1757 3153 y(v)n(alue)p 2201 3168 V 2227 3103 a(4.2.3)p 2336 3168 V 54 w(depth-bu\013er)p 2621 3168 V 595 3169 2027 2 v 594 3219 2 50 v 634 3204 a Fe(STENCIL)p 769 3204 10 2 v 11 w(CLEAR)p 885 3204 V 11 w(V)m(ALUE)p 1021 3219 2 50 v 1029 3219 V 95 w Fh(Z)1122 3189 y Fd(+)p 1210 3219 V 1244 3204 a Fk(GetIn)o(tegerv)p 1529 3219 V 122 w Fm(0)p 1732 3219 V 115 w(Stencil)g(clear)h(v)n(alue)p 2201 3219 V 140 w(4.2.3)p 2336 3219 V 48 w(stencil-bu\013er)p 2621 3219 V 595 3221 2027 2 v 594 3321 2 100 v 643 3256 a Fe(A)o(CCUM)p 759 3256 10 2 v 11 w(CLEAR)p 875 3256 V 12 w(V)m(ALUE)p 1021 3321 2 100 v 1029 3321 V 68 w Fm(4)9 b Fc(\002)g Fh(R)1158 3241 y Fd(+)p 1210 3321 V 1264 3256 a Fk(GetFloatv)p 1529 3321 V 143 w Fm(0)p 1732 3321 V 115 w(Accum)o(ulation)j(bu\013er)1757 3306 y(clear)j(v)n(alue)p 2201 3321 V 2227 3256 a(4.2.3)p 2336 3321 V 48 w(accum-bu\013er)p 2621 3321 V 595 3322 2027 2 v 1577 2326 a currentpoint grestore moveto 1577 2326 a 734 2486 a FF(T)l(able)h(6.14.)22 b(F)l(ramebu\013er)15 b(Con)o(trol)p eop %%Page: 163 172 163 171 bop 1547 137 a FC(163)219 2252 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 219 2252 a 358 2318 a Fm(Get)14 b(v)n(alue)150 b(T)o(yp)q(e)906 2281 y(Get)906 2318 y(Cmnd)1146 2281 y(Initial)1146 2318 y(V)m(alue)164 b(Description)156 b(Sec.)59 b(A)o(ttribute)p 232 2334 1878 2 v 231 2434 2 100 v 278 2369 a Fe(UNP)n(A)o(CK)p 408 2369 10 2 v 12 w(SW)m(AP)p 506 2369 V 12 w(BYTES)p 649 2434 2 100 v 657 2434 V 95 w Fh(B)p 801 2434 V 82 w Fk(GetBo)q(olean)o(v)p 1120 2434 V 57 w Fb(F)m(alse)p 1280 2434 V 58 w Fm(V)m(alue)14 b(of)1305 2419 y Fr(UNPACK)p 1440 2419 14 2 v 15 w(SWAP)p 1543 2419 V 15 w(BYTES)p 1749 2434 2 100 v 1784 2369 a Fm(4.3)p 1871 2434 V 58 w(pixel-store)p 2109 2434 V 232 2436 1878 2 v 231 2535 2 100 v 299 2471 a Fe(UNP)n(A)o(CK)p 429 2471 10 2 v 12 w(LSB)p 498 2471 V 10 w(FIRST)p 649 2535 2 100 v 657 2535 V 115 w Fh(B)p 801 2535 V 82 w Fk(GetBo)q(olean)o(v)p 1120 2535 V 57 w Fb(F)m(alse)p 1280 2535 V 58 w Fm(V)m(alue)g(of)1305 2520 y Fr(UNPACK)p 1440 2520 14 2 v 15 w(LSB)p 1521 2520 V 15 w(FIRST)p 1749 2535 2 100 v 1784 2471 a Fm(4.3)p 1871 2535 V 58 w(pixel-store)p 2109 2535 V 232 2537 1878 2 v 231 2637 2 100 v 271 2572 a Fe(UNP)n(A)o(CK)p 401 2572 10 2 v 12 w(R)o(O)o(W)p 486 2572 V 12 w(LENGTH)p 649 2637 2 100 v 657 2637 V 76 w Fh(Z)731 2557 y Fd(+)p 801 2637 V 835 2572 a Fk(GetIn)o(tegerv)p 1120 2637 V 100 w Fm(0)p 1280 2637 V 94 w(V)m(alue)g(of)1305 2622 y Fr(UNPACK)p 1440 2622 14 2 v 15 w(ROW)p 1521 2622 V 15 w(LENGTH)p 1749 2637 2 100 v 1784 2572 a Fm(4.3)p 1871 2637 V 58 w(pixel-store)p 2109 2637 V 232 2638 1878 2 v 231 2738 2 100 v 292 2673 a Fe(UNP)n(A)o(CK)p 422 2673 10 2 v 11 w(SKIP)p 504 2673 V 12 w(R)o(O)o(WS)p 649 2738 2 100 v 657 2738 V 96 w Fh(Z)731 2658 y Fd(+)p 801 2738 V 835 2673 a Fk(GetIn)o(tegerv)p 1120 2738 V 100 w Fm(0)p 1280 2738 V 94 w(V)m(alue)g(of)1305 2723 y Fr(UNPACK)p 1440 2723 14 2 v 15 w(SKIP)p 1543 2723 V 15 w(ROWS)p 1749 2738 2 100 v 1784 2673 a Fm(4.3)p 1871 2738 V 58 w(pixel-store)p 2109 2738 V 232 2740 1878 2 v 231 2839 2 100 v 282 2774 a Fe(UNP)n(A)o(CK)p 412 2774 10 2 v 12 w(SKIP)p 495 2774 V 11 w(PIXELS)p 649 2839 2 100 v 657 2839 V 87 w Fh(Z)731 2759 y Fd(+)p 801 2839 V 835 2774 a Fk(GetIn)o(tegerv)p 1120 2839 V 100 w Fm(0)p 1280 2839 V 94 w(V)m(alue)g(of)1305 2824 y Fr(UNPACK)p 1440 2824 14 2 v 15 w(SKIP)p 1543 2824 V 15 w(PIXELS)p 1749 2839 2 100 v 1784 2774 a Fm(4.3)p 1871 2839 V 58 w(pixel-store)p 2109 2839 V 232 2841 1878 2 v 231 2940 2 100 v 283 2876 a Fe(UNP)n(A)o(CK)p 413 2876 10 2 v 12 w(ALIGNMENT)p 649 2940 2 100 v 657 2940 V 89 w Fh(Z)731 2861 y Fd(+)p 801 2940 V 835 2876 a Fk(GetIn)o(tegerv)p 1120 2940 V 100 w Fm(4)p 1280 2940 V 94 w(V)m(alue)g(of)1305 2926 y Fr(UNPACK)p 1440 2926 14 2 v 15 w(ALIGNMENT)p 1749 2940 2 100 v 1784 2876 a Fm(4.3)p 1871 2940 V 58 w(pixel-store)p 2109 2940 V 232 2942 1878 2 v 231 3042 2 100 v 300 2977 a Fe(P)n(A)o(CK)p 386 2977 10 2 v 12 w(SW)m(AP)p 484 2977 V 11 w(BYTES)p 649 3042 2 100 v 657 3042 V 118 w Fh(B)p 801 3042 V 82 w Fk(GetBo)q(olean)o(v)p 1120 3042 V 57 w Fb(F)m(alse)p 1280 3042 V 58 w Fm(V)m(alue)g(of)1305 3027 y Fr(PACK)p 1396 3027 14 2 v 15 w(SWAP)p 1499 3027 V 15 w(BYTES)p 1749 3042 2 100 v 1784 2977 a Fm(4.3)p 1871 3042 V 58 w(pixel-store)p 2109 3042 V 232 3043 1878 2 v 231 3143 2 100 v 321 3078 a Fe(P)n(A)o(CK)p 407 3078 10 2 v 11 w(LSB)p 475 3078 V 11 w(FIRST)p 649 3143 2 100 v 657 3143 V 137 w Fh(B)p 801 3143 V 82 w Fk(GetBo)q(olean)o(v)p 1120 3143 V 57 w Fb(F)m(alse)p 1280 3143 V 58 w Fm(V)m(alue)g(of)1305 3128 y Fr(PACK)p 1396 3128 14 2 v 15 w(LSB)p 1477 3128 V 15 w(FIRST)p 1749 3143 2 100 v 1784 3078 a Fm(4.3)p 1871 3143 V 58 w(pixel-store)p 2109 3143 V 232 3145 1878 2 v 231 3244 2 100 v 293 3180 a Fe(P)n(A)o(CK)p 379 3180 10 2 v 12 w(R)o(O)o(W)p 464 3180 V 12 w(LENGTH)p 649 3244 2 100 v 657 3244 V 98 w Fh(Z)731 3165 y Fd(+)p 801 3244 V 835 3180 a Fk(GetIn)o(tegerv)p 1120 3244 V 100 w Fm(0)p 1280 3244 V 94 w(V)m(alue)g(of)1305 3229 y Fr(PACK)p 1396 3229 14 2 v 15 w(ROW)p 1477 3229 V 15 w(LENGTH)p 1749 3244 2 100 v 1784 3180 a Fm(4.3)p 1871 3244 V 58 w(pixel-store)p 2109 3244 V 232 3246 1878 2 v 231 3346 2 100 v 314 3281 a Fe(P)n(A)o(CK)p 400 3281 10 2 v 11 w(SKIP)p 482 3281 V 11 w(R)o(O)o(WS)p 649 3346 2 100 v 657 3346 V 119 w Fh(Z)731 3266 y Fd(+)p 801 3346 V 835 3281 a Fk(GetIn)o(tegerv)p 1120 3346 V 100 w Fm(0)p 1280 3346 V 94 w(V)m(alue)g(of)1305 3331 y Fr(PACK)p 1396 3331 14 2 v 15 w(SKIP)p 1499 3331 V 15 w(ROWS)p 1749 3346 2 100 v 1784 3281 a Fm(4.3)p 1871 3346 V 58 w(pixel-store)p 2109 3346 V 232 3347 1878 2 v 231 3447 2 100 v 304 3382 a Fe(P)n(A)o(CK)p 390 3382 10 2 v 12 w(SKIP)p 473 3382 V 11 w(PIXELS)p 649 3447 2 100 v 657 3447 V 109 w Fh(Z)731 3367 y Fd(+)p 801 3447 V 835 3382 a Fk(GetIn)o(tegerv)p 1120 3447 V 100 w Fm(0)p 1280 3447 V 94 w(V)m(alue)g(of)1305 3432 y Fr(PACK)p 1396 3432 14 2 v 15 w(SKIP)p 1499 3432 V 15 w(PIXELS)p 1749 3447 2 100 v 1784 3382 a Fm(4.3)p 1871 3447 V 58 w(pixel-store)p 2109 3447 V 232 3449 1878 2 v 231 3548 2 100 v 306 3483 a Fe(P)n(A)o(CK)p 392 3483 10 2 v 11 w(ALIGNMENT)p 649 3548 2 100 v 657 3548 V 111 w Fh(Z)731 3468 y Fd(+)p 801 3548 V 835 3483 a Fk(GetIn)o(tegerv)p 1120 3548 V 100 w Fm(4)p 1280 3548 V 94 w(V)m(alue)g(of)1305 3533 y Fr(PACK)p 1396 3533 14 2 v 15 w(ALIGNMENT)p 1749 3548 2 100 v 1784 3483 a Fm(4.3)p 1871 3548 V 58 w(pixel-store)p 2109 3548 V 232 3550 1878 2 v 1517 2252 a currentpoint grestore moveto 1517 2252 a 676 2411 a FF(T)l(able)i(6.15.)22 b(Pixels)p eop %%Page: 164 173 164 172 bop 332 137 a FC(164)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)430 2262 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 430 2262 a 508 2328 a Fm(Get)f(v)n(alue)151 b(T)o(yp)q(e)1123 2291 y(Get)1123 2328 y(Cmnd)1389 2291 y(Initial)1389 2328 y(V)m(alue)185 b(Description)156 b(Sec.)51 b(A)o(ttribute)p 444 2344 1913 2 v 443 2444 2 100 v 504 2379 a Fe(MAP)p 575 2379 10 2 v 11 w(COLOR)p 738 2444 2 100 v 746 2444 V 171 w Fh(B)p 1013 2444 V 148 w Fk(GetBo)q(olean)o(v)p 1342 2444 V 83 w Fb(F)m(alse)p 1544 2444 V 80 w Fm(T)m(rue)14 b(if)f(colors)h(are)1570 2429 y(mapp)q(ed)p 2014 2444 V 2049 2379 a(4.3)p 2135 2444 V 100 w(pixel)p 2356 2444 V 444 2446 1913 2 v 443 2545 2 100 v 492 2481 a Fe(MAP)p 563 2481 10 2 v 12 w(STENCIL)p 738 2545 2 100 v 746 2545 V 158 w Fh(B)p 1013 2545 V 148 w Fk(GetBo)q(olean)o(v)p 1342 2545 V 83 w Fb(F)m(alse)p 1544 2545 V 80 w Fm(T)m(rue)g(if)f (stencil)h(v)n(alues)1570 2530 y(are)g(mapp)q(ed)p 2014 2545 V 2049 2481 a(4.3)p 2135 2545 V 100 w(pixel)p 2356 2545 V 444 2547 1913 2 v 443 2597 2 50 v 498 2582 a Fe(INDEX)p 598 2582 10 2 v 12 w(SHIFT)p 738 2597 2 50 v 746 2597 V 165 w Fh(Z)p 1013 2597 V 159 w Fk(GetIn)o(tegerv)p 1342 2597 V 126 w Fm(0)p 1544 2597 V 116 w(V)m(alue)f(of)g Fr(INDEX)p 1845 2582 14 2 v 15 w(SHIFT)p 2014 2597 2 50 v 82 w Fm(4.3)p 2135 2597 V 100 w(pixel)p 2356 2597 V 444 2598 1913 2 v 443 2648 2 50 v 483 2633 a Fe(INDEX)p 583 2633 10 2 v 12 w(OFFSET)p 738 2648 2 50 v 746 2648 V 150 w Fh(Z)p 1013 2648 V 159 w Fk(GetIn)o(tegerv)p 1342 2648 V 126 w Fm(0)p 1544 2648 V 116 w(V)m(alue)g(of)g Fr(INDEX)p 1845 2633 14 2 v 15 w(OFFSET)p 2014 2648 2 50 v 60 w Fm(4.3)p 2135 2648 V 100 w(pixel)p 2356 2648 V 444 2650 1913 2 v 443 2799 2 150 v 534 2685 a Fg(x)p 553 2685 10 2 v 12 w Fe(SCALE)p 738 2799 2 150 v 746 2799 V 201 w Fh(R)p 1013 2799 V 176 w Fk(GetFloatv)p 1342 2799 V 147 w Fm(1)p 1544 2799 V 116 w(V)m(alue)g(of)g Fh(x)p 1759 2685 14 2 v 16 w Fr(SCALE)p Fm(;)f Fh(x)i Fm(is)1570 2735 y Fr(RED)p Fm(,)e Fr(GREEN)p Fm(,)h Fr(BLUE)p Fm(,)1570 2784 y Fr(ALPHA)p Fm(,)f(or)i Fr(DEPTH)p 2014 2799 2 150 v 2049 2685 a Fm(4.3)p 2135 2799 V 100 w(pixel)p 2356 2799 V 444 2801 1913 2 v 443 2950 2 150 v 549 2836 a Fg(x)p 568 2836 10 2 v 11 w Fe(BIAS)p 738 2950 2 150 v 746 2950 V 216 w Fh(R)p 1013 2950 V 176 w Fk(GetFloatv)p 1342 2950 V 147 w Fm(0)p 1544 2950 V 116 w(V)m(alue)f(of)g Fh(x)p 1759 2836 14 2 v 16 w Fr(BIAS)p Fm(;)f Fh(x)i Fm(is)1570 2886 y(one)g(of)f Fr(RED)p Fm(,)g Fr(GREEN)p Fm(,)1570 2935 y Fr(BLUE)p Fm(,)f Fr(ALPHA)p Fm(,)g(or)i Fr(DEPTH)p 2014 2950 2 150 v 2049 2836 a Fm(4.3)p 2135 2950 V 100 w(pixel)p 2356 2950 V 444 2952 1913 2 v 443 3002 2 50 v 536 2987 a Fe(ZOOM)p 629 2987 10 2 v 12 w(X)p 738 3002 2 50 v 746 3002 V 203 w Fh(R)p 1013 3002 V 176 w Fk(GetFloatv)p 1342 3002 V 131 w Fm(1.0)p 1544 3002 V 99 w Fh(x)f Fm(zo)q(om)g(factor)p 2014 3002 V 227 w(4.3)p 2135 3002 V 100 w(pixel)p 2356 3002 V 444 3004 1913 2 v 443 3053 2 50 v 536 3038 a Fe(ZOOM)p 629 3038 10 2 v 12 w(Y)p 738 3053 2 50 v 746 3053 V 203 w Fh(R)p 1013 3053 V 176 w Fk(GetFloatv)p 1342 3053 V 131 w Fm(1.0)p 1544 3053 V 99 w Fh(y)i Fm(zo)q(om)e(factor)p 2014 3053 V 229 w(4.3)p 2135 3053 V 100 w(pixel)p 2356 3053 V 444 3055 1913 2 v 443 3254 2 200 v 590 3090 a Fg(x)p 738 3254 V 746 3254 V 165 w Fm(8)c Fc(\002)h Fm(32)e Fc(\003)h(\002)p Fh(R)p 1013 3254 V 50 w Fk(GetPixelMap)p 1342 3254 V 99 w Fm(0's)p 1544 3254 V 102 w(R)o(GBA)k Fk(PixelMap)1570 3140 y Fm(translation)g(tables;)g Fh(x)h Fm(is)1570 3190 y(a)f(map)f(name)h(from)1570 3239 y(T)m(able)g(3.3)p 2014 3254 V 2049 3090 a(4.3)p 2135 3254 V 133 w({)p 2356 3254 V 444 3256 1913 2 v 443 3455 2 200 v 590 3291 a Fg(x)p 738 3455 V 746 3455 V 165 w Fm(2)c Fc(\002)h Fm(32)f Fc(\003)g(\002)p Fh(Z)p 1013 3455 V 53 w Fk(GetPixelMap)p 1342 3455 V 99 w Fm(0's)p 1544 3455 V 102 w(Index)14 b Fk(PixelMap)1570 3341 y Fm(translation)f(tables;)g Fh(x)h Fm(is)1570 3390 y(a)f(map)f(name)h(from)1570 3440 y(T)m(able)g(3.3)p 2014 3455 V 2049 3291 a(4.3)p 2135 3455 V 133 w({)p 2356 3455 V 444 3457 1913 2 v 443 3507 2 50 v 551 3492 a Fg(x)p 570 3492 10 2 v 11 w Fe(SIZE)p 738 3507 2 50 v 746 3507 V 206 w Fh(Z)882 3477 y Fd(+)p 1013 3507 V 1052 3492 a Fk(GetIn)o(tegerv)p 1342 3507 V 126 w Fm(1)p 1544 3507 V 116 w(Size)h(of)f(table)h Fh(x)p 2014 3507 V 219 w Fm(4.3)p 2135 3507 V 133 w({)p 2356 3507 V 444 3508 1913 2 v 443 3558 2 50 v 487 3543 a Fe(READ)p 576 3543 10 2 v 11 w(BUFFER)p 738 3558 2 50 v 746 3558 V 147 w Fh(Z)885 3549 y Fd(3)p 1013 3558 V 1052 3543 a Fk(GetIn)o(tegerv)p 1342 3558 V 60 w Fm(see)h(4.3.2)p 1544 3558 V 49 w(Read)e(source)i(bu\013er)p 2014 3558 V 142 w(4.3)p 2135 3558 V 100 w(pixel)p 2356 3558 V 444 3560 1913 2 v 1728 2262 a currentpoint grestore moveto 1728 2262 a 809 2424 a FF(T)l(able)h(6.16.)22 b(Pixels)15 b(\(con)o(t.\))p eop %%Page: 165 174 165 173 bop 1547 137 a FC(165)392 2365 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 392 2365 a 532 2431 a Fm(Get)14 b(v)n(alue)260 b(T)o(yp)q(e)1269 2394 y(Get)1269 2431 y(Cmnd)1486 2394 y(Initial)1486 2431 y(V)m(alue)169 b(Description)157 b(Sec.)68 b(A)o(ttribute)p 406 2448 2068 2 v 405 2497 2 50 v 567 2482 a Fe(ORDER)p 824 2497 V 832 2497 V 269 w Fm(9)9 b Fc(\002)g Fh(Z)1045 2488 y Fd(8)p Fa(\003)p 1193 2497 V 1219 2482 a Fk(GetMapiv)p 1455 2497 V 99 w Fm(1)p 1625 2497 V 99 w(1d)14 b(map)e(order)p 2095 2497 V 235 w(5.1)p 2216 2497 V 151 w({)p 2473 2497 V 406 2499 2068 2 v 405 2549 2 50 v 567 2534 a Fe(ORDER)p 824 2549 V 832 2549 V 233 w Fm(9)d Fc(\002)g Fm(2)g Fc(\002)h Fh(Z)1081 2540 y Fd(8)p Fa(\003)p 1193 2549 V 1219 2534 a Fk(GetMapiv)p 1455 2549 V 83 w Fm(1,1)p 1625 2549 V 82 w(2d)k(map)e(orders)p 2095 2549 V 219 w(5.1)p 2216 2549 V 151 w({)p 2473 2549 V 406 2550 2068 2 v 405 2600 2 50 v 570 2585 a Fe(COEFF)p 824 2600 V 832 2600 V 229 w Fm(9)d Fc(\002)h Fm(8)f Fc(\003)g(\002)p Fh(R)1100 2570 y Ff(n)p 1193 2600 V 1218 2585 a Fk(GetMapfv)p 1455 2600 V 49 w Fm(see)15 b(5.1)p 1625 2600 V 49 w(1d)f(con)o(trol)f(p)q (oin)o(ts)p 2095 2600 V 171 w(5.1)p 2216 2600 V 151 w({)p 2473 2600 V 406 2602 2068 2 v 405 2652 2 50 v 570 2637 a Fe(COEFF)p 824 2652 V 832 2652 V 183 w Fm(9)c Fc(\002)h Fm(8)f Fc(\003)g(\002)p Fm(8)g Fc(\003)g(\002)p Fh(R)1146 2622 y Ff(n)p 1193 2652 V 1218 2637 a Fk(GetMapfv)p 1455 2652 V 49 w Fm(see)15 b(5.1)p 1625 2652 V 49 w(2d)f(con)o(trol)f(p)q (oin)o(ts)p 2095 2652 V 171 w(5.1)p 2216 2652 V 151 w({)p 2473 2652 V 406 2653 2068 2 v 405 2703 2 50 v 558 2688 a Fe(DOMAIN)p 824 2703 V 832 2703 V 240 w Fm(9)c Fc(\002)g Fm(2)g Fc(\002)h Fh(R)p 1193 2703 V 117 w Fk(GetMapfv)p 1455 2703 V 49 w Fm(see)15 b(5.1)p 1625 2703 V 49 w(1d)f(domain)d(endp) q(oin)o(ts)p 2095 2703 V 99 w(5.1)p 2216 2703 V 151 w({)p 2473 2703 V 406 2705 2068 2 v 405 2755 2 50 v 558 2740 a Fe(DOMAIN)p 824 2755 V 832 2755 V 240 w Fm(9)e Fc(\002)g Fm(4)g Fc(\002)h Fh(R)p 1193 2755 V 117 w Fk(GetMapfv)p 1455 2755 V 49 w Fm(see)15 b(5.1)p 1625 2755 V 49 w(2d)f(domain)d(endp) q(oin)o(ts)p 2095 2755 V 99 w(5.1)p 2216 2755 V 151 w({)p 2473 2755 V 406 2756 2068 2 v 405 2856 2 100 v 566 2791 a Fe(MAP1)p 652 2791 10 2 v 12 w Fg(x)p 824 2856 2 100 v 832 2856 V 282 w Fm(9)e Fc(\002)g Fh(B)p 1193 2856 V 159 w Fk(IsEnabled)p 1455 2856 V 65 w Fb(F)m(alse)p 1625 2856 V 64 w Fm(1d)14 b(map)e(enables:)19 b Fh(x)13 b Fm(is)1651 2841 y(map)f(t)o(yp)q(e)p 2095 2856 V 2130 2791 a(5.1)p 2216 2856 V 58 w(ev)n(al/enable)p 2473 2856 V 406 2858 2068 2 v 405 2957 2 100 v 566 2893 a Fe(MAP2)p 652 2893 10 2 v 12 w Fg(x)p 824 2957 2 100 v 832 2957 V 282 w Fm(9)d Fc(\002)g Fh(B)p 1193 2957 V 159 w Fk(IsEnabled)p 1455 2957 V 65 w Fb(F)m(alse)p 1625 2957 V 64 w Fm(2d)14 b(map)e(enables:)19 b Fh(x)13 b Fm(is)1651 2942 y(map)f(t)o(yp)q(e)p 2095 2957 V 2130 2893 a(5.1)p 2216 2957 V 58 w(ev)n(al/enable)p 2473 2957 V 406 2959 2068 2 v 405 3009 2 50 v 465 2994 a Fe(MAP1)p 551 2994 10 2 v 12 w(GRID)p 642 2994 V 11 w(DOMAIN)p 824 3009 2 50 v 832 3009 V 183 w Fm(2)d Fc(\002)g Fh(R)p 1193 3009 V 154 w Fk(GetFloatv)p 1455 3009 V 82 w Fm(0,1)p 1625 3009 V 82 w(1d)14 b(grid)f(endp)q(oin)o(ts)p 2095 3009 V 161 w(5.1)p 2216 3009 V 126 w(ev)n(al)p 2473 3009 V 406 3010 2068 2 v 405 3060 2 50 v 465 3045 a Fe(MAP2)p 551 3045 10 2 v 12 w(GRID)p 642 3045 V 11 w(DOMAIN)p 824 3060 2 50 v 832 3060 V 183 w Fm(4)c Fc(\002)g Fh(R)p 1193 3060 V 154 w Fk(GetFloatv)p 1455 3060 V 49 w Fm(0,1;0,1)p 1625 3060 V 49 w(2d)14 b(grid)f(endp)q(oin)o(ts)p 2095 3060 V 161 w(5.1)p 2216 3060 V 126 w(ev)n(al)p 2473 3060 V 406 3062 2068 2 v 405 3112 2 50 v 445 3097 a Fe(MAP1)p 531 3097 10 2 v 12 w(GRID)p 622 3097 V 11 w(SEGMENTS)p 824 3112 2 50 v 832 3112 V 185 w Fh(Z)1015 3082 y Fd(+)p 1193 3112 V 1219 3097 a Fk(GetFloatv)p 1455 3112 V 98 w Fm(1)p 1625 3112 V 99 w(1d)h(grid)f(divisions)p 2095 3112 V 179 w(5.1)p 2216 3112 V 126 w(ev)n(al)p 2473 3112 V 406 3113 2068 2 v 405 3163 2 50 v 445 3148 a Fe(MAP2)p 531 3148 10 2 v 12 w(GRID)p 622 3148 V 11 w(SEGMENTS)p 824 3163 2 50 v 832 3163 V 149 w Fm(2)c Fc(\002)h Fh(Z)1051 3133 y Fd(+)p 1193 3163 V 1219 3148 a Fk(GetFloatv)p 1455 3163 V 82 w Fm(1,1)p 1625 3163 V 82 w(2d)k(grid)f(divisions)p 2095 3163 V 179 w(5.1)p 2216 3163 V 126 w(ev)n(al)p 2473 3163 V 406 3165 2068 2 v 405 3314 2 150 v 505 3200 a Fe(A)o(UTO)p 595 3200 10 2 v 11 w(NORMAL)p 824 3314 2 150 v 832 3314 V 258 w Fh(B)p 1193 3314 V 194 w Fk(IsEnabled)p 1455 3314 V 65 w Fb(F)m(alse)p 1625 3314 V 64 w Fm(T)m(rue)h(if)f (automatic)1651 3250 y(normal)f(generation)1651 3299 y(enabled)p 2095 3314 V 2130 3200 a(5.1)p 2216 3314 V 58 w(ev)n(al/enable)p 2473 3314 V 406 3316 2068 2 v 1343 2365 a currentpoint grestore moveto 1343 2365 a 295 2527 a FF(T)l(able)k(6.17.)22 b(Ev)m(aluators)c(\()p Fl(GetMap)e FF(tak)o(es)g(a)h(map)e(name\))p eop %%Page: 166 175 166 174 bop 332 137 a FC(166)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)884 2462 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 884 2462 a 1110 2528 a Fm(Get)f(v)n(alue)236 b(T)o(yp)q(e)1735 2491 y(Get)1735 2528 y(Cmnd)2042 2491 y(Initial)2042 2528 y(V)m(alue)j(Description)156 b(Sec.)50 b(A)o(ttribute)p 898 2545 2165 2 v 897 2645 2 100 v 937 2580 a Fe(PERSPECTIVE)p 1155 2580 10 2 v 12 w(CORRECTION)p 1376 2580 V 12 w(HINT)p 1487 2645 2 100 v 1495 2645 V 81 w Fh(Z)1572 2586 y Fd(3)p 1639 2645 V 1664 2580 a Fk(GetIn)o(tegerv)p 1941 2645 V 48 w Fm(DONT)p 2094 2580 13 2 v 15 w(CARE)p 2251 2645 2 100 v 49 w(P)o(ersp)q(ectiv)o(e)16 b(correction)2276 2630 y(hin)o(t)p 2720 2645 V 2755 2580 a(5.6)p 2842 2645 V 108 w(hin)o(t)p 3062 2645 V 898 2646 2165 2 v 897 2696 2 50 v 1034 2681 a Fe(POINT)p 1134 2681 10 2 v 11 w(SMOOTH)p 1279 2681 V 12 w(HINT)p 1487 2696 2 50 v 1495 2696 V 178 w Fh(Z)1572 2687 y Fd(3)p 1639 2696 V 1664 2681 a Fk(GetIn)o(tegerv)p 1941 2696 V 48 w Fm(DONT)p 2094 2681 13 2 v 15 w(CARE)p 2251 2696 2 50 v 49 w(P)o(oin)o(t)e(smo)q(oth)e(hin) o(t)p 2720 2696 V 148 w(5.6)p 2842 2696 V 108 w(hin)o(t)p 3062 2696 V 898 2698 2165 2 v 897 2748 2 50 v 1047 2733 a Fe(LINE)p 1121 2733 10 2 v 11 w(SMOOTH)p 1266 2733 V 12 w(HINT)p 1487 2748 2 50 v 1495 2748 V 191 w Fh(Z)1572 2739 y Fd(3)p 1639 2748 V 1664 2733 a Fk(GetIn)o(tegerv)p 1941 2748 V 48 w Fm(DONT)p 2094 2733 13 2 v 15 w(CARE)p 2251 2748 2 50 v 49 w(Line)i(smo)q(oth)f(hin)o(t)p 2720 2748 V 166 w(5.6)p 2842 2748 V 108 w(hin)o(t)p 3062 2748 V 898 2749 2165 2 v 897 2799 2 50 v 1007 2784 a Fe(POL)n(YGON)p 1159 2784 10 2 v 13 w(SMOOTH)p 1306 2784 V 11 w(HINT)p 1487 2799 2 50 v 1495 2799 V 152 w Fh(Z)1572 2790 y Fd(3)p 1639 2799 V 1664 2784 a Fk(GetIn)o(tegerv)p 1941 2799 V 48 w Fm(DONT)p 2094 2784 13 2 v 15 w(CARE)p 2251 2799 2 50 v 49 w(P)o(olygon)g(smo)q(oth)g(hin)o(t)p 2720 2799 V 99 w(5.6)p 2842 2799 V 108 w(hin)o(t)p 3062 2799 V 898 2801 2165 2 v 897 2850 2 50 v 1123 2836 a Fe(F)o(OG)p 1190 2836 10 2 v 12 w(HINT)p 1487 2850 2 50 v 1495 2850 V 267 w Fh(Z)1572 2842 y Fd(3)p 1639 2850 V 1664 2836 a Fk(GetIn)o(tegerv)p 1941 2850 V 48 w Fm(DONT)p 2094 2836 13 2 v 15 w(CARE)p 2251 2850 2 50 v 49 w(F)m(og)g(hin)o(t)p 2720 2850 V 327 w(5.6)p 2842 2850 V 108 w(hin)o(t)p 3062 2850 V 898 2852 2165 2 v 1274 2462 a currentpoint grestore moveto 1274 2462 a 894 2621 a FF(T)l(able)j(6.18.)22 b(Hin)o(ts)p eop %%Page: 167 176 167 175 bop 1547 137 a FC(167)43 2482 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 43 2482 a 285 2548 a Fm(Get)14 b(v)n(alue)271 b(T)o(yp)q(e)963 2510 y(Get)963 2548 y(Cmnd)1195 2510 y(Minim)o(um)1195 2548 y(V)m(alue)229 b(Description)174 b(Sec.)68 b(A)o(ttribute)p 57 2564 2185 2 v 56 2664 2 100 v 276 2599 a Fe(MAX)p 349 2599 10 2 v 12 w(LIGHTS)p 678 2664 2 100 v 687 2664 V 275 w Fh(Z)779 2584 y Fd(+)p 867 2664 V 893 2599 a Fk(GetIn)o(tegerv)p 1169 2664 V 124 w Fm(8)p 1394 2664 V 127 w(Maxim)o(um)10 b(n)o(um)o(b)q(er)j(of)1420 2649 y(ligh)o(ts)p 1864 2664 V 1890 2599 a(2.13.1)p 2020 2664 V 123 w({)p 2240 2664 V 57 2665 2185 2 v 56 2765 2 100 v 232 2700 a Fe(MAX)p 305 2700 10 2 v 11 w(CLIP)p 388 2700 V 11 w(PLANES)p 678 2765 2 100 v 687 2765 V 231 w Fh(Z)779 2685 y Fd(+)p 867 2765 V 893 2700 a Fk(GetIn)o(tegerv)p 1169 2765 V 124 w Fm(6)p 1394 2765 V 127 w(Maxim)o(um)d(n)o(um)o(b)q (er)j(of)1420 2750 y(user)i(clipping)e(planes)p 1864 2765 V 1906 2700 a(2.11)p 2020 2765 V 140 w({)p 2240 2765 V 57 2767 2185 2 v 56 2866 2 100 v 121 2802 a Fe(MAX)p 194 2802 10 2 v 12 w(MODEL)m(VIEW)p 398 2802 V 12 w(ST)n(A)o(CK)p 513 2802 V 10 w(DEPTH)p 678 2866 2 100 v 687 2866 V 120 w Fh(Z)779 2787 y Fd(+)p 867 2866 V 893 2802 a Fk(GetIn)o(tegerv)p 1169 2866 V 114 w Fm(32)p 1394 2866 V 116 w(Maxim)o(um)d(mo)q(del-view) 1420 2851 y(stac)o(k)k(depth)p 1864 2866 V 1890 2802 a(2.10.2)p 2020 2866 V 123 w({)p 2240 2866 V 57 2868 2185 2 v 56 2968 2 100 v 117 2903 a Fe(MAX)p 190 2903 10 2 v 12 w(PR)o(OJECTION)p 402 2903 V 12 w(ST)n(A)o(CK)p 517 2903 V 10 w(DEPTH)p 678 2968 2 100 v 687 2968 V 116 w Fh(Z)779 2888 y Fd(+)p 867 2968 V 893 2903 a Fk(GetIn)o(tegerv)p 1169 2968 V 124 w Fm(2)p 1394 2968 V 127 w(Maxim)o(um)c(pro)r(jection) 1420 2953 y(matrix)i(stac)o(k)i(depth)p 1864 2968 V 1890 2903 a(2.10.2)p 2020 2968 V 123 w({)p 2240 2968 V 57 2969 2185 2 v 56 3119 2 150 v 142 3004 a Fe(MAX)p 215 3004 10 2 v 12 w(TEXTURE)p 377 3004 V 12 w(ST)n(A)o(CK)p 492 3004 V 10 w(DEPTH)p 678 3119 2 150 v 687 3119 V 141 w Fh(Z)779 2989 y Fd(+)p 867 3119 V 893 3004 a Fk(GetIn)o(tegerv)p 1169 3119 V 124 w Fm(2)p 1394 3119 V 127 w(Maxim)o(um)c(n)o(um)o(b)q (er)1420 3054 y(depth)k(of)g(texture)1420 3104 y(matrix)e(stac)o(k)p 1864 3119 V 1890 3004 a(2.10.2)p 2020 3119 V 123 w({)p 2240 3119 V 57 3120 2185 2 v 56 3270 2 150 v 257 3155 a Fe(SUBPIXEL)p 411 3155 10 2 v 13 w(BITS)p 678 3270 2 150 v 687 3270 V 255 w Fh(Z)779 3140 y Fd(+)p 867 3270 V 893 3155 a Fk(GetIn)o(tegerv)p 1169 3270 V 124 w Fm(4)p 1394 3270 V 127 w(Num)o(b)q(er)h(of)h(bits)f(of)1420 3205 y(subpixel)h(precision)g(in)f(x)1420 3255 y(&)h(y)p 1864 3270 V 1932 3155 a(3)p 2020 3270 V 168 w({)p 2240 3270 V 57 3272 2185 2 v 56 3371 2 100 v 219 3306 a Fe(MAX)p 292 3306 10 2 v 12 w(TEXTURE)p 454 3306 V 12 w(SIZE)p 678 3371 2 100 v 687 3371 V 218 w Fh(Z)779 3291 y Fd(+)p 867 3371 V 893 3306 a Fk(GetIn)o(tegerv)p 1169 3371 V 114 w Fm(64)p 1394 3371 V 116 w(See)h(the)f(discussion)h(in)1420 3356 y(Section)f(3.8.)p 1864 3371 V 1916 3306 a(3.8)p 2020 3371 V 151 w({)p 2240 3371 V 57 3373 2185 2 v 56 3522 2 150 v 190 3408 a Fe(MAX)p 263 3408 10 2 v 12 w(PIXEL)p 367 3408 V 12 w(MAP)p 448 3408 V 12 w(T)n(ABLE)p 678 3522 2 150 v 687 3522 V 188 w Fh(Z)779 3393 y Fd(+)p 867 3522 V 893 3408 a Fk(GetIn)o(tegerv)p 1169 3522 V 114 w Fm(32)p 1394 3522 V 116 w(Maxim)o(um)c(size)15 b(of)e(a)1420 3458 y Fk(PixelMap)f Fm(translation)1420 3507 y(table)p 1864 3522 V 1900 3408 a(3.6.2)p 2020 3522 V 134 w({)p 2240 3522 V 57 3524 2185 2 v 56 3624 2 100 v 171 3559 a Fe(MAX)p 244 3559 10 2 v 12 w(NAME)p 347 3559 V 12 w(ST)n(A)o(CK)p 462 3559 V 11 w(DEPTH)p 678 3624 2 100 v 687 3624 V 170 w Fh(Z)779 3544 y Fd(+)p 867 3624 V 893 3559 a Fk(GetIn)o(tegerv)p 1169 3624 V 114 w Fm(64)p 1394 3624 V 116 w(Maxim)o(um)e(selection)1420 3609 y(name)j(stac)o(k)h(depth)p 1864 3624 V 1916 3559 a(5.2)p 2020 3624 V 151 w({)p 2240 3624 V 57 3625 2185 2 v 56 3725 2 100 v 225 3660 a Fe(MAX)p 298 3660 10 2 v 12 w(LIST)p 379 3660 V 10 w(NESTING)p 678 3725 2 100 v 687 3725 V 224 w Fh(Z)779 3645 y Fd(+)p 867 3725 V 893 3660 a Fk(GetIn)o(tegerv)p 1169 3725 V 114 w Fm(64)p 1394 3725 V 116 w(Maxim)o(um)c(displa)o(y)j(list)1420 3710 y(call)g(nesting)p 1864 3725 V 1916 3660 a(5.4)p 2020 3725 V 151 w({)p 2240 3725 V 57 3727 2185 2 v 56 3826 2 100 v 232 3761 a Fe(MAX)p 305 3761 10 2 v 12 w(EV)m(AL)p 397 3761 V 12 w(ORDER)p 678 3826 2 100 v 687 3826 V 231 w Fh(Z)779 3746 y Fd(+)p 867 3826 V 893 3761 a Fk(GetIn)o(tegerv)p 1169 3826 V 124 w Fm(8)p 1394 3826 V 127 w(Maxim)o(um)d(ev)n(aluator) 1420 3811 y(p)q(olynomial)g(order)p 1864 3826 V 1916 3761 a(5.1)p 2020 3826 V 151 w({)p 2240 3826 V 57 3828 2185 2 v 56 3927 2 100 v 205 3863 a Fe(MAX)p 278 3863 10 2 v 11 w(VIEWPOR)n(T)p 457 3863 V 12 w(DIMS)p 678 3927 2 100 v 687 3927 V 167 w Fm(2)f Fc(\002)h Fh(Z)815 3848 y Fd(+)p 867 3927 V 893 3863 a Fk(GetIn)o(tegerv)p 1169 3927 V 48 w Fm(see)15 b(2.10.1)p 1394 3927 V 49 w(Maxim)o(um)10 b(viewp)q(ort)1420 3912 y(dimensions)p 1864 3927 V 1890 3863 a(2.10.1)p 2020 3927 V 123 w({)p 2240 3927 V 57 3929 2185 2 v 56 4029 2 100 v 159 3964 a Fe(MAX)p 232 3964 10 2 v 12 w(A)n(TTRIB)p 362 3964 V 10 w(ST)n(A)o(CK)p 475 3964 V 10 w(DEPTH)p 678 4029 2 100 v 687 4029 V 158 w Fh(Z)779 3949 y Fd(+)p 867 4029 V 893 3964 a Fk(GetIn)o(tegerv)p 1169 4029 V 114 w Fm(16)p 1394 4029 V 116 w(Maxim)o(um)g(depth)15 b(of)e(the)1420 4014 y(serv)o(er)i(attribute)g(stac)o(k)p 1864 4029 V 1932 3964 a(6)p 2020 4029 V 168 w({)p 2240 4029 V 57 4030 2185 2 v 56 4130 2 100 v 95 4065 a Fe(MAX)p 168 4065 10 2 v 12 w(CLIENT)p 296 4065 V 11 w(A)n(TTRIB)p 425 4065 V 10 w(ST)n(A)o(CK)p 538 4065 V 11 w(DEPTH)p 678 4130 2 100 v 687 4130 V 94 w Fh(Z)779 4050 y Fd(+)p 867 4130 V 893 4065 a Fk(GetIn)o(tegerv)p 1169 4130 V 114 w Fm(16)p 1394 4130 V 116 w(Maxim)o(um)10 b(depth)15 b(of)e(the)1420 4115 y(clien)o(t)h(attribute)g(stac)o(k)p 1864 4130 V 1932 4065 a(6)p 2020 4130 V 168 w({)p 2240 4130 V 57 4132 2185 2 v 1692 2482 a currentpoint grestore moveto 1692 2482 a 371 2641 a FF(T)l(able)i(6.19.)22 b(Impleme)o(n)o(tation)14 b(Dep)q(enden)o(t)h (V)l(alues)p eop %%Page: 168 177 168 176 bop 332 137 a FC(168)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)582 2354 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 582 2354 a 762 2419 a Fm(Get)f(v)n(alue)208 b(T)o(yp)q(e)1387 2382 y(Get)1387 2419 y(Cmnd)1627 2382 y(Minim)o(um)1627 2419 y(V)m(alue)229 b(Description)163 b(Sec.)58 b(A)o(ttribute)p 596 2436 2057 2 v 595 2535 2 100 v 742 2470 a Fe(A)o(UX)p 809 2470 10 2 v 12 w(BUFFERS)p 1092 2535 2 100 v 1101 2535 V 201 w Fh(Z)1193 2455 y Fd(+)p 1281 2535 V 1316 2470 a Fk(GetIn)o(tegerv)p 1601 2535 V 133 w Fm(0)p 1826 2535 V 127 w(Num)o(b)q(er)13 b(of)g(auxiliary)1852 2520 y(bu\013ers)p 2296 2535 V 2321 2470 a(4.2.1)p 2431 2535 V 124 w({)p 2651 2535 V 596 2537 2057 2 v 595 2637 2 100 v 755 2572 a Fe(R)o(GBA)p 844 2572 10 2 v 12 w(MODE)p 1092 2637 2 100 v 1101 2637 V 228 w Fh(B)p 1281 2637 V 101 w Fk(GetBo)q(olean)o(v)p 1601 2637 V 125 w Fm({)p 1826 2637 V 127 w(T)m(rue)h(if)f(color)g(bu\013ers)1852 2622 y(store)h(rgba)p 2296 2637 V 2338 2572 a(2.7)p 2431 2637 V 140 w({)p 2651 2637 V 596 2638 2057 2 v 595 2738 2 100 v 750 2673 a Fe(INDEX)p 850 2673 10 2 v 12 w(MODE)p 1092 2738 2 100 v 1101 2738 V 222 w Fh(B)p 1281 2738 V 101 w Fk(GetBo)q(olean)o(v)p 1601 2738 V 125 w Fm({)p 1826 2738 V 127 w(T)m(rue)g(if)f(color)g(bu\013ers)1852 2723 y(store)h(indexes)p 2296 2738 V 2338 2673 a(2.7)p 2431 2738 V 140 w({)p 2651 2738 V 596 2739 2057 2 v 595 2839 2 100 v 725 2774 a Fe(DOUBLEBUFFER)p 1092 2839 V 1101 2839 V 197 w Fh(B)p 1281 2839 V 101 w Fk(GetBo)q(olean)o(v)p 1601 2839 V 125 w Fm({)p 1826 2839 V 127 w(T)m(rue)g(if)f(fron)o(t)g(&) i(bac)o(k)1852 2824 y(bu\013ers)g(exist)p 2296 2839 V 2321 2774 a(4.2.1)p 2431 2839 V 124 w({)p 2651 2839 V 596 2841 2057 2 v 595 2940 2 100 v 789 2876 a Fe(STEREO)p 1092 2940 V 1101 2940 V 262 w Fh(B)p 1281 2940 V 101 w Fk(GetBo)q(olean)o(v)p 1601 2940 V 125 w Fm({)p 1826 2940 V 127 w(T)m(rue)f(if)f(left)g(&)i(righ)o(t)1852 2925 y(bu\013ers)g(exist)p 2296 2940 V 2354 2876 a(6)p 2431 2940 V 157 w({)p 2651 2940 V 596 2942 2057 2 v 595 3042 2 100 v 703 2977 a Fe(POINT)p 803 2977 10 2 v 11 w(SIZE)p 880 2977 V 12 w(RANGE)p 1092 3042 2 100 v 1101 3042 V 127 w Fm(2)9 b Fc(\002)h Fh(R)1230 2962 y Fd(+)p 1281 3042 V 1336 2977 a Fk(GetFloatv)p 1601 3042 V 138 w Fm(1,1)p 1826 3042 V 110 w(Range)j(\(lo)g(to)h(hi\))g(of)1852 3027 y(an)o(tialiased)e(p)q(oin)o(t)i(sizes)p 2296 3042 V 2338 2977 a(3.3)p 2431 3042 V 140 w({)p 2651 3042 V 596 3043 2057 2 v 595 3143 2 100 v 643 3078 a Fe(POINT)p 743 3078 10 2 v 11 w(SIZE)p 820 3078 V 12 w(GRANULARITY)p 1092 3143 2 100 v 1101 3143 V 103 w Fh(R)1194 3063 y Fd(+)p 1281 3143 V 1336 3078 a Fk(GetFloatv)p 1601 3143 V 154 w Fm({)p 1826 3143 V 127 w(An)o(tialiased)f(p)q(oin)o(t)g(size) 1852 3128 y(gran)o(ularit)o(y)p 2296 3143 V 2338 3078 a(3.3)p 2431 3143 V 140 w({)p 2651 3143 V 596 3145 2057 2 v 595 3244 2 100 v 695 3179 a Fe(LINE)p 769 3179 10 2 v 12 w(WIDTH)p 889 3179 V 11 w(RANGE)p 1092 3244 2 100 v 1101 3244 V 119 w Fm(2)c Fc(\002)h Fh(R)1230 3164 y Fd(+)p 1281 3244 V 1336 3179 a Fk(GetFloatv)p 1601 3244 V 138 w Fm(1,1)p 1826 3244 V 110 w(Range)j(\(lo)g(to)h(hi\))g(of) 1852 3229 y(an)o(tialiased)e(line)i(widths)p 2296 3244 V 2338 3179 a(3.4)p 2431 3244 V 140 w({)p 2651 3244 V 596 3246 2057 2 v 595 3346 2 100 v 635 3281 a Fe(LINE)p 709 3281 10 2 v 11 w(WIDTH)p 828 3281 V 12 w(GRANULARITY)p 1092 3346 2 100 v 1101 3346 V 95 w Fh(R)1194 3266 y Fd(+)p 1281 3346 V 1336 3281 a Fk(GetFloatv)p 1601 3346 V 154 w Fm({)p 1826 3346 V 127 w(An)o(tialiased)f(line)g(width)1852 3331 y(gran)o(ularit)o(y)p 2296 3346 V 2338 3281 a(3.4)p 2431 3346 V 140 w({)p 2651 3346 V 596 3347 2057 2 v 1576 2354 a currentpoint grestore moveto 1576 2354 a 520 2513 a FF(T)l(able)j(6.20.)22 b(More)16 b(Implem)o(en)o(tation)d(Dep)q(enden)o(t)j(V)l(alues)p eop %%Page: 169 178 169 177 bop 1547 137 a FC(169)20 2210 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 20 2210 a 141 2276 a Fm(Get)14 b(v)n(alue)130 b(T)o(yp)q(e)660 2239 y(Get)660 2276 y(Cmnd)892 2239 y(Initial)892 2276 y(V)m(alue)163 b(Description)157 b(Sec.)50 b(A)o(ttribute)p 34 2293 1804 2 v 33 2442 2 150 v 157 2328 a Fe(RED)p 224 2328 10 2 v 11 w(BITS)p 412 2442 2 150 v 421 2442 V 160 w Fh(Z)495 2313 y Fd(+)p 564 2442 V 590 2328 a Fk(GetIn)o(tegerv)p 866 2442 V 95 w Fm(-)p 1025 2442 V 97 w(Num)o(b)q(er)14 b(of)f(bits)h(p)q(er)g(red)1051 2378 y(comp)q(onen)o(t)f(in)h(color) 1051 2427 y(bu\013ers)p 1495 2442 V 1546 2328 a(4)p 1616 2442 V 150 w({)p 1837 2442 V 34 2444 1804 2 v 33 2593 2 150 v 135 2479 a Fe(GREEN)p 244 2479 10 2 v 13 w(BITS)p 412 2593 2 150 v 421 2593 V 138 w Fh(Z)495 2464 y Fd(+)p 564 2593 V 590 2479 a Fk(GetIn)o(tegerv)p 866 2593 V 95 w Fm(-)p 1025 2593 V 97 w(Num)o(b)q(er)g(of)f(bits)h(p)q(er)1051 2529 y(green)h(comp)q(onen)o(t)e(in)1051 2579 y(color)h(bu\013ers)p 1495 2593 V 1546 2479 a(4)p 1616 2593 V 150 w({)p 1837 2593 V 34 2595 1804 2 v 33 2745 2 150 v 148 2630 a Fe(BLUE)p 232 2630 10 2 v 12 w(BITS)p 412 2745 2 150 v 421 2745 V 151 w Fh(Z)495 2615 y Fd(+)p 564 2745 V 590 2630 a Fk(GetIn)o(tegerv)p 866 2745 V 95 w Fm(-)p 1025 2745 V 97 w(Num)o(b)q(er)g(of)f(bits)h(p)q(er)1051 2680 y(blue)g(comp)q (onen)o(t)f(in)1051 2730 y(color)h(bu\013ers)p 1495 2745 V 1546 2630 a(4)p 1616 2745 V 150 w({)p 1837 2745 V 34 2746 1804 2 v 33 2896 2 150 v 137 2781 a Fe(ALPHA)p 244 2781 10 2 v 12 w(BITS)p 412 2896 2 150 v 421 2896 V 139 w Fh(Z)495 2766 y Fd(+)p 564 2896 V 590 2781 a Fk(GetIn)o(tegerv)p 866 2896 V 95 w Fm(-)p 1025 2896 V 97 w(Num)o(b)q(er)g(of)f(bits)h(p)q (er)1051 2831 y(alpha)f(comp)q(onen)o(t)g(in)1051 2881 y(color)h(bu\013ers)p 1495 2896 V 1546 2781 a(4)p 1616 2896 V 150 w({)p 1837 2896 V 34 2897 1804 2 v 33 2997 2 100 v 140 2932 a Fe(INDEX)p 240 2932 10 2 v 12 w(BITS)p 412 2997 2 100 v 421 2997 V 143 w Fh(Z)495 2917 y Fd(+)p 564 2997 V 590 2932 a Fk(GetIn)o(tegerv)p 866 2997 V 95 w Fm(-)p 1025 2997 V 97 w(Num)o(b)q(er)g(of)f(bits)h(p)q(er)1051 2982 y(index)g(in)f(color)h(bu\013ers)p 1495 2997 V 1546 2932 a(4)p 1616 2997 V 150 w({)p 1837 2997 V 34 2999 1804 2 v 33 3098 2 100 v 136 3034 a Fe(DEPTH)p 245 3034 10 2 v 11 w(BITS)p 412 3098 2 100 v 421 3098 V 139 w Fh(Z)495 3018 y Fd(+)p 564 3098 V 590 3034 a Fk(GetIn)o(tegerv)p 866 3098 V 95 w Fm(-)p 1025 3098 V 97 w(Num)o(b)q(er)g(of)f(depth)1051 3083 y(bu\013er)i(planes)p 1495 3098 V 1546 3034 a(4)p 1616 3098 V 150 w({)p 1837 3098 V 34 3100 1804 2 v 33 3200 2 100 v 123 3135 a Fe(STENCIL)p 258 3135 10 2 v 11 w(BITS)p 412 3200 2 100 v 421 3200 V 126 w Fh(Z)495 3120 y Fd(+)p 564 3200 V 590 3135 a Fk(GetIn)o(tegerv)p 866 3200 V 95 w Fm(-)p 1025 3200 V 97 w(Num)o(b)q(er)f(of)f(stencil) 1051 3185 y(planes)p 1495 3200 V 1546 3135 a(4)p 1616 3200 V 150 w({)p 1837 3200 V 34 3201 1804 2 v 33 3351 2 150 v 94 3236 a Fe(A)o(CCUM)p 210 3236 10 2 v 12 w(RED)p 287 3236 V 11 w(BITS)p 412 3351 2 150 v 421 3351 V 97 w Fh(Z)495 3221 y Fd(+)p 564 3351 V 590 3236 a Fk(GetIn)o(tegerv)p 866 3351 V 95 w Fm(-)p 1025 3351 V 97 w(Num)o(b)q(er)h(of)f(bits)h(p)q (er)g(red)1051 3286 y(comp)q(onen)o(t)f(in)h(the)1051 3336 y(accum)o(ulation)e(bu\013er)p 1495 3351 V 1546 3236 a(4)p 1616 3351 V 150 w({)p 1837 3351 V 34 3352 1804 2 v 33 3552 2 200 v 73 3387 a Fe(A)o(CCUM)p 189 3387 10 2 v 11 w(GREEN)p 307 3387 V 13 w(BITS)p 412 3552 2 200 v 421 3552 V 75 w Fh(Z)495 3372 y Fd(+)p 564 3552 V 590 3387 a Fk(GetIn)o(tegerv)p 866 3552 V 95 w Fm(-)p 1025 3552 V 97 w(Num)o(b)q(er)i(of)f(bits)h(p)q(er)1051 3437 y(green)h(comp)q(onen)o(t)e(in)1051 3487 y(the)i(accum)o(ulation) 1051 3537 y(bu\013er)p 1495 3552 V 1546 3387 a(4)p 1616 3552 V 150 w({)p 1837 3552 V 34 3553 1804 2 v 33 3703 2 150 v 86 3588 a Fe(A)o(CCUM)p 202 3588 10 2 v 11 w(BLUE)p 295 3588 V 12 w(BITS)p 412 3703 2 150 v 421 3703 V 88 w Fh(Z)495 3573 y Fd(+)p 564 3703 V 590 3588 a Fk(GetIn)o(tegerv)p 866 3703 V 95 w Fm(-)p 1025 3703 V 97 w(Num)o(b)q(er)f(of)f(bits)h(p)q (er)1051 3638 y(blue)g(comp)q(onen)o(t)f(in)h(the)1051 3688 y(accum)o(ulation)e(bu\013er)p 1495 3703 V 1546 3588 a(4)p 1616 3703 V 150 w({)p 1837 3703 V 34 3704 1804 2 v 33 3904 2 200 v 74 3739 a Fe(A)o(CCUM)p 190 3739 10 2 v 11 w(ALPHA)p 306 3739 V 12 w(BITS)p 412 3904 2 200 v 421 3904 V 77 w Fh(Z)495 3724 y Fd(+)p 564 3904 V 590 3739 a Fk(GetIn)o(tegerv)p 866 3904 V 95 w Fm(-)p 1025 3904 V 97 w(Num)o(b)q(er)i(of)f(bits)h(p)q(er)1051 3789 y(alpha)f(comp)q(onen)o(t)g(in)1051 3839 y(the)i(accum)o(ulation) 1051 3889 y(bu\013er)p 1495 3904 V 1546 3739 a(4)p 1616 3904 V 150 w({)p 1837 3904 V 34 3905 1804 2 v 1715 2210 a currentpoint grestore moveto 1715 2210 a 303 2370 a FF(T)l(able)h(6.21.)22 b(Implem)o(en)o(t)o (ation)14 b(Dep)q(enden)o(t)i(Pixel)f(Depths)p eop %%Page: 170 179 170 178 bop 332 137 a FC(170)417 b Fx(CHAPTER)16 b(6.)34 b(ST)l(A)l(TE)16 b(AND)f(ST)l(A)l(TE)g(REQUESTS)402 2339 y gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate 402 2339 a 603 2405 a Fm(Get)f(v)n(alue)236 b(T)o(yp)q(e)1256 2367 y(Get)1256 2405 y(Cmnd)1500 2367 y(Initial)1500 2405 y(V)m(alue)175 b(Description)156 b(Sec.)50 b(A)o(ttribute)p 416 2421 2042 2 v 415 2471 2 50 v 613 2456 a Fe(LIST)p 684 2456 10 2 v 10 w(BASE)p 955 2471 2 50 v 963 2471 V 260 w Fh(Z)1063 2441 y Fd(+)p 1157 2471 V 1185 2456 a Fk(GetIn)o(tegerv)p 1464 2471 V 105 w Fm(0)p 1644 2471 V 104 w(Setting)14 b(of)f Fk(ListBase)p 2114 2471 V 110 w Fm(5.4)p 2236 2471 V 116 w(list)p 2456 2471 V 416 2473 2042 2 v 415 2622 2 150 v 604 2507 a Fe(LIST)p 675 2507 10 2 v 10 w(INDEX)p 955 2622 2 150 v 963 2622 V 251 w Fh(Z)1063 2492 y Fd(+)p 1157 2622 V 1185 2507 a Fk(GetIn)o(tegerv)p 1464 2622 V 105 w Fm(0)p 1644 2622 V 104 w(n)o(um)o(b)q(er)g(of)h (displa)o(y)f(list)1670 2557 y(under)i(construction;)f(0)1670 2607 y(if)f(none)p 2114 2622 V 2149 2507 a(5.4)p 2236 2622 V 133 w({)p 2456 2622 V 416 2624 2042 2 v 415 2773 2 150 v 606 2659 a Fe(LIST)p 677 2659 10 2 v 11 w(MODE)p 955 2773 2 150 v 963 2773 V 253 w Fh(Z)1063 2644 y Fd(+)p 1157 2773 V 1185 2659 a Fk(GetIn)o(tegerv)p 1464 2773 V 105 w Fm(0)p 1644 2773 V 104 w(Mo)q(de)i(of)e(displa)o(y)g(list)1670 2708 y(under)i(construction;)1670 2758 y(unde\014ned)g(if)e(none)p 2114 2773 V 2149 2659 a(5.4)p 2236 2773 V 133 w({)p 2456 2773 V 416 2775 2042 2 v 415 2825 2 50 v 685 2810 a Fe({)p 955 2825 V 963 2825 V 289 w Fm(16)c Fc(\003)g(\002)p Fh(A)p 1157 2825 V 166 w Fk({)p 1464 2825 V 176 w Fm(empt)o(y)p 1644 2825 V 57 w(Serv)o(er)15 b(attribute)g(stac)o(k)p 2114 2825 V 100 w(6)p 2236 2825 V 150 w({)p 2456 2825 V 416 2826 2042 2 v 415 2926 2 100 v 518 2861 a Fe(A)n(TTRIB)p 638 2861 10 2 v 10 w(ST)n(A)o(CK)p 751 2861 V 11 w(DEPTH)p 955 2926 2 100 v 963 2926 V 165 w Fh(Z)1063 2846 y Fd(+)p 1157 2926 V 1185 2861 a Fk(GetIn)o(tegerv)p 1464 2926 V 105 w Fm(0)p 1644 2926 V 104 w(Serv)o(er)g(attribute)g(stac)o(k)1670 2911 y(p)q(oin)o(ter)p 2114 2926 V 2165 2861 a(6)p 2236 2926 V 150 w({)p 2456 2926 V 416 2928 2042 2 v 415 2977 2 50 v 685 2962 a Fe({)p 955 2977 V 963 2977 V 289 w Fm(16)9 b Fc(\003)g(\002)p Fh(A)p 1157 2977 V 166 w Fk({)p 1464 2977 V 176 w Fm(empt)o(y)p 1644 2977 V 57 w(Clien)o(t)14 b(attribute)g(stac)o(k)p 2114 2977 V 104 w(6)p 2236 2977 V 150 w({)p 2456 2977 V 416 2979 2042 2 v 415 3079 2 100 v 455 3014 a Fe(CLIENT)p 573 3014 10 2 v 10 w(A)n(TTRIB)p 701 3014 V 11 w(ST)n(A)o(CK)p 815 3014 V 10 w(DEPTH)p 955 3079 2 100 v 963 3079 V 102 w Fh(Z)1063 2999 y Fd(+)p 1157 3079 V 1185 3014 a Fk(GetIn)o(tegerv)p 1464 3079 V 105 w Fm(0)p 1644 3079 V 104 w(Clien)o(t)g(attribute)g(stac)o(k)1670 3064 y(p)q(oin)o(ter)p 2114 3079 V 2165 3014 a(6)p 2236 3079 V 150 w({)p 2456 3079 V 416 3080 2042 2 v 415 3130 2 50 v 531 3115 a Fe(NAME)p 624 3115 10 2 v 12 w(ST)n(A)o(CK)p 739 3115 V 10 w(DEPTH)p 955 3130 2 50 v 963 3130 V 178 w Fh(Z)1063 3100 y Fd(+)p 1157 3130 V 1185 3115 a Fk(GetIn)o(tegerv)p 1464 3130 V 105 w Fm(0)p 1644 3130 V 104 w(Name)f(stac)o(k)h(depth)p 2114 3130 V 151 w(5.2)p 2236 3130 V 133 w({)p 2456 3130 V 416 3132 2042 2 v 415 3182 2 50 v 575 3167 a Fe(RENDER)p 706 3167 10 2 v 12 w(MODE)p 955 3182 2 50 v 963 3182 V 229 w Fh(Z)1066 3173 y Fd(3)p 1157 3182 V 1185 3167 a Fk(GetIn)o(tegerv)p 1464 3182 V 50 w Fr(RENDER)p 1644 3182 V 48 w Fk(RenderMo)q(de)e Fm(setting)p 2114 3182 V 72 w(5.2)p 2236 3182 V 133 w({)p 2456 3182 V 416 3183 2042 2 v 415 3283 2 100 v 461 3218 a Fe(SELECTION)p 639 3218 10 2 v 11 w(BUFFER)p 775 3218 V 11 w(POINTER)p 955 3283 2 100 v 963 3283 V 120 w Fh(Y)p 1157 3283 V 115 w Fk(GetP)o(oin)o(t)o(erv)p 1464 3283 V 102 w Fm(0)p 1644 3283 V 104 w(Selection)i(bu\013er)1670 3268 y(p)q(oin)o(ter)p 2114 3283 V 2149 3218 a(5.2)p 2236 3283 V 94 w(select)p 2456 3283 V 416 3285 2042 2 v 415 3334 2 50 v 498 3319 a Fe(SELECTION)p 676 3319 10 2 v 11 w(BUFFER)p 812 3319 V 11 w(SIZE)p 955 3334 2 50 v 963 3334 V 145 w Fh(Z)1063 3304 y Fd(+)p 1157 3334 V 1185 3319 a Fk(GetIn)o(tegerv)p 1464 3334 V 105 w Fm(0)p 1644 3334 V 104 w(Selection)g(bu\013er)h(size) p 2114 3334 V 121 w(5.2)p 2236 3334 V 94 w(select)p 2456 3334 V 416 3336 2042 2 v 415 3436 2 100 v 463 3371 a Fe(FEEDBA)o(CK)p 635 3371 10 2 v 12 w(BUFFER)p 772 3371 V 11 w(POINTER)p 955 3436 2 100 v 963 3436 V 123 w Fh(Y)p 1157 3436 V 115 w Fk(GetP)o(oin)o(t)o(erv)p 1464 3436 V 102 w Fm(0)p 1644 3436 V 104 w(F)m(eedbac)o(k)g(bu\013er)1670 3421 y(p)q(oin)o(ter)p 2114 3436 V 2149 3371 a(5.3)p 2236 3436 V 66 w(feedbac)o(k)p 2456 3436 V 416 3437 2042 2 v 415 3487 2 50 v 501 3472 a Fe(FEEDBA)o(CK)p 673 3472 10 2 v 11 w(BUFFER)p 809 3472 V 11 w(SIZE)p 955 3487 2 50 v 963 3487 V 148 w Fh(Z)1063 3457 y Fd(+)p 1157 3487 V 1185 3472 a Fk(GetIn)o(tegerv)p 1464 3487 V 105 w Fm(0)p 1644 3487 V 104 w(F)m(eedbac)o(k)g(bu\013er)g(size)p 2114 3487 V 115 w(5.3)p 2236 3487 V 66 w(feedbac)o(k)p 2456 3487 V 416 3489 2042 2 v 415 3539 2 50 v 492 3524 a Fe(FEEDBA)o(CK)p 664 3524 10 2 v 11 w(BUFFER)p 800 3524 V 11 w(TYPE)p 955 3539 2 50 v 963 3539 V 145 w Fh(Z)1066 3530 y Fd(5)p 1157 3539 V 1185 3524 a Fk(GetIn)o(tegerv)p 1464 3539 V 93 w Fr(2D)p 1644 3539 V 93 w Fm(F)m(eedbac)o(k)g(t)o(yp)q (e)p 2114 3539 V 219 w(5.3)p 2236 3539 V 66 w(feedbac)o(k)p 2456 3539 V 416 3540 2042 2 v 415 3590 2 50 v 685 3575 a Fe({)p 955 3590 V 963 3590 V 300 w Fh(n)9 b Fc(\002)g Fh(Z)1103 3581 y Fd(8)p 1157 3590 V 1215 3575 a Fk(GetError)p 1464 3590 V 136 w Fm(0)p 1644 3590 V 104 w(Curren)o(t)15 b(error)g(co)q(de\(s\))p 2114 3590 V 92 w(2.5)p 2236 3590 V 133 w({)p 2456 3590 V 416 3592 2042 2 v 415 3691 2 100 v 685 3627 a Fe({)p 955 3691 V 963 3691 V 306 w Fh(n)10 b Fc(\002)f Fh(B)p 1157 3691 V 186 w Fk({)p 1464 3691 V 186 w Fb(F)m(alse)p 1644 3691 V 69 w Fm(T)m(rue)14 b(if)f(there)j(is)d(a)1670 3676 y(corresp)q(onding)i(error)p 2114 3691 V 2149 3627 a(2.5)p 2236 3691 V 133 w({)p 2456 3691 V 416 3693 2042 2 v 1757 2339 a currentpoint grestore moveto 1757 2339 a 805 2498 a FF(T)l(able)h(6.22.)22 b(Miscellaneous)p eop %%Page: 171 180 171 179 bop 120 614 a Ft(App)s(endix)33 b(A)120 837 y FA(In)m(v)-6 b(ariance)120 1075 y FC(The)12 b(Op)q(enGL)i(sp)q (eci\014cation)f(is)f(not)g(pixel)h(exact.)19 b(It)12 b(therefore)f(do)q(es)h(not)f(guaran)o(tee)120 1132 y(an)j(exact)g (matc)o(h)f(b)q(et)o(w)o(een)i(images)f(pro)q(duced)h(b)o(y)f (di\013eren)o(t)g(GL)g(implemen)o(tations.)120 1188 y(Ho)o(w)o(ev)o (er,)20 b(the)g(sp)q(eci\014cation)i(do)q(es)f(sp)q(ecify)g(exact)f (matc)o(hes,)g(in)h(some)f(cases,)g(for)120 1244 y(images)12 b(pro)q(duced)g(b)o(y)f(the)g(same)g(implemen)o(tation.)20 b(The)12 b(purp)q(ose)g(of)e(this)i(app)q(endix)120 1301 y(is)22 b(to)f(iden)o(tify)i(and)f(pro)o(vide)g(justi\014cation)g(for)f (those)g(cases)h(that)f(require)h(exact)120 1357 y(matc)o(hes.)120 1591 y Fs(A.1)67 b(Rep)r(eatabilit)n(y)120 1723 y FC(The)18 b(ob)o(vious)f(and)g(most)f(fundamen)o(tal)h(case)g(is)h(rep)q(eated)f (issuance)h(of)f(a)g(series)g(of)120 1779 y(GL)k(commands.)37 b(F)l(or)21 b(an)o(y)f(giv)o(en)i(GL)f(and)g(framebu\013er)f(state)g Fv(ve)n(ctor)p FC(,)i(and)f(for)120 1836 y(an)o(y)13 b(GL)h(command,)f(the)g(resulting)i(GL)e(and)h(framebu\013er)f(state)f (m)o(ust)h(b)q(e)h(iden)o(tical)120 1892 y(whenev)o(er)f(the)f(command) f(is)i(executed)g(on)e(that)h(initial)i(GL)e(and)g(framebu\013er)f (state.)191 1964 y(One)24 b(purp)q(ose)g(of)f(rep)q(eatabilit)o(y)i(is) f(a)o(v)o(oidance)g(of)f(visual)h(artifacts)f(when)h(a)120 2021 y(double-bu\013ered)c(scene)d(is)h(redra)o(wn.)26 b(If)17 b(rendering)i(is)e(not)g(rep)q(eatable,)h(sw)o(apping)120 2077 y(b)q(et)o(w)o(een)j(t)o(w)o(o)f(bu\013ers)g(rendered)i(with)f (the)g(same)f(command)h(sequence)h(ma)o(y)e(re-)120 2134 y(sult)c(in)h(visible)h(c)o(hanges)d(in)h(the)g(image.)21 b(Suc)o(h)16 b(false)g(motion)g(is)g(distracting)g(to)f(the)120 2190 y(view)o(er.)21 b(Another)15 b(reason)g(for)f(rep)q(eatabilit)o(y) j(is)e(testabilit)o(y)l(.)191 2262 y(Rep)q(eatabilit)o(y)l(,)21 b(while)e(imp)q(ortan)o(t,)g(is)f(a)g(w)o(eak)g(requiremen)o(t.)29 b(Giv)o(en)19 b(only)g(re-)120 2319 y(p)q(eatabilit)o(y)e(as)e(a)f (requiremen)o(t,)i(t)o(w)o(o)d(scenes)j(rendered)g(with)g(one)f (\(small\))g(p)q(olygon)120 2375 y(c)o(hanged)22 b(in)f(p)q(osition)h (migh)o(t)f(di\013er)g(at)f(ev)o(ery)h(pixel.)38 b(Suc)o(h)22 b(a)e(di\013erence,)j(while)120 2432 y(within)17 b(the)e(la)o(w)g(of)f (rep)q(eatabilit)o(y)l(,)i(is)g(certainly)g(not)f(within)h(its)f (spirit.)21 b(Additional)120 2488 y(in)o(v)m(ariance)c(rules)f(are)f (desirable)i(to)d(ensure)i(useful)g(op)q(eration.)833 2613 y(171)p eop %%Page: 172 181 172 180 bop 332 137 a FC(172)792 b Fx(APPENDIX)15 b(A.)30 b(INV)-5 b(ARIANCE)332 286 y Fs(A.2)66 b(Multi-pass)24 b(Algorithms)332 389 y FC(In)o(v)m(ariance)15 b(is)f(necessary)g(for)f (a)g(whole)h(set)f(of)h(useful)g(m)o(ulti-pass)h(algorithms.)k(Suc)o(h) 332 446 y(algorithms)d(render)g(m)o(ultiple)i(times,)e(eac)o(h)g(time)h (with)f(a)g(di\013eren)o(t)g(GL)g(mo)q(de)g(v)o(ec-)332 502 y(tor,)i(to)h(ev)o(en)o(tually)g(pro)q(duce)h(a)e(result)h(in)h (the)f(framebu\013er.)30 b(Examples)19 b(of)f(these)332 559 y(algorithms)d(include:)400 655 y FB(\017)23 b FC(\\Erasing")15 b(a)h(primitiv)o(e)i(from)d(the)h(framebu\013er)g(b)o(y)g(redra)o(wing) g(it,)h(either)g(in)446 711 y(a)e(di\013eren)o(t)g(color)g(or)g(using)h (the)f(X)o(OR)h(logical)g(op)q(eration.)400 808 y FB(\017)23 b FC(Using)16 b(stencil)g(op)q(erations)g(to)e(compute)h(capping)i (planes.)403 904 y(On)e(the)g(other)g(hand,)g(in)o(v)m(ariance)i(rules) f(can)f(greatly)g(increase)g(the)h(complexit)o(y)332 961 y(of)f(high-p)q(erformance)h(implemen)o(tations)g(of)e(the)h(GL.)g (Ev)o(en)g(the)g(w)o(eak)f(rep)q(eatabil-)332 1017 y(it)o(y)e (requiremen)o(t)h(signi\014can)o(tly)h(constrains)f(a)f(parallel)i (implemen)o(tation)f(of)f(the)h(GL.)332 1074 y(Because)k(GL)g(implemen) o(tations)g(are)f(required)i(to)e(implemen)o(t)i(ALL)f(GL)f(capabili-) 332 1130 y(ties,)i(not)g(just)f(a)g(con)o(v)o(enien)o(t)h(subset,)g (those)g(that)f(utilize)j(hardw)o(are)d(acceleration)332 1186 y(are)d(exp)q(ected)h(to)e(alternate)h(b)q(et)o(w)o(een)g(hardw)o (are)g(and)g(soft)o(w)o(are)e(mo)q(dules)j(based)g(on)332 1243 y(the)20 b(curren)o(t)g(GL)f(mo)q(de)i(v)o(ector.)32 b(A)20 b(strong)f(in)o(v)m(ariance)i(requiremen)o(t)g(forces)e(the)332 1299 y(b)q(eha)o(vior)f(of)e(the)i(hardw)o(are)e(and)h(soft)o(w)o(are)f (mo)q(dules)i(to)e(b)q(e)i(iden)o(tical,)h(something)332 1356 y(that)h(ma)o(y)h(b)q(e)h(v)o(ery)e(di\016cult)j(to)d(ac)o(hiev)o (e)i(\(for)e(example,)j(if)f(the)f(hardw)o(are)f(do)q(es)332 1412 y(\015oating-p)q(oin)o(t)c(op)q(erations)f(with)h(di\013eren)o(t)f (precision)i(than)e(the)g(soft)o(w)o(are\).)403 1469 y(What)h(is)h(desired)h(is)f(a)g(compromise)g(that)f(results)h(in)h (man)o(y)e(complian)o(t,)h(high-)332 1526 y(p)q(erformance)k(implemen)o (tations,)h(and)f(in)g(man)o(y)f(soft)o(w)o(are)f(v)o(endors)h(c)o(ho)q (osing)h(to)332 1582 y(p)q(ort)15 b(to)g(Op)q(enGL.)332 1729 y Fs(A.3)66 b(In)n(v)l(ariance)25 b(Rules)332 1832 y FC(F)l(or)15 b(a)g(giv)o(en)g(instan)o(tiation)h(of)f(an)g(Op)q(enGL) h(rendering)h(con)o(text:)332 1942 y Fz(Rule)h(1)23 b Fv(F)m(or)17 b(any)g(given)g(GL)g(and)h(fr)n(amebu\013er)g(state)f(ve)n (ctor,)h(and)f(for)h(any)f(given)332 1999 y(GL)d(c)n(ommand,)h(the)g(r) n(esulting)f(GL)g(and)g(fr)n(amebu\013er)h(state)g(must)g(b)n(e)f (identic)n(al)g(e)n(ach)332 2055 y(time)i(the)h(c)n(ommand)f(is)g(exe)n (cute)n(d)g(on)g(that)h(initial)f(GL)g(and)g(fr)n(amebu\013er)h(state.) 332 2165 y Fz(Rule)h(2)23 b Fv(Changes)17 b(to)g(the)h(fol)r(lowing)f (state)h(values)f(have)g(no)h(side)f(e\013e)n(cts)f(\(the)i(use)332 2221 y(of)f(any)f(other)h(state)f(value)g(is)g(not)g(a\013e)n(cte)n(d)g (by)g(the)h(change\):)332 2317 y Fz(Required:)500 2414 y FB(\017)23 b Fv(F)m(r)n(amebu\013er)16 b(c)n(ontents)e(\(al)r(l)i (bitplanes\))500 2488 y FB(\017)23 b Fv(The)16 b(c)n(olor)g(bu\013ers)g (enable)n(d)f(for)i(writing)p eop %%Page: 173 182 173 181 bop 120 137 a Fx(A.3.)35 b(INV)-5 b(ARIANCE)16 b(R)o(ULES)849 b FC(173)289 286 y FB(\017)22 b Fv(The)16 b(values)g(of)g(matric)n(es)g(other)h(than)g(the)f(top-of-stack)h (matric)n(es)289 358 y FB(\017)22 b Fv(Scissor)15 b(p)n(ar)n(ameters)i (\(other)f(than)g(enable\))289 430 y FB(\017)22 b Fv(Writemasks)16 b(\(c)n(olor,)g(index,)g(depth,)h(stencil\))289 502 y FB(\017)22 b Fv(Cle)n(ar)15 b(values)h(\(c)n(olor,)g(index,)g(depth,)h (stencil,)e(ac)n(cumulation\))289 574 y FB(\016)22 b Fv(Curr)n(ent)16 b(values)g(\(c)n(olor,)f(index,)h(normal,)g(textur)n (e)h(c)n(o)n(or)n(ds,)f(e)n(dge\015ag\))289 646 y FB(\016)22 b Fv(Curr)n(ent)16 b(r)n(aster)g(c)n(olor,)g(index)g(and)g(textur)n(e)h (c)n(o)n(or)n(dinates.)289 717 y FB(\016)22 b Fv(Material)d(pr)n(op)n (erties)g(\(ambient,)h(di\013use,)g(sp)n(e)n(cular,)f(emission,)g (shini-)334 774 y(ness\))120 867 y Fz(Strongly)f(suggested:)289 959 y FB(\017)k Fv(Matrix)17 b(mo)n(de)289 1031 y FB(\017)22 b Fv(Matrix)17 b(stack)f(depths)289 1103 y FB(\017)22 b Fv(A)o(lpha)16 b(test)g(p)n(ar)n(ameters)h(\(other)f(than)g(enable\)) 289 1175 y FB(\017)22 b Fv(Stencil)15 b(p)n(ar)n(ameters)h(\(other)h (than)f(enable\))289 1247 y FB(\017)22 b Fv(Depth)17 b(test)f(p)n(ar)n(ameters)g(\(other)h(than)f(enable\))289 1318 y FB(\017)22 b Fv(Blend)16 b(p)n(ar)n(ameters)g(\(other)g(than)h (enable\))289 1390 y FB(\017)22 b Fv(L)n(o)n(gic)n(al)15 b(op)n(er)n(ation)h(p)n(ar)n(ameters)g(\(other)h(than)f(enable\))289 1462 y FB(\017)22 b Fv(Pixel)16 b(stor)n(age)g(and)g(tr)n(ansfer)g (state)289 1534 y FB(\017)22 b Fv(Evaluator)c(state)f(\(exc)n(ept)g(as) g(it)g(a\013e)n(cts)g(the)g(vertex)g(data)h(gener)n(ate)n(d)f(by)334 1590 y(the)g(evaluators\))289 1662 y FB(\017)22 b Fv(Polygon)13 b(o\013set)h(p)n(ar)n(ameters)f(\(other)h(than)g(enables,)f(and)g(exc)n (ept)h(as)f(they)334 1719 y(a\013e)n(ct)j(the)g(depth)h(values)f(of)h (fr)n(agments\))120 1821 y Fz(Corollary)h(1)23 b Fv(F)m(r)n(agment)13 b(gener)n(ation)h(is)g(invariant)g(with)h(r)n(esp)n(e)n(ct)f(to)g(the)h (state)g(val-)120 1878 y(ues)i(marke)n(d)f(with)h FB(\017)f Fv(in)g(R)o(ule)g(2.)120 1980 y Fz(Corollary)i(2)23 b Fv(The)17 b(window)g(c)n(o)n(or)n(dinates)g(\(x,)g(y,)h(and)f(z\))f(of) i(gener)n(ate)n(d)f(fr)n(agments)120 2037 y(ar)n(e)g(also)f(invariant)f (with)i(r)n(esp)n(e)n(ct)e(to)120 2128 y Fz(Required:)289 2220 y FB(\017)22 b Fv(Curr)n(ent)17 b(values)g(\(c)n(olor,)g(c)n(olor) g(index,)h(normal,)f(textur)n(e)h(c)n(o)n(or)n(ds,)f(e)n(dge-)334 2277 y(\015ag\))289 2349 y FB(\017)22 b Fv(Curr)n(ent)16 b(r)n(aster)g(c)n(olor,)g(c)n(olor)g(index,)g(and)g(textur)n(e)h(c)n(o) n(or)n(dinates)289 2420 y FB(\017)22 b Fv(Material)d(pr)n(op)n(erties)g (\(ambient,)h(di\013use,)g(sp)n(e)n(cular,)f(emission,)g(shini-)334 2477 y(ness\))p eop %%Page: 174 183 174 182 bop 332 137 a FC(174)792 b Fx(APPENDIX)15 b(A.)30 b(INV)-5 b(ARIANCE)332 286 y Fz(Rule)18 b(3)23 b Fv(The)c(arithmetic)g (of)h(e)n(ach)f(p)n(er-fr)n(agment)g(op)n(er)n(ation)f(is)h(invariant)g (exc)n(ept)332 343 y(with)13 b(r)n(esp)n(e)n(ct)f(to)h(p)n(ar)n (ameters)f(that)i(dir)n(e)n(ctly)d(c)n(ontr)n(ol)h(it)h(\(the)f(p)n(ar) n(ameters)h(that)g(c)n(ontr)n(ol)332 399 y(the)h(alpha)f(test,)h(for)f (instanc)n(e,)g(ar)n(e)g(the)g(alpha)h(test)f(enable,)g(the)g(alpha)h (test)f(function,)332 456 y(and)j(the)h(alpha)g(test)f(r)n(efer)n(enc)n (e)e(value\).)332 562 y Fz(Corollary)k(3)k Fv(Images)15 b(r)n(ender)n(e)n(d)f(into)h(di\013er)n(ent)f(c)n(olor)h(bu\013ers,)g (either)g(simultane-)332 619 y(ously)k(or)h(sep)n(ar)n(ately)f(using)f (the)i(same)f(c)n(ommand)h(se)n(quenc)n(e,)e(ar)n(e)h(pixel)g(identic)n (al.)332 675 y(\(Note)f(that)h(this)f(do)n(es)f(not)h(hold)h(b)n(etwe)n (en)e(X)1149 658 y FG(\003)1186 675 y Fv(pixmaps)i(and)f(c)n(olor)g (bu\013ers,)h(how-)332 731 y(ever.\))332 875 y Fs(A.4)66 b(What)24 b(All)f(This)g(Means)332 976 y FC(Hardw)o(are)16 b(accelerated)h(GL)g(implemen)o(tations)h(are)f(exp)q(ected)h(to)e (default)h(to)f(soft-)332 1033 y(w)o(are)11 b(op)q(eration)i(when)f (some)g(GL)g(state)f(v)o(ectors)g(are)h(encoun)o(tered.)20 b(Ev)o(en)12 b(the)g(w)o(eak)332 1089 y(rep)q(eatabilit)o(y)21 b(requiremen)o(t)f(means,)g(for)f(example,)i(that)d(Op)q(enGL)j (implemen)o(ta-)332 1145 y(tions)14 b(cannot)h(apply)g(h)o(ysteresis)f (to)g(this)g(sw)o(ap,)g(but)g(m)o(ust)g(instead)h(guaran)o(tee)e(that) 332 1202 y(a)h(giv)o(en)g(mo)q(de)g(v)o(ector)f(implies)j(that)e(a)f (subsequen)o(t)i(command)e Fv(always)h FC(is)h(executed)332 1258 y(in)h(either)g(the)f(hardw)o(are)g(or)f(the)i(soft)o(w)o(are)d (mac)o(hine.)403 1315 y(The)j(stronger)e(in)o(v)m(ariance)j(rules)g (constrain)f(when)g(the)f(switc)o(h)h(from)f(hardw)o(are)332 1371 y(to)g(soft)o(w)o(are)e(rendering)j(can)g(o)q(ccur,)f(giv)o(en)h (that)e(the)i(soft)o(w)o(are)d(and)j(hardw)o(are)e(ren-)332 1428 y(derers)k(are)f(not)g(pixel)i(iden)o(tical.)28 b(F)l(or)17 b(example,)i(the)e(switc)o(h)h(can)f(b)q(e)h(made)g(when) 332 1484 y(blending)h(is)f(enabled)g(or)f(disabled,)i(but)e(it)g (should)h(not)f(b)q(e)g(made)g(when)h(a)e(c)o(hange)332 1541 y(is)g(made)f(to)g(the)g(blending)i(parameters.)403 1597 y(Because)c(\015oating)g(p)q(oin)o(t)h(v)m(alues)g(ma)o(y)f(b)q(e) g(represen)o(ted)h(using)g(di\013eren)o(t)f(formats)332 1654 y(in)k(di\013eren)o(t)g(renderers)f(\(hardw)o(are)f(and)i(soft)o (w)o(are\),)d(man)o(y)h(Op)q(enGL)j(state)d(v)m(alues)332 1710 y(ma)o(y)i(c)o(hange)h(subtly)g(when)g(renderers)h(are)e(sw)o(app) q(ed.)28 b(This)18 b(is)g(the)g(t)o(yp)q(e)g(of)f(state)332 1766 y(v)m(alue)g(c)o(hange)e(that)f(Rule)j(1)e(seeks)g(to)g(a)o(v)o (oid.)p 332 2445 598 2 v 383 2472 a Fp(\003)401 2488 y Fo(X)e(is)g(a)g(registered)i(trademark)f(of)e(the)h(MIT)g(X)g (Consortium.)p eop %%Page: 175 184 175 183 bop 120 598 a Ft(App)s(endix)33 b(B)120 805 y FA(Corollaries)120 1028 y FC(The)22 b(follo)o(wing)g(observ)m(ations)f (are)g(deriv)o(ed)h(from)e(the)i(b)q(o)q(dy)f(and)h(the)f(other)g(ap-) 120 1084 y(p)q(endixes)c(of)d(the)h(sp)q(eci\014cation.)21 b(Absence)16 b(of)e(an)g(observ)m(ation)h(from)f(this)h(list)g(in)h(no) 120 1141 y(w)o(a)o(y)f(impugns)h(its)f(v)o(eracit)o(y)l(.)176 1247 y(1.)22 b(The)28 b Fr(CURRENT)p 497 1247 14 2 v 14 w(RASTER)p 643 1247 V 15 w(TEXTURE)p 812 1247 V 14 w(COORDINATES)d FC(m)o(ust)j(b)q(e)g(main)o(tained)h(cor-)234 1304 y(rectly)22 b(at)g(all)h(times,)g(including)i(p)q(erio)q(ds)e (while)g(texture)f(mapping)h(is)f(not)234 1360 y(enabled,)16 b(and)g(when)f(the)h(GL)f(is)h(in)g(color)f(index)h(mo)q(de.)176 1454 y(2.)22 b(When)d(requested,)g(texture)f(co)q(ordinates)h(returned) f(in)i(feedbac)o(k)e(mo)q(de)h(are)234 1510 y(alw)o(a)o(ys)c(v)m(alid,) h(includin)q(g)i(p)q(erio)q(ds)e(while)h(texture)f(mapping)g(is)g(not)f (enabled,)234 1567 y(and)g(when)h(the)f(GL)h(is)f(in)h(color)g(index)g (mo)q(de.)176 1661 y(3.)22 b(The)i(error)f(seman)o(tics)h(of)f(up)o(w)o (ard)g(compatible)i(Op)q(enGL)g(revisions)f(ma)o(y)234 1717 y(c)o(hange.)31 b(Otherwise,)21 b(only)e(additions)h(can)g(b)q(e)f (made)g(to)g(up)o(w)o(ard)f(compat-)234 1774 y(ible)f(revisions.)176 1868 y(4.)22 b(GL)17 b(query)g(commands)g(are)f(not)h(required)h(to)e (satisfy)g(the)h(seman)o(tics)g(of)g(the)234 1924 y Fz(Flush)23 b FC(or)g(the)g Fz(Finish)h FC(commands.)43 b(All)24 b(that)f(is)g(required)i(is)e(that)g(the)234 1981 y(queried)c(state)d (b)q(e)i(consisten)o(t)g(with)g(complete)g(execution)g(of)f(all)h (previously)234 2037 y(executed)e(GL)f(commands.)176 2131 y(5.)22 b(Application)g(sp)q(eci\014ed)f(p)q(oin)o(t)f(size)h(and) f(line)h(width)f(m)o(ust)f(b)q(e)h(returned)g(as)234 2187 y(sp)q(eci\014ed)h(when)f(queried.)34 b(Implemen)o(tation)20 b(dep)q(enden)o(t)h(clamping)g(a\013ects)234 2244 y(the)15 b(v)m(alues)i(only)e(while)i(they)e(are)g(in)h(use.)176 2338 y(6.)22 b(Bitmaps)15 b(and)h(pixel)h(transfers)d(do)h(not)g(cause) g(selection)i(hits.)176 2432 y(7.)22 b(The)15 b(mask)f(sp)q(eci\014ed)j (as)e(the)g(third)g(argumen)o(t)f(to)g Fz(StencilF)l(unc)j FC(a\013ects)d(the)234 2488 y(op)q(erands)e(of)f(the)h(stencil)h (comparison)e(function,)i(but)e(has)h(no)f(direct)i(e\013ect)e(on)833 2613 y(175)p eop %%Page: 176 185 176 184 bop 332 137 a FC(176)756 b Fx(APPENDIX)16 b(B.)30 b(COR)o(OLLARIES)446 286 y FC(the)14 b(up)q(date)i(of)e(the)h(stencil)h (bu\013er.)j(The)c(mask)f(sp)q(eci\014ed)j(b)o(y)e Fz(StencilMask)446 343 y FC(has)f(no)h(e\013ect)g(on)g(the)f(stencil)j(comparison)e (function;)g(it)g(limits)h(the)f(e\013ect)g(of)446 399 y(the)g(up)q(date)h(of)f(the)g(stencil)i(bu\013er.)388 491 y(8.)22 b(P)o(olygon)13 b(shading)i(is)g(completed)g(b)q(efore)f (the)h(p)q(olygon)f(mo)q(de)h(is)f(in)o(terpreted.)446 548 y(If)19 b(the)g(shade)g(mo)q(del)h(is)g Fr(FLAT)p FC(,)d(all)j(of)f(the)g(p)q(oin)o(ts)g(or)f(lines)j(generated)e(b)o(y)g (a)446 604 y(single)d(p)q(olygon)g(will)h(ha)o(v)o(e)e(the)g(same)g (color.)388 696 y(9.)22 b(A)17 b(displa)o(y)i(list)g(is)f(just)f(a)g (group)h(of)f(commands)g(and)h(argumen)o(ts,)f(so)g(errors)446 752 y(generated)e(b)o(y)g(commands)g(in)h(a)f(displa)o(y)i(list)f(m)o (ust)e(b)q(e)i(generated)g(when)f(the)446 809 y(list)j(is)g(executed.) 28 b(If)18 b(the)g(list)g(is)g(created)g(in)g Fr(COMPILE)f FC(mo)q(de,)h(errors)e(should)446 865 y(not)f(b)q(e)g(generated)h (while)g(the)g(list)g(is)f(b)q(eing)i(created.)365 957 y(10.)22 b Fz(RasterP)o(os)14 b FC(do)q(es)i(not)f(c)o(hange)h(the)g (curren)o(t)f(raster)g(index)h(from)f(its)h(default)446 1013 y(v)m(alue)h(in)f(an)g(R)o(GBA)g(mo)q(de)g(GL)f(con)o(text.)21 b(Lik)o(ewise,)c Fz(RasterP)o(os)e FC(do)q(es)h(not)446 1070 y(c)o(hange)f(the)h(curren)o(t)f(raster)g(color)g(from)g(its)h (default)g(v)m(alue)g(in)h(a)e(color)g(index)446 1126 y(GL)22 b(con)o(text.)40 b(Both)22 b(the)g(curren)o(t)g(raster)f(index) i(and)f(the)g(curren)o(t)g(raster)446 1183 y(color)15 b(can)g(b)q(e)g(queried,)h(ho)o(w)o(ev)o(er,)e(regardless)h(of)f(the)h (color)g(mo)q(de)g(of)f(the)h(GL)446 1239 y(con)o(text.)365 1331 y(11.)22 b(A)16 b(material)h(prop)q(ert)o(y)f(that)g(is)h(attac)o (hed)f(to)g(the)h(curren)o(t)f(color)h(via)g Fz(Color-)446 1387 y(Material)k FC(alw)o(a)o(ys)d(tak)o(es)h(the)h(v)m(alue)h(of)e (the)h(curren)o(t)f(color.)33 b(A)o(ttempts)19 b(to)446 1444 y(c)o(hange)c(that)f(material)i(prop)q(ert)o(y)f(via)g Fz(Material)i FC(calls)f(ha)o(v)o(e)f(no)g(e\013ect.)365 1535 y(12.)22 b Fz(Material)15 b FC(and)f Fz(ColorMaterial)g FC(can)g(b)q(e)h(used)f(to)f(mo)q(dify)h(the)g(R)o(GBA)g(ma-)446 1592 y(terial)19 b(prop)q(erties,)g(ev)o(en)g(in)g(a)g(color)f(index)i (con)o(text.)29 b(Lik)o(ewise,)20 b Fz(Material)446 1648 y FC(can)15 b(b)q(e)h(used)g(to)f(mo)q(dify)g(the)h(color)f(index)i (material)e(prop)q(erties,)h(ev)o(en)f(in)i(an)446 1705 y(R)o(GBA)e(con)o(text.)365 1797 y(13.)22 b(There)16 b(is)g(no)g(atomicit)o(y)f(requiremen)o(t)i(for)e(Op)q(enGL)i (rendering)g(commands,)446 1853 y(ev)o(en)e(at)g(the)g(fragmen)o(t)f (lev)o(el.)365 1945 y(14.)22 b(Because)h(rasterization)f(of)f(non-an)o (tialiased)j(p)q(olygons)f(is)f(p)q(oin)o(t)h(sampled,)446 2001 y(p)q(olygons)15 b(that)g(ha)o(v)o(e)g(no)g(area)g(generate)g(no)g (fragmen)o(ts)f(when)i(they)f(are)g(ras-)446 2058 y(terized)e(in)f Fr(FILL)f FC(mo)q(de,)i(and)f(the)g(fragmen)o(ts)f(generated)h(b)o(y)f (the)i(rasterization)446 2114 y(of)h(\\narro)o(w")g(p)q(olygons)i(ma)o (y)e(not)h(form)f(a)h(con)o(tin)o(uous)h(arra)o(y)l(.)365 2206 y(15.)22 b(Op)q(enGL)e(do)q(es)e(not)g(force)h(left-)g(or)f(righ)o (t-handedness)h(on)g(an)o(y)f(of)g(its)h(co)q(or-)446 2262 y(dinates)d(systems.)21 b(Consider,)16 b(ho)o(w)o(ev)o(er,)f(the)h (follo)o(wing)g(conditions:)23 b(\(1\))14 b(the)446 2319 y(ob)s(ject)e(co)q(ordinate)h(system)f(is)h(righ)o(t-handed;)g(\(2\))f (the)h(only)g(commands)f(used)446 2375 y(to)h(manipulate)j(the)e(mo)q (del-view)i(matrix)e(are)g Fz(Scale)h FC(\(with)f(p)q(ositiv)o(e)h (scaling)446 2432 y(v)m(alues)g(only\),)g Fz(Rotate)p FC(,)g(and)g Fz(T)l(ranslate)p FC(;)g(\(3\))e(exactly)i(one)f(of)g (either)h Fz(F)l(rus-)446 2488 y(tum)e FC(or)g Fz(Ortho)h FC(is)g(used)g(to)f(set)h(the)f(pro)s(jection)h(matrix;)f(\(4\))g(the)h (near)f(v)m(alue)p eop %%Page: 177 186 177 185 bop 1547 137 a FC(177)234 286 y(is)15 b(less)f(than)g(the)h (far)e(v)m(alue)j(for)d Fz(DepthRange)p FC(.)21 b(If)14 b(these)h(conditions)g(are)f(all)234 343 y(satis\014ed,)h(then)g(the)g (ey)o(e)f(co)q(ordinate)h(system)f(is)i(righ)o(t-handed)f(and)g(the)f (clip,)234 399 y(normalized)i(device,)h(and)e(windo)o(w)h(co)q (ordinate)f(systems)g(are)g(left-handed.)153 493 y(16.)22 b(ColorMaterial)15 b(has)g(no)g(e\013ect)g(on)g(color)g(index)i(ligh)o (ting.)153 587 y(17.)22 b(\(No)12 b(pixel)j(drop)q(outs)d(or)g (duplicates.\))21 b(Let)13 b(t)o(w)o(o)e(p)q(olygons)j(share)e(an)h (iden)o(tical)234 643 y(edge)j(\(that)f(is,)h(there)f(exist)h(v)o (ertices)g(A)g(and)g(B)g(of)f(an)h(edge)g(of)f(one)h(p)q(olygon,)234 700 y(and)e(v)o(ertices)h(C)f(and)g(D)g(of)g(an)g(edge)g(of)g(the)g (other)g(p)q(olygon,)g(and)h(the)f(co)q(ordi-)234 756 y(nates)e(of)f(v)o(ertex)h(A)g(\(resp.)18 b(B\))12 b(are)g(iden)o (tical)h(to)f(those)f(of)h(v)o(ertex)f(C)h(\(resp.)19 b(D\),)234 813 y(and)f(the)g(state)g(of)f(the)h(the)g(co)q(ordinate)h (transfomations)e(is)h(iden)o(tical)i(when)234 869 y(A,)e(B,)h(C,)e (and)i(D)f(are)h(sp)q(eci\014ed\).)31 b(Then,)20 b(when)f(the)f (fragmen)o(ts)g(pro)q(duced)234 926 y(b)o(y)h(rasterization)g(of)f(b)q (oth)h(p)q(olygons)h(are)f(tak)o(en)f(together,)h(eac)o(h)g(fragmen)o (t)234 982 y(in)o(tersecting)d(the)f(in)o(terior)h(of)f(the)g(shared)g (edge)h(is)g(pro)q(duced)g(exactly)g(once.)153 1076 y(18.)22 b(Op)q(enGL)j(state)f(con)o(tin)o(ues)g(to)g(b)q(e)h(mo)q(di\014ed)g (in)g Fr(FEEDBACK)d FC(mo)q(de)j(and)f(in)234 1132 y Fr(SELECT)14 b FC(mo)q(de.)20 b(The)c(con)o(ten)o(ts)e(of)h(the)g (framebu\013er)g(are)g(not)f(mo)q(di\014ed.)153 1226 y(19.)22 b(The)11 b(curren)o(t)g(raster)f(p)q(osition,)j(the)e(user)g (de\014ned)h(clip)h(planes,)g(the)e(sp)q(ot)g(direc-)234 1283 y(tions)16 b(and)f(the)h(ligh)o(t)g(p)q(ositions)g(for)f Fr(LIGHT)p Fh(i)p FC(,)f(and)i(the)f(ey)o(e)h(planes)g(for)f(texgen)234 1339 y(are)j(transformed)g(when)i(they)f(are)f(sp)q(eci\014ed.)33 b(They)19 b(are)f(not)h(transformed)234 1396 y(during)d(a)f Fz(P)o(opA)o(ttrib)p FC(,)f(or)h(when)g(cop)o(ying)h(a)f(con)o(text.) 153 1489 y(20.)22 b(Dithering)f(algorithms)g(ma)o(y)f(b)q(e)h (di\013eren)o(t)g(for)e(di\013eren)o(t)i(comp)q(onen)o(ts.)36 b(In)234 1546 y(particular,)15 b(alpha)g(ma)o(y)f(b)q(e)h(dithered)h (di\013eren)o(tly)g(from)e(red,)g(green,)h(or)f(blue,)234 1602 y(and)h(an)h(implemen)o(tation)g(ma)o(y)f(c)o(ho)q(ose)g(to)f(not) h(dither)h(alpha)g(at)e(all.)p eop %%Page: 178 187 178 186 bop 332 605 a Ft(App)s(endix)33 b(C)332 820 y FA(V)-10 b(ersion)39 b(1.1)332 1050 y FC(Op)q(enGL)20 b(v)o(ersion)f(1.1)e(is)i(the)g(\014rst)f(revision)i(since)g(the)e (original)i(v)o(ersion)f(1.0)e(w)o(as)332 1107 y(released)f(on)e(1)g (July)i(1992.)j(V)l(ersion)c(1.1)f(is)h(up)o(w)o(ard)f(compatible)i (with)f(v)o(ersion)g(1.0,)332 1163 y(meaning)e(that)f(an)o(y)g(program) f(that)h(runs)g(with)h(a)f(1.0)f(GL)i(implemen)o(tation)g(will)h(also) 332 1219 y(run)g(unc)o(hanged)g(with)g(a)f(1.1)g(GL)g(implemen)o (tation.)21 b(Sev)o(eral)14 b(additions)g(w)o(ere)f(made)332 1276 y(to)18 b(the)h(GL,)f(esp)q(ecially)j(to)d(the)h(texture)f (mapping)i(capabilities,)h(but)e(also)f(to)g(the)332 1332 y(geometry)d(and)g(fragmen)o(t)g(op)q(erations.)20 b(F)l(ollo)o(wing)c(are)f(brief)i(descriptions)f(of)f(eac)o(h)332 1389 y(addition.)332 1574 y Fs(C.1)66 b(V)-6 b(ertex)23 b(Arra)n(y)332 1690 y FC(Arra)o(ys)15 b(of)g(v)o(ertex)g(data)g(ma)o(y) g(b)q(e)h(transferred)g(to)f(the)g(GL)h(with)g(man)o(y)f(few)o(er)h (com-)332 1747 y(mands)22 b(than)f(w)o(ere)g(previously)i(necessary)l (.)39 b(Six)22 b(arra)o(ys)f(are)g(de\014ned,)j(one)d(eac)o(h)332 1803 y(storing)e(v)o(ertex)f(p)q(ositions,)j(normal)e(co)q(ordinates,)h (colors,)g(color)f(indices,)j(texture)332 1860 y(co)q(ordinates,)15 b(and)h(edge)f(\015ags.)k(The)d(arra)o(ys)e(ma)o(y)g(b)q(e)i(sp)q (eci\014ed)h(and)e(enabled)i(inde-)332 1916 y(p)q(enden)o(tly)l(,)i(or) e(one)g(of)g(the)g(pre-de\014ned)i(con\014gurations)e(ma)o(y)f(b)q(e)i (selected)g(with)g(a)332 1973 y(single)f(command.)403 2037 y(The)11 b(primary)g(goal)g(w)o(as)f(to)g(decrease)i(the)f(n)o(um) o(b)q(er)g(of)f(subroutine)i(calls)g(required)332 2093 y(to)e(transfer)h(non-displa)o(y)h(listed)h(geometry)d(data)g(to)h(the) g(GL.)f(A)h(secondary)g(goal)g(w)o(as)332 2149 y(to)16 b(impro)o(v)o(e)g(the)h(e\016ciency)g(of)f(the)h(transfer;)f(esp)q (ecially)j(to)c(allo)o(w)i(direct)g(memory)332 2206 y(access)j(\(DMA\)) f(hardw)o(are)h(to)f(b)q(e)i(used)g(to)e(e\013ect)h(the)g(transfer.)34 b(The)20 b(additions)332 2262 y(matc)o(h)12 b(those)g(of)f(the)h Fr(EXT)p 775 2262 14 2 v 16 w(vertex)p 923 2262 V 14 w(array)f FC(extension,)i(except)g(that)e(static)h(arra)o(y)f(data)332 2319 y(are)20 b(not)f(supp)q(orted)i(\(b)q(ecause)g(they)f(complicated) h(the)f(in)o(terface,)h(and)f(w)o(ere)g(not)332 2375 y(b)q(eing)f(used\),)f(and)g(the)f(pre-de\014ned)i(con\014gurations)f (are)f(added)h(\(b)q(oth)g(to)f(reduce)332 2432 y(subroutine)k(coun)o (t)e(ev)o(en)i(further,)f(and)g(to)f(allo)o(w)h(for)g(e\016cien)o(t)g (transfer)f(of)h(arra)o(y)332 2488 y(data\).)1045 2613 y(178)p eop %%Page: 179 188 179 187 bop 120 137 a Fx(C.2.)35 b(POL)l(YGON)16 b(OFFSET)881 b FC(179)120 286 y Fs(C.2)67 b(P)n(olygon)22 b(O\013set)120 389 y FC(Depth)11 b(v)m(alues)g(of)f(fragmen)o(ts)f(generated)h(b)o(y)g (the)h(rasterization)f(of)g(a)g(p)q(olygon)h(ma)o(y)e(b)q(e)120 445 y(shifted)16 b(to)o(w)o(ard)e(or)h(a)o(w)o(a)o(y)e(from)i(the)g (origin,)g(as)g(an)g(a\016ne)h(function)g(of)e(the)i(windo)o(w)120 502 y(co)q(ordinate)k(depth)g(slop)q(e)h(of)e(the)h(p)q(olygon.)33 b(Shifted)21 b(depth)f(v)m(alues)g(allo)o(w)g(copla-)120 558 y(nar)14 b(geometry)l(,)g(esp)q(ecially)j(facet)d(outlines,)h(to)f (b)q(e)h(rendered)g(without)g(depth)g(bu\013er)120 615 y(artifacts.)k(They)d(ma)o(y)e(also)i(b)q(e)f(used)h(b)o(y)f(future)h (shado)o(w)e(generation)i(algorithms.)191 671 y(The)11 b(additions)h(matc)o(h)f(those)g(of)f(the)h Fr(EXT)p 912 671 14 2 v 15 w(polygon)p 1081 671 V 15 w(offset)e FC(extension,)k(with)e(t)o(w)o(o)120 728 y(exceptions.)23 b(First,)15 b(the)h(o\013set)f(is)h(enabled)i(separately)e(for)f Fr(POINT)p FC(,)f Fr(LINE)p FC(,)h(and)h Fr(FILL)120 784 y FC(rasterization)f(mo)q(des,)g(all)h(sharing)g(a)f(single)h (a\016ne)f(function)h(de\014nition.)22 b(\(Shifting)120 841 y(the)12 b(depth)f(v)m(alues)i(of)d(the)h(outline)i(fragmen)o(ts,)d (instead)i(of)f(the)g(\014ll)h(fragmen)o(ts,)f(allo)o(ws)120 897 y(the)19 b(con)o(ten)o(ts)f(of)g(the)h(depth)g(bu\013er)f(to)g(b)q (e)h(main)o(tained)h(correctly)l(.\))30 b(Second,)20 b(the)120 954 y(o\013set)14 b(bias)h(is)g(sp)q(eci\014ed)i(in)e(units)h (of)e(depth)h(bu\013er)g(resolution,)g(rather)f(than)g(in)i(the)120 1010 y([0,1])e(depth)i(range.)120 1156 y Fs(C.3)67 b(Logical)23 b(Op)r(eration)120 1258 y FC(F)l(ragmen)o(ts)18 b(generated)g(b)o(y)h (R)o(GBA)f(rendering)i(ma)o(y)d(b)q(e)j(merged)e(in)o(to)h(the)f (frame-)120 1315 y(bu\013er)j(using)h(a)e(logical)i(op)q(eration,)g (just)e(as)h(color)f(index)i(fragmen)o(ts)e(are)g(in)i(GL)120 1371 y(v)o(ersion)17 b(1.0.)k(Blending)d(is)f(disabled)g(during)g(suc)o (h)g(op)q(eration)f(b)q(ecause)h(it)f(is)h(rarely)120 1428 y(desired,)i(b)q(ecause)f(man)o(y)f(systems)g(could)h(not)f(supp)q (ort)g(it,)h(and)f(to)g(matc)o(h)f(the)h(se-)120 1484 y(man)o(tics)11 b(of)f(the)g Fr(EXT)p 473 1484 V 15 w(blend)p 598 1484 V 15 w(logic)p 723 1484 V 14 w(op)g FC(extension,)i(on)e(whic) o(h)i(this)e(addition)i(is)f(lo)q(osely)120 1540 y(based.)120 1686 y Fs(C.4)67 b(T)-6 b(exture)23 b(Image)e(F)-6 b(ormats)120 1789 y FC(Stored)17 b(texture)g(arra)o(ys)f(ha)o(v)o(e)h(a)g(format,)e (kno)o(wn)i(as)g(the)g Fv(internal)g(format)p FC(,)h(rather)120 1845 y(than)f(a)g(simple)i(coun)o(t)e(of)g(comp)q(onen)o(ts.)26 b(The)18 b(in)o(ternal)g(format)e(is)h(represen)o(ted)h(as)120 1901 y(a)i(single)h(en)o(umerated)g(v)m(alue,)h(indicating)g(b)q(oth)e (the)g(organization)g(of)g(the)g(image)120 1958 y(data)13 b(\()p Fr(LUMINANCE)p FC(,)e Fr(RGB)p FC(,)h(etc.\))19 b(and)14 b(the)f(n)o(um)o(b)q(er)h(of)f(bits)h(of)f(storage)f(for)h (eac)o(h)h(image)120 2014 y(comp)q(onen)o(t.)20 b(Clien)o(ts)c(can)f (use)h(the)f(in)o(ternal)g(format)f(sp)q(eci\014cation)j(to)d(suggest)h (the)120 2071 y(desired)20 b(storage)e(precision)i(of)e(texture)g (images.)30 b(New)19 b Fv(b)n(ase)g(formats)p FC(,)g Fr(ALPHA)f FC(and)120 2127 y Fr(INTENSITY)p FC(,)g(pro)o(vide)j(new)f (texture)g(en)o(vironmen)o(t)g(op)q(erations.)34 b(These)21 b(additions)120 2184 y(matc)o(h)15 b(those)g(of)g(a)g(subset)g(of)g (the)g Fr(EXT)p 805 2184 V 15 w(texture)f FC(extension.)120 2329 y Fs(C.5)67 b(T)-6 b(exture)23 b(Replace)f(En)n(vironmen)n(t)120 2432 y FC(A)13 b(common)f(use)h(of)f(texture)g(mapping)h(is)g(to)f (replace)h(the)g(color)f(v)m(alues)i(of)e(generated)120 2488 y(fragmen)o(ts)17 b(with)h(texture)g(color)g(data.)27 b(This)19 b(could)g(b)q(e)f(sp)q(eci\014ed)i(only)f(indirectly)p eop %%Page: 180 189 180 188 bop 332 137 a FC(180)806 b Fx(APPENDIX)15 b(C.)30 b(VERSION)16 b(1.1)332 286 y FC(in)22 b(GL)e(v)o(ersion)h(1.0,)g(whic)o (h)h(required)g(that)e(clien)o(t)i(sp)q(eci\014ed)h(\\white")d (geometry)332 343 y(b)q(e)e(mo)q(dulated)g(b)o(y)f(a)g(texture.)26 b(GL)17 b(v)o(ersion)h(1.1)e(allo)o(ws)i(suc)o(h)f(replacemen)o(t)h(to) f(b)q(e)332 399 y(sp)q(eci\014ed)e(explicitly)l(,)h(p)q(ossibly)f (impro)o(ving)e(p)q(erformance.)20 b(These)13 b(additions)h(matc)o(h) 332 456 y(those)h(of)g(a)g(subset)g(of)g(the)g Fr(EXT)p 879 456 14 2 v 15 w(texture)f FC(extension.)332 627 y Fs(C.6)66 b(T)-6 b(exture)24 b(Pro)n(xies)332 738 y FC(T)l(exture)14 b(pro)o(xies)g(allo)o(w)g(a)g(GL)f(implemen)o(tation)i(to)f(adv)o (ertise)f(di\013eren)o(t)i(maxim)o(um)332 795 y(texture)10 b(image)h(sizes)g(as)f(a)h(function)g(of)f(some)g(other)g(texture)h (parameters,)f(esp)q(ecially)332 851 y(of)16 b(the)h(in)o(ternal)g (image)g(format.)23 b(Clien)o(ts)17 b(ma)o(y)f(use)h(the)g(pro)o(xy)f (query)h(mec)o(hanism)332 907 y(to)g(tailor)g(their)g(use)h(of)f (texture)g(resources)g(at)f(run)i(time.)26 b(The)17 b(pro)o(xy)g(in)o (terface)g(is)332 964 y(designed)e(to)d(allo)o(w)h(suc)o(h)h(queries)g (without)f(adding)h(new)f(routines)g(to)g(the)g(GL)g(in)o(ter-)332 1020 y(face.)20 b(These)15 b(additions)g(matc)o(h)f(those)g(of)g(a)h (subset)f(of)g(the)h Fr(EXT)p 1449 1020 V 15 w(texture)e FC(extension,)332 1077 y(except)18 b(that)f(implemen)o(tations)i (return)f(allo)q(cation)g(information)g(consisten)o(t)g(with)332 1133 y(supp)q(ort)d(for)g(complete)h(mipmap)g(arra)o(ys.)332 1305 y Fs(C.7)66 b(Cop)n(y)23 b(T)-6 b(exture)23 b(and)g(Subtexture)332 1416 y FC(T)l(exture)d(arra)o(y)e(data)h(can)h(b)q(e)h(sp)q(eci\014ed)h (from)c(framebu\013er)i(memory)l(,)g(as)f(w)o(ell)i(as)332 1472 y(from)f(clien)o(t)h(memory)l(,)g(and)f(rectangular)h(subregions)g (of)e(texture)h(arra)o(ys)f(can)i(b)q(e)332 1528 y(rede\014ned)c (either)f(from)f(clien)o(t)h(or)f(framebu\013er)g(memory)l(.)20 b(These)c(additions)g(matc)o(h)332 1585 y(those)f(de\014ned)i(b)o(y)e (the)g Fr(EXT)p 818 1585 V 15 w(copy)p 921 1585 V 15 w(texture)f FC(and)h Fr(EXT)p 1258 1585 V 15 w(subtexture)e FC(extensions.)332 1756 y Fs(C.8)66 b(T)-6 b(exture)24 b(Ob)t(jects)332 1867 y FC(A)17 b(set)g(of)g(texture)g(arra)o(ys)f(and) i(their)g(related)f(texture)g(state)g(can)g(b)q(e)h(treated)f(as)g(a) 332 1924 y(single)i(ob)s(ject.)28 b(Suc)o(h)18 b(treatmen)o(t)f(allo)o (ws)h(for)g(greater)f(implemen)o(tation)i(e\016ciency)332 1980 y(when)c(m)o(ultiple)i(arra)o(ys)c(are)i(used.)20 b(In)15 b(conjunction)h(with)f(the)g(subtexture)g(capabil-)332 2037 y(it)o(y)l(,)f(it)g(also)g(allo)o(ws)f(clien)o(ts)i(to)e(mak)o(e)h (gradual)f(c)o(hanges)h(to)f(existing)i(texture)e(arra)o(ys,)332 2093 y(rather)f(than)h(completely)i(rede\014ning)f(them.)19 b(These)14 b(additions)g(matc)o(h)e(those)h(of)f(the)332 2149 y Fr(EXT)p 401 2149 V 15 w(texture)p 570 2149 V 14 w(object)h FC(extension,)h(with)g(sligh)o(t)g(additions)g(to)f(the)h (texture)f(residency)332 2206 y(seman)o(tics.)332 2377 y Fs(C.9)66 b(Other)23 b(Changes)388 2488 y FC(1.)f(Color)15 b(indices)i(ma)o(y)d(no)o(w)h(b)q(e)h(sp)q(eci\014ed)h(as)e(unsigned)i (b)o(ytes.)p eop %%Page: 181 190 181 189 bop 120 137 a Fx(C.10.)34 b(A)o(CKNO)o(WLEDGEMENTS)746 b FC(181)176 286 y(2.)22 b(T)l(exture)11 b(co)q(ordinates)f Fy(s)p FC(,)i Fy(t)p FC(,)f(and)g Fy(r)g FC(are)f(divided)i(b)o(y)f Fy(q)h FC(during)f(the)g(rasterization)234 343 y(of)f(p)q(oin)o(ts,)i (pixel)h(rectangles,)e(and)g(bitmaps.)19 b(This)11 b(division)i(w)o(as) d(do)q(cumen)o(ted)234 399 y(only)16 b(for)e(lines)j(and)f(p)q(olygons) f(in)h(the)f(1.0)g(v)o(ersion.)176 495 y(3.)22 b(The)15 b(line)i(rasterization)f(algorithm)f(w)o(as)f(c)o(hanged)i(so)f(that)f (v)o(ertical)i(lines)h(on)234 551 y(pixel)g(b)q(orders)e(rasterize)h (correctly)l(.)176 647 y(4.)22 b(Separate)e(pixel)i(transfer)e (discussions)i(in)f(c)o(hapter)f(3)g(and)h(c)o(hapter)f(4)g(w)o(ere)234 704 y(com)o(bined)c(in)o(to)f(a)g(single)i(discussion)g(in)f(c)o (hapter)f(3.)176 799 y(5.)22 b(T)l(exture)17 b(alpha)h(v)m(alues)g(are) f(returned)g(as)g(1.0)f(if)h(there)g(is)h(no)f(alpha)h(c)o(hannel)234 856 y(in)d(the)g(texture)f(arra)o(y)l(.)k(This)d(b)q(eha)o(vior)g(w)o (as)f(unsp)q(eci\014ed)j(in)e(the)f(1.0)g(v)o(ersion,)234 912 y(and)h(w)o(as)g(incorrectly)h(do)q(cumen)o(ted)g(in)g(the)f (reference)h(man)o(ual.)176 1008 y(6.)22 b(F)l(og)15 b(start)e(and)j(end)g(v)m(alues)g(ma)o(y)f(no)o(w)f(b)q(e)i(negativ)o (e.)176 1103 y(7.)22 b(Ev)m(aluated)15 b(color)f(v)m(alues)h(direct)f (the)g(ev)m(aluation)h(of)f(the)g(ligh)o(ting)h(equation)f(if)234 1160 y Fz(ColorMaterial)j FC(is)e(enabled.)120 1306 y Fs(C.10)66 b(Ac)n(kno)n(wledgemen)n(ts)120 1408 y FC(Op)q(enGL)17 b(1.1)e(is)h(the)g(result)g(of)f(the)h(con)o(tributions)g(of)f(man)o(y) g(p)q(eople,)i(represen)o(ting)120 1465 y(a)h(cross)f(section)i(of)e (the)h(computer)g(industry)l(.)29 b(F)l(ollo)o(wing)19 b(is)f(a)g(partial)g(list)h(of)f(the)120 1521 y(con)o(tributors,)i (including)i(the)d(compan)o(y)g(that)g(they)g(represen)o(ted)h(at)e (the)i(time)f(of)120 1578 y(their)d(con)o(tribution:)191 1634 y(Kurt)f(Ak)o(eley)l(,)h(Silicon)h(Graphics)191 1691 y(Bill)g(Armstrong,)d(Ev)m(ans)h(&)h(Sutherland)191 1748 y(Andy)g(Bigos,)f(3Dlabs)191 1805 y(P)o(at)f(Bro)o(wn,)h(IBM)191 1862 y(Jim)h(Cobb,)f(Ev)m(ans)g(&)h(Sutherland)191 1919 y(Dic)o(k)f(Coulter,)g(Digital)h(Equipmen)o(t)191 1976 y(Bruce)g(D'Amora,)d(GE)i(Medical)h(Systems)191 2033 y(John)g(Dennis,)f(Digital)h(Equipmen)o(t)191 2090 y(F)l(red)f(Fisher,) h(Accel)g(Graphics)191 2147 y(Chris)g(F)l(razier,)f(Silicon)i(Graphics) 191 2204 y(T)l(o)q(dd)f(F)l(razier,)f(Ev)m(ans)g(&)h(Sutherland)191 2261 y(Tim)f(F)l(reese,)g(NCD)191 2317 y(Ken)h(Garnett,)e(NCD)191 2374 y(Mik)o(e)h(Hec)o(k,)g(T)l(emplate)h(Graphics)g(Soft)o(w)o(are)191 2431 y(Da)o(v)o(e)e(Higgins,)i(IBM)191 2488 y(Phil)h(Huxley)l(,)f (3Dlabs)p eop %%Page: 182 191 182 190 bop 332 137 a FC(182)806 b Fx(APPENDIX)15 b(C.)30 b(VERSION)16 b(1.1)403 286 y FC(Dale)f(Kirkland,)h(In)o(tergraph)403 343 y(Ho)q(c)o(k)f(San)g(Lee,)h(Microsoft)403 399 y(Kevin)g(LeF)l(eb)o (vre,)g(Hewlett)f(P)o(ac)o(k)m(ard)403 456 y(Jim)h(Miller,)g(IBM)403 512 y(Tim)f(Misner,)g(SunSoft)403 569 y(Jerem)o(y)g(Morris,)f(3Dlabs) 403 625 y(Israel)i(Pink)m(as,)f(In)o(tel)403 682 y(Bimal)h(P)o(o)q (ddar,)e(IBM)403 738 y(Lyle)i(Ramsha)o(w,)e(Digital)i(Equipmen)o(t)403 795 y(Randi)g(Rost,)f(Hewlett)g(P)o(ac)o(k)m(ard)403 851 y(John)g(Sc)o(himpf,)h(Silicon)i(Graphics)403 907 y(Mark)c(Segal,)h(Silicon)j(Graphics)403 964 y(Igor)c(Sin)o(y)o(ak,)i (In)o(tel)403 1020 y(Je\013)f(Stev)o(enson,)g(Hewlett)g(P)o(ac)o(k)m (ard)403 1077 y(Bill)i(Sw)o(eeney)l(,)f(SunSoft)403 1133 y(Kelvin)h(Thompson,)d(P)o(ortable)h(Graphics)403 1190 y(Neil)h(T)l(rev)o(ett,)e(3Dlabs)403 1246 y(Linas)i(V)l(epstas,)f(IBM) 403 1303 y(Andy)g(V)l(esp)q(er,)h(Digital)g(Equipmen)o(t)403 1359 y(Henri)g(W)l(arren,)e(Megatek)403 1416 y(P)o(aula)h(W)l(omac)o (k,)f(Silicon)j(Graphics)403 1472 y(Mason)d(W)l(o)q(o,)h(Silicon)i (Graphics)403 1528 y(Stev)o(e)e(W)l(righ)o(t,)f(Microsoft)p eop %%Page: 183 192 183 191 bop 120 520 a FA(Index)39 b(of)f(GL)h(calls)120 732 y FC(Accum,)16 b(120,)e(121)120 788 y(AlphaF)l(unc,)j(110)120 845 y(AreT)l(exturesResiden)o(t,)g(101,)d(142)120 901 y(Arra)o(yElemen)o(t,)h(19,)f(23,)g(24,)h(140)120 989 y(Begin,)23 b(13,)e(15{20,)f(23,)i(24,)f(27,)g(52,)286 1045 y(60,)h(63,)g(66,)g(69,)g(132,)g(133,)286 1102 y(138)120 1158 y(BindT)l(exture,)17 b(99,)d(100)120 1215 y(Bitmap,)i(83,)e(84)120 1271 y(BlendF)l(unc,)j(113)120 1359 y(CallList,)g(19,)d(141)120 1416 y(CallLists,)j(19,)d(141)120 1472 y(Clear,)h(119,)f(120)120 1528 y(ClearAccum,)i(119)120 1585 y(ClearColor,)f(119)120 1641 y(ClearDepth,)g(119)120 1698 y(ClearIndex,)h(119)120 1754 y(ClearStencil,)h(119)120 1811 y(ClipPlane,)g(37)120 1867 y(Color,)e(19,)f(20,)g(40,)h(53)120 1924 y(Color3,)g(20)120 1980 y(Color4,)g(20)120 2037 y(ColorMask,)f(118)120 2093 y(ColorMaterial,)32 b(47,)g(49,)g(50,)f(131,)286 2149 y(176,)14 b(181)120 2206 y(ColorP)o(oin)o(ter,)h(19,)f(21,)g(22,)g(26,) g(142)120 2262 y(Colorub,)h(53)120 2319 y(Colorui,)h(53)120 2375 y(Colorus,)f(53)120 2432 y(Cop)o(yPixels,)24 b(71{74,)e(91,)h (121,)f(126,)286 2488 y(127,)14 b(137)940 732 y(Cop)o(yT)l(exImage1D,)g (91,)g(92)940 789 y(Cop)o(yT)l(exImage2D,)g(91,)g(92)940 846 y(Cop)o(yT)l(exSubImage1D,)h(92,)f(93)940 903 y(Cop)o(yT)l (exSubImage2D,)h(92)940 960 y(CullF)l(ace,)h(66,)f(67)940 1070 y(DeleteLists,)h(142)940 1127 y(DeleteT)l(extures,)g(100,)e(142) 940 1184 y(DepthF)l(unc,)i(112)940 1241 y(DepthMask,)e(118)940 1298 y(DepthRange,)h(29,)g(144,)f(148,)g(177)940 1356 y(Disable,)j(33,)d(36,)h(37,)g(42,)f(47,)h(57,)g(60,)1106 1412 y(63,)27 b(66,)f(67,)h(69,)f(71,)h(102,)1106 1468 y(105,)k(110{113,)e(115,)h(130,)1106 1525 y(131)940 1582 y(DisableClien)o(tState,)14 b(19,)d(23,)h(26,)g(142)940 1639 y(Dra)o(wArra)o(ys,)h(23,)h(24,)g(140)940 1696 y(Dra)o(wBu\013er,) g(116,)g(117)940 1753 y(Dra)o(wElemen)o(ts,)g(24,)g(25,)h(140)940 1811 y(Dra)o(wPixels,)h(68,)e(71{79,)g(81,)h(84,)g(85,)1106 1867 y(121,)f(123,)g(125,)g(126,)g(137)940 1977 y(EdgeFlag,)h(18,)f(19) 940 2034 y(EdgeFlagP)o(oin)o(ter,)h(19,)f(21,)g(22,)g(142)940 2091 y(EdgeFlagv,)h(18)940 2148 y(Enable,)j(33,)e(36,)g(37,)g(42,)g (47,)g(57,)g(60,)1106 2205 y(63,)27 b(66,)f(67,)h(69,)f(71,)h(102,)1106 2261 y(105,)k(110{113,)e(115,)h(130,)1106 2317 y(131,)14 b(144)940 2375 y(EnableClien)o(tState,)i(19,)e(23,)g(26,)g(142)940 2432 y(End,)h(13,)g(15{20,)e(23,)h(24,)g(27,)h(52,)f(60,)1106 2488 y(66,)h(69,)f(132,)g(133,)g(138)833 2613 y(183)p eop %%Page: 184 193 184 192 bop 332 137 a FC(184)1275 b Fx(INDEX)332 286 y FC(EndList,)16 b(140)332 343 y(Ev)m(alCo)q(ord,)f(19,)f(130,)g(131) 332 400 y(Ev)m(alCo)q(ord1,)h(131{133)332 457 y(Ev)m(alCo)q(ord1d,)g (132)332 514 y(Ev)m(alCo)q(ord1f,)g(132)332 571 y(Ev)m(alCo)q(ord2,)g (131,)f(133,)g(134)332 628 y(Ev)m(alMesh1,)h(132)332 685 y(Ev)m(alMesh2,)g(132,)f(133)332 741 y(Ev)m(alP)o(oin)o(t,)h(19)332 798 y(Ev)m(alP)o(oin)o(t1,)g(133)332 855 y(Ev)m(alP)o(oin)o(t2,)g(133) 332 961 y(F)l(eedbac)o(kBu\013er,)g(137,)f(142)332 1018 y(Finish,)i(142,)e(143,)g(175)332 1074 y(Flush,)i(142,)e(143,)g(175)332 1131 y(F)l(og,)g(105,)g(106)332 1188 y(F)l(ron)o(tF)l(ace,)g(46,)g(66) 332 1245 y(F)l(rustum,)h(30,)f(31,)g(176)332 1351 y(GenLists,)i(142)332 1407 y(GenT)l(extures,)f(100,)f(142,)g(147)332 1464 y(Get,)g(29,)h (142,)f(144)332 1521 y(GetBo)q(olean)o(v,)h(144,)f(148)332 1578 y(GetClipPlane,)i(145)332 1635 y(GetDoublev,)f(144,)f(145,)g(148) 332 1692 y(GetError,)f(11)332 1749 y(GetFloatv,)h(144,)g(148)332 1806 y(GetIn)o(tegerv,)g(144,)g(148)332 1862 y(GetLigh)o(t,)h(145)332 1919 y(GetMap,)f(145,)g(146)332 1976 y(GetMaterial,)g(145)332 2033 y(GetPixelMap,)h(145,)f(146)332 2090 y(GetP)o(oin)o(terv,)g(147) 332 2147 y(GetP)o(olygonStipple,)i(147)332 2204 y(GetString,)f(147,)f (148)332 2261 y(GetT)l(exEn)o(v,)h(145)332 2318 y(GetT)l(exGen,)g(145) 332 2374 y(GetT)l(exImage,)g(146)332 2431 y(GetT)l(exLev)o(elP)o (arameter,)g(145,)e(146)332 2488 y(GetT)l(exP)o(arameter,)g(145)1152 286 y(GetT)l(exP)o(arameterfv,)g(101)1152 343 y(GetT)l(exP)o (arameteriv,)h(101)1152 437 y(Hin)o(t,)h(143)1152 531 y(Index,)h(19,)e(21)1152 588 y(IndexMask,)h(118)1152 644 y(IndexP)o(oin)o(ter,)h(19,)e(22,)g(142)1152 700 y(InitNames,)i(134,)d(135)1152 757 y(In)o(terlea)o(v)o(edArra)o(ys,)h (19,)h(25,)f(142)1152 813 y(IsEnabled,)i(142,)e(144,)g(148)1152 870 y(IsList,)i(142)1152 926 y(IsT)l(exture,)f(142,)f(146,)g(147)1152 1020 y(Ligh)o(t,)h(46{48)1152 1077 y(Ligh)o(tMo)q(del,)h(46,)e(48)1152 1133 y(LineStipple,)k(63)1152 1190 y(LineWidth,)f(60)1152 1246 y(ListBase,)e(141,)f(143)1152 1303 y(LoadIden)o(tit)o(y)l(,)i(30) 1152 1359 y(LoadMatrix,)e(30)1152 1416 y(LoadName,)h(134,)f(135)1152 1472 y(LogicOp,)i(115,)e(116)1152 1566 y(Map1,)g(129,)g(130,)g(148)1152 1623 y(Map2,)g(129,)g(130,)g(148)1152 1679 y(MapGrid1,)g(132)1152 1735 y(MapGrid2,)g(132)1152 1792 y(Material,)h(19,)f(46,)g(48,)g(51,)h (176)1152 1848 y(MatrixMo)q(de,)f(30)1152 1905 y(MultMatrix,)g(30)1152 1999 y(NewList,)h(140,)f(141)1152 2055 y(Normal,)h(19,)f(20)1152 2112 y(Normal3,)g(8,)h(20,)f(33)1152 2168 y(Normal3d,)h(8)1152 2225 y(Normal3dv,)g(9)1152 2281 y(Normal3f,)f(8)1152 2338 y(Normal3fv,)g(9)1152 2394 y(NormalP)o(oin)o(ter,)g(19,)g(22,)h (26,)f(142)1152 2488 y(Ortho,)h(30,)f(32,)g(176)p eop %%Page: 185 194 185 193 bop 120 137 a Fx(INDEX)1277 b FC(185)120 286 y(P)o(assThrough,)14 b(138)120 343 y(PixelMap,)i(72,)e(74,)h(127)120 399 y(PixelStore,)25 b(19,)f(72,)f(73,)h(123,)f(127,)286 456 y(142)120 512 y(PixelT)l(ransfer,)16 b(72,)e(73,)h(127)120 569 y(PixelZo)q(om,)h(81)120 625 y(P)o(oin)o(tSize,)g(57)120 682 y(P)o(olygonMo)q(de,)e(66,)g(69{71,)f(135,)g(137)120 738 y(P)o(olygonO\013set,)i(70)120 795 y(P)o(olygonStipple,)i(68)120 851 y(P)o(opA)o(ttrib,)e(148,)f(149,)g(177)120 907 y(P)o(opClien)o(tA)o (ttrib,)g(19,)e(142,)g(148,)g(149)120 964 y(P)o(opMatrix,)i(33)120 1020 y(P)o(opName,)h(134,)f(135)120 1077 y(PrioritizeT)l(extures,)i (101)120 1133 y(PushA)o(ttrib,)f(148,)f(149)120 1190 y(PushClien)o(tA)o(ttrib,)34 b(19,)e(142,)g(148,)286 1246 y(149)120 1303 y(PushMatrix,)15 b(33)120 1359 y(PushName,)g(134,)f (135)120 1453 y(RasterP)o(os,)g(39,)h(135,)e(176)120 1510 y(RasterP)o(os2,)h(39)120 1566 y(RasterP)o(os3,)g(39)120 1623 y(RasterP)o(os4,)g(39)120 1679 y(ReadBu\013er,)i(123,)e(127)120 1735 y(ReadPixels,)29 b(71{74,)d(77,)g(79,)g(121{)286 1792 y(126,)14 b(142,)g(146,)g(147)120 1848 y(Rect,)i(27,)e(66)120 1905 y(RenderMo)q(de,)i(135{138,)d(142)120 1961 y(Rotate,)i(30,)f(31,)g (176)120 2055 y(Scale,)i(30,)e(31,)h(176)120 2112 y(Scissor,)h(110)120 2168 y(SelectBu\013er,)g(135,)e(136,)g(142)120 2225 y(ShadeMo)q(del,)j (52)120 2281 y(StencilF)l(unc,)h(111,)c(175)120 2338 y(StencilMask,)i(118,)e(121,)g(176)120 2394 y(StencilOp,)k(111,)c(112) 120 2488 y(T)l(exCo)q(ord,)h(19,)f(20)940 286 y(T)l(exCo)q(ord1,)h(20) 940 343 y(T)l(exCo)q(ord2,)g(20)940 399 y(T)l(exCo)q(ord3,)g(20)940 456 y(T)l(exCo)q(ord4,)g(20)940 512 y(T)l(exCo)q(ordP)o(oin)o(ter,)22 b(19,)f(21,)g(22,)h(26,)1106 569 y(142)940 625 y(T)l(exEn)o(v,)15 b(102)940 682 y(T)l(exGen,)g(35,)g(36)940 738 y(T)l(exImage,)g(92)940 795 y(T)l(exImage1D,)22 b(86,)i(89,)f(91,)h(92,)g(97,)1106 851 y(99,)15 b(142)940 907 y(T)l(exImage2D,)25 b(85{87,)i(89,)g(91,)h (92,)1106 964 y(97,)15 b(99,)f(142)940 1020 y(T)l(exP)o(arameter,)g (93,)g(94)940 1077 y(T)l(exP)o(arameterf,)g(101)940 1133 y(T)l(exP)o(arameterfv,)g(101)940 1190 y(T)l(exP)o(arameteri,)h(101)940 1246 y(T)l(exP)o(arameteriv,)g(101)940 1303 y(T)l(exSubImage,)h(92)940 1359 y(T)l(exSubImage1D,)f(92,)g(93)940 1416 y(T)l(exSubImage2D,)g(92) 940 1472 y(T)l(ranslate,)g(30,)f(31,)g(176)940 1570 y(V)l(ertex,)h(7,)g (19,)f(20,)g(39,)g(131)940 1626 y(V)l(ertex2,)h(19,)f(27)940 1683 y(V)l(ertex2sv,)h(7)940 1739 y(V)l(ertex3,)g(19)940 1796 y(V)l(ertex3f,)g(7)940 1852 y(V)l(ertex4,)g(20)940 1909 y(V)l(ertexP)o(oin)o(ter,)g(19,)f(22,)g(26,)h(142)940 1965 y(Viewp)q(ort,)g(29)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF