Tao.OpenGl.xml 3.2 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842338433384433845338463384733848338493385033851338523385333854338553385633857338583385933860338613386233863338643386533866338673386833869338703387133872338733387433875338763387733878338793388033881338823388333884338853388633887338883388933890338913389233893338943389533896338973389833899339003390133902339033390433905339063390733908339093391033911339123391333914339153391633917339183391933920339213392233923339243392533926339273392833929339303393133932339333393433935339363393733938339393394033941339423394333944339453394633947339483394933950339513395233953339543395533956339573395833959339603396133962339633396433965339663396733968339693397033971339723397333974339753397633977339783397933980339813398233983339843398533986339873398833989339903399133992339933399433995339963399733998339993400034001340023400334004340053400634007340083400934010340113401234013340143401534016340173401834019340203402134022340233402434025340263402734028340293403034031340323403334034340353403634037340383403934040340413404234043340443404534046340473404834049340503405134052340533405434055340563405734058340593406034061340623406334064340653406634067340683406934070340713407234073340743407534076340773407834079340803408134082340833408434085340863408734088340893409034091340923409334094340953409634097340983409934100341013410234103341043410534106341073410834109341103411134112341133411434115341163411734118341193412034121341223412334124341253412634127341283412934130341313413234133341343413534136341373413834139341403414134142341433414434145341463414734148341493415034151341523415334154341553415634157341583415934160341613416234163341643416534166341673416834169341703417134172341733417434175341763417734178341793418034181341823418334184341853418634187341883418934190341913419234193341943419534196341973419834199342003420134202342033420434205342063420734208342093421034211342123421334214342153421634217342183421934220342213422234223342243422534226342273422834229342303423134232342333423434235342363423734238342393424034241342423424334244342453424634247342483424934250342513425234253342543425534256342573425834259342603426134262342633426434265342663426734268342693427034271342723427334274342753427634277342783427934280342813428234283342843428534286342873428834289342903429134292342933429434295342963429734298342993430034301343023430334304343053430634307343083430934310343113431234313343143431534316343173431834319343203432134322343233432434325343263432734328343293433034331343323433334334343353433634337343383433934340343413434234343343443434534346343473434834349343503435134352343533435434355343563435734358343593436034361343623436334364343653436634367343683436934370343713437234373343743437534376343773437834379343803438134382343833438434385343863438734388343893439034391343923439334394343953439634397343983439934400344013440234403344043440534406344073440834409344103441134412344133441434415344163441734418344193442034421344223442334424344253442634427344283442934430344313443234433344343443534436344373443834439344403444134442344433444434445344463444734448344493445034451344523445334454344553445634457344583445934460344613446234463344643446534466344673446834469344703447134472344733447434475344763447734478344793448034481344823448334484344853448634487344883448934490344913449234493344943449534496344973449834499345003450134502345033450434505345063450734508345093451034511345123451334514345153451634517345183451934520345213452234523345243452534526345273452834529345303453134532345333453434535345363453734538345393454034541345423454334544345453454634547345483454934550345513455234553345543455534556345573455834559345603456134562345633456434565345663456734568345693457034571345723457334574345753457634577345783457934580345813458234583345843458534586345873458834589345903459134592345933459434595345963459734598345993460034601346023460334604346053460634607346083460934610346113461234613346143461534616346173461834619346203462134622346233462434625346263462734628346293463034631346323463334634346353463634637346383463934640346413464234643346443464534646346473464834649346503465134652346533465434655346563465734658346593466034661346623466334664346653466634667346683466934670346713467234673346743467534676346773467834679346803468134682346833468434685346863468734688346893469034691346923469334694346953469634697346983469934700347013470234703347043470534706347073470834709347103471134712347133471434715347163471734718347193472034721347223472334724347253472634727347283472934730347313473234733347343473534736347373473834739347403474134742347433474434745347463474734748347493475034751347523475334754347553475634757347583475934760347613476234763347643476534766347673476834769347703477134772347733477434775347763477734778347793478034781347823478334784347853478634787347883478934790347913479234793347943479534796347973479834799348003480134802348033480434805348063480734808348093481034811348123481334814348153481634817348183481934820348213482234823348243482534826348273482834829348303483134832348333483434835348363483734838348393484034841348423484334844348453484634847348483484934850348513485234853348543485534856348573485834859348603486134862348633486434865348663486734868348693487034871348723487334874348753487634877348783487934880348813488234883348843488534886348873488834889348903489134892348933489434895348963489734898348993490034901349023490334904349053490634907349083490934910349113491234913349143491534916349173491834919349203492134922349233492434925349263492734928349293493034931349323493334934349353493634937349383493934940349413494234943349443494534946349473494834949349503495134952349533495434955349563495734958349593496034961349623496334964349653496634967349683496934970349713497234973349743497534976349773497834979349803498134982349833498434985349863498734988349893499034991349923499334994349953499634997349983499935000350013500235003350043500535006350073500835009350103501135012350133501435015350163501735018350193502035021350223502335024350253502635027350283502935030350313503235033350343503535036350373503835039350403504135042350433504435045350463504735048350493505035051350523505335054350553505635057350583505935060350613506235063350643506535066350673506835069350703507135072350733507435075350763507735078350793508035081350823508335084350853508635087350883508935090350913509235093350943509535096350973509835099351003510135102351033510435105351063510735108351093511035111351123511335114351153511635117351183511935120351213512235123351243512535126351273512835129351303513135132351333513435135351363513735138351393514035141351423514335144351453514635147351483514935150351513515235153351543515535156351573515835159351603516135162351633516435165351663516735168351693517035171351723517335174351753517635177351783517935180351813518235183351843518535186351873518835189351903519135192351933519435195351963519735198351993520035201352023520335204352053520635207352083520935210352113521235213352143521535216352173521835219352203522135222352233522435225352263522735228352293523035231352323523335234352353523635237352383523935240352413524235243352443524535246352473524835249352503525135252352533525435255352563525735258352593526035261352623526335264352653526635267352683526935270352713527235273352743527535276352773527835279352803528135282352833528435285352863528735288352893529035291352923529335294352953529635297352983529935300353013530235303353043530535306353073530835309353103531135312353133531435315353163531735318353193532035321353223532335324353253532635327353283532935330353313533235333353343533535336353373533835339353403534135342353433534435345353463534735348353493535035351353523535335354353553535635357353583535935360353613536235363353643536535366353673536835369353703537135372353733537435375353763537735378353793538035381353823538335384353853538635387353883538935390353913539235393353943539535396353973539835399354003540135402354033540435405354063540735408354093541035411354123541335414354153541635417354183541935420354213542235423354243542535426354273542835429354303543135432354333543435435354363543735438354393544035441354423544335444354453544635447354483544935450354513545235453354543545535456354573545835459354603546135462354633546435465354663546735468354693547035471354723547335474354753547635477354783547935480354813548235483354843548535486354873548835489354903549135492354933549435495354963549735498354993550035501355023550335504355053550635507355083550935510355113551235513355143551535516355173551835519355203552135522355233552435525355263552735528355293553035531355323553335534355353553635537355383553935540355413554235543355443554535546355473554835549355503555135552355533555435555355563555735558355593556035561355623556335564355653556635567355683556935570355713557235573355743557535576355773557835579355803558135582355833558435585355863558735588355893559035591355923559335594355953559635597355983559935600356013560235603356043560535606356073560835609356103561135612356133561435615356163561735618356193562035621356223562335624356253562635627356283562935630356313563235633356343563535636356373563835639356403564135642356433564435645356463564735648356493565035651356523565335654356553565635657356583565935660356613566235663356643566535666356673566835669356703567135672356733567435675356763567735678356793568035681356823568335684356853568635687356883568935690356913569235693356943569535696356973569835699357003570135702357033570435705357063570735708357093571035711357123571335714357153571635717357183571935720357213572235723357243572535726357273572835729357303573135732357333573435735357363573735738357393574035741357423574335744357453574635747357483574935750357513575235753357543575535756357573575835759357603576135762357633576435765357663576735768357693577035771357723577335774357753577635777357783577935780357813578235783357843578535786357873578835789357903579135792357933579435795357963579735798357993580035801358023580335804358053580635807358083580935810358113581235813358143581535816358173581835819358203582135822358233582435825358263582735828358293583035831358323583335834358353583635837358383583935840358413584235843358443584535846358473584835849358503585135852358533585435855358563585735858358593586035861358623586335864358653586635867358683586935870358713587235873358743587535876358773587835879358803588135882358833588435885358863588735888358893589035891358923589335894358953589635897358983589935900359013590235903359043590535906359073590835909359103591135912359133591435915359163591735918359193592035921359223592335924359253592635927359283592935930359313593235933359343593535936359373593835939359403594135942359433594435945359463594735948359493595035951359523595335954359553595635957359583595935960359613596235963359643596535966359673596835969359703597135972359733597435975359763597735978359793598035981359823598335984359853598635987359883598935990359913599235993359943599535996359973599835999360003600136002360033600436005360063600736008360093601036011360123601336014360153601636017360183601936020360213602236023360243602536026360273602836029360303603136032360333603436035360363603736038360393604036041360423604336044360453604636047360483604936050360513605236053360543605536056360573605836059360603606136062360633606436065360663606736068360693607036071360723607336074360753607636077360783607936080360813608236083360843608536086360873608836089360903609136092360933609436095360963609736098360993610036101361023610336104361053610636107361083610936110361113611236113361143611536116361173611836119361203612136122361233612436125361263612736128361293613036131361323613336134361353613636137361383613936140361413614236143361443614536146361473614836149361503615136152361533615436155361563615736158361593616036161361623616336164361653616636167361683616936170361713617236173361743617536176361773617836179361803618136182361833618436185361863618736188361893619036191361923619336194361953619636197361983619936200362013620236203362043620536206362073620836209362103621136212362133621436215362163621736218362193622036221362223622336224362253622636227362283622936230362313623236233362343623536236362373623836239362403624136242362433624436245362463624736248362493625036251362523625336254362553625636257362583625936260362613626236263362643626536266362673626836269362703627136272362733627436275362763627736278362793628036281362823628336284362853628636287362883628936290362913629236293362943629536296362973629836299363003630136302363033630436305363063630736308363093631036311363123631336314363153631636317363183631936320363213632236323363243632536326363273632836329363303633136332363333633436335363363633736338363393634036341363423634336344363453634636347363483634936350363513635236353363543635536356363573635836359363603636136362363633636436365363663636736368363693637036371363723637336374363753637636377363783637936380363813638236383363843638536386363873638836389363903639136392363933639436395363963639736398363993640036401364023640336404364053640636407364083640936410364113641236413364143641536416364173641836419364203642136422364233642436425364263642736428364293643036431364323643336434364353643636437364383643936440364413644236443364443644536446364473644836449364503645136452364533645436455364563645736458364593646036461364623646336464364653646636467364683646936470364713647236473364743647536476364773647836479364803648136482364833648436485364863648736488364893649036491364923649336494364953649636497364983649936500365013650236503365043650536506365073650836509365103651136512365133651436515365163651736518365193652036521365223652336524365253652636527365283652936530365313653236533365343653536536365373653836539365403654136542365433654436545365463654736548365493655036551365523655336554365553655636557365583655936560365613656236563365643656536566365673656836569365703657136572365733657436575365763657736578365793658036581365823658336584365853658636587365883658936590365913659236593365943659536596365973659836599366003660136602366033660436605366063660736608366093661036611366123661336614366153661636617366183661936620366213662236623366243662536626366273662836629366303663136632366333663436635366363663736638366393664036641366423664336644366453664636647366483664936650366513665236653366543665536656366573665836659366603666136662366633666436665366663666736668366693667036671366723667336674366753667636677366783667936680366813668236683366843668536686366873668836689366903669136692366933669436695366963669736698366993670036701367023670336704367053670636707367083670936710367113671236713367143671536716367173671836719367203672136722367233672436725367263672736728367293673036731367323673336734367353673636737367383673936740367413674236743367443674536746367473674836749367503675136752367533675436755367563675736758367593676036761367623676336764367653676636767367683676936770367713677236773367743677536776367773677836779367803678136782367833678436785367863678736788367893679036791367923679336794367953679636797367983679936800368013680236803368043680536806368073680836809368103681136812368133681436815368163681736818368193682036821368223682336824368253682636827368283682936830368313683236833368343683536836368373683836839368403684136842368433684436845368463684736848368493685036851368523685336854368553685636857368583685936860368613686236863368643686536866368673686836869368703687136872368733687436875368763687736878368793688036881368823688336884368853688636887368883688936890368913689236893368943689536896368973689836899369003690136902369033690436905369063690736908369093691036911369123691336914369153691636917369183691936920369213692236923369243692536926369273692836929369303693136932369333693436935369363693736938369393694036941369423694336944369453694636947369483694936950369513695236953369543695536956369573695836959369603696136962369633696436965369663696736968369693697036971369723697336974369753697636977369783697936980369813698236983369843698536986369873698836989369903699136992369933699436995369963699736998369993700037001370023700337004370053700637007370083700937010370113701237013370143701537016370173701837019370203702137022370233702437025370263702737028370293703037031370323703337034370353703637037370383703937040370413704237043370443704537046370473704837049370503705137052370533705437055370563705737058370593706037061370623706337064370653706637067370683706937070370713707237073370743707537076370773707837079370803708137082370833708437085370863708737088370893709037091370923709337094370953709637097370983709937100371013710237103371043710537106371073710837109371103711137112371133711437115371163711737118371193712037121371223712337124371253712637127371283712937130371313713237133371343713537136371373713837139371403714137142371433714437145371463714737148371493715037151371523715337154371553715637157371583715937160371613716237163371643716537166371673716837169371703717137172371733717437175371763717737178371793718037181371823718337184371853718637187371883718937190371913719237193371943719537196371973719837199372003720137202372033720437205372063720737208372093721037211372123721337214372153721637217372183721937220372213722237223372243722537226372273722837229372303723137232372333723437235372363723737238372393724037241372423724337244372453724637247372483724937250372513725237253372543725537256372573725837259372603726137262372633726437265372663726737268372693727037271372723727337274372753727637277372783727937280372813728237283372843728537286372873728837289372903729137292372933729437295372963729737298372993730037301373023730337304373053730637307373083730937310373113731237313373143731537316373173731837319373203732137322373233732437325373263732737328373293733037331373323733337334373353733637337373383733937340373413734237343373443734537346373473734837349373503735137352373533735437355373563735737358373593736037361373623736337364373653736637367373683736937370373713737237373373743737537376373773737837379373803738137382373833738437385373863738737388373893739037391373923739337394373953739637397373983739937400374013740237403374043740537406374073740837409374103741137412374133741437415374163741737418374193742037421374223742337424374253742637427374283742937430374313743237433374343743537436374373743837439374403744137442374433744437445374463744737448374493745037451374523745337454374553745637457374583745937460374613746237463374643746537466374673746837469374703747137472374733747437475374763747737478374793748037481374823748337484374853748637487374883748937490374913749237493374943749537496374973749837499375003750137502375033750437505375063750737508375093751037511375123751337514375153751637517375183751937520375213752237523375243752537526375273752837529375303753137532375333753437535375363753737538375393754037541375423754337544375453754637547375483754937550375513755237553375543755537556375573755837559375603756137562375633756437565375663756737568375693757037571375723757337574375753757637577375783757937580375813758237583375843758537586375873758837589375903759137592375933759437595375963759737598375993760037601376023760337604376053760637607376083760937610376113761237613376143761537616376173761837619376203762137622376233762437625376263762737628376293763037631376323763337634376353763637637376383763937640376413764237643376443764537646376473764837649376503765137652376533765437655376563765737658376593766037661376623766337664376653766637667376683766937670376713767237673376743767537676376773767837679376803768137682376833768437685376863768737688376893769037691376923769337694376953769637697376983769937700377013770237703377043770537706377073770837709377103771137712377133771437715377163771737718377193772037721377223772337724377253772637727377283772937730377313773237733377343773537736377373773837739377403774137742377433774437745377463774737748377493775037751377523775337754377553775637757377583775937760377613776237763377643776537766377673776837769377703777137772377733777437775377763777737778377793778037781377823778337784377853778637787377883778937790377913779237793377943779537796377973779837799378003780137802378033780437805378063780737808378093781037811378123781337814378153781637817378183781937820378213782237823378243782537826378273782837829378303783137832378333783437835378363783737838378393784037841378423784337844378453784637847378483784937850378513785237853378543785537856378573785837859378603786137862378633786437865378663786737868378693787037871378723787337874378753787637877378783787937880378813788237883378843788537886378873788837889378903789137892378933789437895378963789737898378993790037901379023790337904379053790637907379083790937910379113791237913379143791537916379173791837919379203792137922379233792437925379263792737928379293793037931379323793337934379353793637937379383793937940379413794237943379443794537946379473794837949379503795137952379533795437955379563795737958379593796037961379623796337964379653796637967379683796937970379713797237973379743797537976379773797837979379803798137982379833798437985379863798737988379893799037991379923799337994379953799637997379983799938000380013800238003380043800538006380073800838009380103801138012380133801438015380163801738018380193802038021380223802338024380253802638027380283802938030380313803238033380343803538036380373803838039380403804138042380433804438045380463804738048380493805038051380523805338054380553805638057380583805938060380613806238063380643806538066380673806838069380703807138072380733807438075380763807738078380793808038081380823808338084380853808638087380883808938090380913809238093380943809538096380973809838099381003810138102381033810438105381063810738108381093811038111381123811338114381153811638117381183811938120381213812238123381243812538126381273812838129381303813138132381333813438135381363813738138381393814038141381423814338144381453814638147381483814938150381513815238153381543815538156381573815838159381603816138162381633816438165381663816738168381693817038171381723817338174381753817638177381783817938180381813818238183381843818538186381873818838189381903819138192381933819438195381963819738198381993820038201382023820338204382053820638207382083820938210382113821238213382143821538216382173821838219382203822138222382233822438225382263822738228382293823038231382323823338234382353823638237382383823938240382413824238243382443824538246382473824838249382503825138252382533825438255382563825738258382593826038261382623826338264382653826638267382683826938270382713827238273382743827538276382773827838279382803828138282382833828438285382863828738288382893829038291382923829338294382953829638297382983829938300383013830238303383043830538306383073830838309383103831138312383133831438315383163831738318383193832038321383223832338324383253832638327383283832938330383313833238333383343833538336383373833838339383403834138342383433834438345383463834738348383493835038351383523835338354383553835638357383583835938360383613836238363383643836538366383673836838369383703837138372383733837438375383763837738378383793838038381383823838338384383853838638387383883838938390383913839238393383943839538396383973839838399384003840138402384033840438405384063840738408384093841038411384123841338414384153841638417384183841938420384213842238423384243842538426384273842838429384303843138432384333843438435384363843738438384393844038441384423844338444384453844638447384483844938450384513845238453384543845538456384573845838459384603846138462384633846438465384663846738468384693847038471384723847338474384753847638477384783847938480384813848238483384843848538486384873848838489384903849138492384933849438495384963849738498384993850038501385023850338504385053850638507385083850938510385113851238513385143851538516385173851838519385203852138522385233852438525385263852738528385293853038531385323853338534385353853638537385383853938540385413854238543385443854538546385473854838549385503855138552385533855438555385563855738558385593856038561385623856338564385653856638567385683856938570385713857238573385743857538576385773857838579385803858138582385833858438585385863858738588385893859038591385923859338594385953859638597385983859938600386013860238603386043860538606386073860838609386103861138612386133861438615386163861738618386193862038621386223862338624386253862638627386283862938630386313863238633386343863538636386373863838639386403864138642386433864438645386463864738648386493865038651386523865338654386553865638657386583865938660386613866238663386643866538666386673866838669386703867138672386733867438675386763867738678386793868038681386823868338684386853868638687386883868938690386913869238693386943869538696386973869838699387003870138702387033870438705387063870738708387093871038711387123871338714387153871638717387183871938720387213872238723387243872538726387273872838729387303873138732387333873438735387363873738738387393874038741387423874338744387453874638747387483874938750387513875238753387543875538756387573875838759387603876138762387633876438765387663876738768387693877038771387723877338774387753877638777387783877938780387813878238783387843878538786387873878838789387903879138792387933879438795387963879738798387993880038801388023880338804388053880638807388083880938810388113881238813388143881538816388173881838819388203882138822388233882438825388263882738828388293883038831388323883338834388353883638837388383883938840388413884238843388443884538846388473884838849388503885138852388533885438855388563885738858388593886038861388623886338864388653886638867388683886938870388713887238873388743887538876388773887838879388803888138882388833888438885388863888738888388893889038891388923889338894388953889638897388983889938900389013890238903389043890538906389073890838909389103891138912389133891438915389163891738918389193892038921389223892338924389253892638927389283892938930389313893238933389343893538936389373893838939389403894138942389433894438945389463894738948389493895038951389523895338954389553895638957389583895938960389613896238963389643896538966389673896838969389703897138972389733897438975389763897738978389793898038981389823898338984389853898638987389883898938990389913899238993389943899538996389973899838999390003900139002390033900439005390063900739008390093901039011390123901339014390153901639017390183901939020390213902239023390243902539026390273902839029390303903139032390333903439035390363903739038390393904039041390423904339044390453904639047390483904939050390513905239053390543905539056390573905839059390603906139062390633906439065390663906739068390693907039071390723907339074390753907639077390783907939080390813908239083390843908539086390873908839089390903909139092390933909439095390963909739098390993910039101391023910339104391053910639107391083910939110391113911239113391143911539116391173911839119391203912139122391233912439125391263912739128391293913039131391323913339134391353913639137391383913939140391413914239143391443914539146391473914839149391503915139152391533915439155391563915739158391593916039161391623916339164391653916639167391683916939170391713917239173391743917539176391773917839179391803918139182391833918439185391863918739188391893919039191391923919339194391953919639197391983919939200392013920239203392043920539206392073920839209392103921139212392133921439215392163921739218392193922039221392223922339224392253922639227392283922939230392313923239233392343923539236392373923839239392403924139242392433924439245392463924739248392493925039251392523925339254392553925639257392583925939260392613926239263392643926539266392673926839269392703927139272392733927439275392763927739278392793928039281392823928339284392853928639287392883928939290392913929239293392943929539296392973929839299393003930139302393033930439305393063930739308393093931039311393123931339314393153931639317393183931939320393213932239323393243932539326393273932839329393303933139332393333933439335393363933739338393393934039341393423934339344393453934639347393483934939350393513935239353393543935539356393573935839359393603936139362393633936439365393663936739368393693937039371393723937339374393753937639377393783937939380393813938239383393843938539386393873938839389393903939139392393933939439395393963939739398393993940039401394023940339404394053940639407394083940939410394113941239413394143941539416394173941839419394203942139422394233942439425394263942739428394293943039431394323943339434394353943639437394383943939440394413944239443394443944539446394473944839449394503945139452394533945439455394563945739458394593946039461394623946339464394653946639467394683946939470394713947239473394743947539476394773947839479394803948139482394833948439485394863948739488394893949039491394923949339494394953949639497394983949939500395013950239503395043950539506395073950839509395103951139512395133951439515395163951739518395193952039521395223952339524395253952639527395283952939530395313953239533395343953539536395373953839539395403954139542395433954439545395463954739548395493955039551395523955339554395553955639557395583955939560395613956239563395643956539566395673956839569395703957139572395733957439575395763957739578395793958039581395823958339584395853958639587395883958939590395913959239593395943959539596395973959839599396003960139602396033960439605396063960739608396093961039611396123961339614396153961639617396183961939620396213962239623396243962539626396273962839629396303963139632396333963439635396363963739638396393964039641396423964339644396453964639647396483964939650396513965239653396543965539656396573965839659396603966139662396633966439665396663966739668396693967039671396723967339674396753967639677396783967939680396813968239683396843968539686396873968839689396903969139692396933969439695396963969739698396993970039701397023970339704397053970639707397083970939710397113971239713397143971539716397173971839719397203972139722397233972439725397263972739728397293973039731397323973339734397353973639737397383973939740397413974239743397443974539746397473974839749397503975139752397533975439755397563975739758397593976039761397623976339764397653976639767397683976939770397713977239773397743977539776397773977839779397803978139782397833978439785397863978739788397893979039791397923979339794397953979639797397983979939800398013980239803398043980539806398073980839809398103981139812398133981439815398163981739818398193982039821398223982339824398253982639827398283982939830398313983239833398343983539836398373983839839398403984139842398433984439845398463984739848398493985039851398523985339854398553985639857398583985939860398613986239863398643986539866398673986839869398703987139872398733987439875398763987739878398793988039881398823988339884398853988639887398883988939890398913989239893398943989539896398973989839899399003990139902399033990439905399063990739908399093991039911399123991339914399153991639917399183991939920399213992239923399243992539926399273992839929399303993139932399333993439935399363993739938399393994039941399423994339944399453994639947399483994939950399513995239953399543995539956399573995839959399603996139962399633996439965399663996739968399693997039971399723997339974399753997639977399783997939980399813998239983399843998539986399873998839989399903999139992399933999439995399963999739998399994000040001400024000340004400054000640007400084000940010400114001240013400144001540016400174001840019400204002140022400234002440025400264002740028400294003040031400324003340034400354003640037400384003940040400414004240043400444004540046400474004840049400504005140052400534005440055400564005740058400594006040061400624006340064400654006640067400684006940070400714007240073400744007540076400774007840079400804008140082400834008440085400864008740088400894009040091400924009340094400954009640097400984009940100401014010240103401044010540106401074010840109401104011140112401134011440115401164011740118401194012040121401224012340124401254012640127401284012940130401314013240133401344013540136401374013840139401404014140142401434014440145401464014740148401494015040151401524015340154401554015640157401584015940160401614016240163401644016540166401674016840169401704017140172401734017440175401764017740178401794018040181401824018340184401854018640187401884018940190401914019240193401944019540196401974019840199402004020140202402034020440205402064020740208402094021040211402124021340214402154021640217402184021940220402214022240223402244022540226402274022840229402304023140232402334023440235402364023740238402394024040241402424024340244402454024640247402484024940250402514025240253402544025540256402574025840259402604026140262402634026440265402664026740268402694027040271402724027340274402754027640277402784027940280402814028240283402844028540286402874028840289402904029140292402934029440295402964029740298402994030040301403024030340304403054030640307403084030940310403114031240313403144031540316403174031840319403204032140322403234032440325403264032740328403294033040331403324033340334403354033640337403384033940340403414034240343403444034540346403474034840349403504035140352403534035440355403564035740358403594036040361403624036340364403654036640367403684036940370403714037240373403744037540376403774037840379403804038140382403834038440385403864038740388403894039040391403924039340394403954039640397403984039940400404014040240403404044040540406404074040840409404104041140412404134041440415404164041740418404194042040421404224042340424404254042640427404284042940430404314043240433404344043540436404374043840439404404044140442404434044440445404464044740448404494045040451404524045340454404554045640457404584045940460404614046240463404644046540466404674046840469404704047140472404734047440475404764047740478404794048040481404824048340484404854048640487404884048940490404914049240493404944049540496404974049840499405004050140502405034050440505405064050740508405094051040511405124051340514405154051640517405184051940520405214052240523405244052540526405274052840529405304053140532405334053440535405364053740538405394054040541405424054340544405454054640547405484054940550405514055240553405544055540556405574055840559405604056140562405634056440565405664056740568405694057040571405724057340574405754057640577405784057940580405814058240583405844058540586405874058840589405904059140592405934059440595405964059740598405994060040601406024060340604406054060640607406084060940610406114061240613406144061540616406174061840619406204062140622406234062440625406264062740628406294063040631406324063340634406354063640637406384063940640406414064240643406444064540646406474064840649406504065140652406534065440655406564065740658406594066040661406624066340664406654066640667406684066940670406714067240673406744067540676406774067840679406804068140682406834068440685406864068740688406894069040691406924069340694406954069640697406984069940700407014070240703407044070540706407074070840709407104071140712407134071440715407164071740718407194072040721407224072340724407254072640727407284072940730407314073240733407344073540736407374073840739407404074140742407434074440745407464074740748407494075040751407524075340754407554075640757407584075940760407614076240763407644076540766407674076840769407704077140772407734077440775407764077740778407794078040781407824078340784407854078640787407884078940790407914079240793407944079540796407974079840799408004080140802408034080440805408064080740808408094081040811408124081340814408154081640817408184081940820408214082240823408244082540826408274082840829408304083140832408334083440835408364083740838408394084040841408424084340844408454084640847408484084940850408514085240853408544085540856408574085840859408604086140862408634086440865408664086740868408694087040871408724087340874408754087640877408784087940880408814088240883408844088540886408874088840889408904089140892408934089440895408964089740898408994090040901409024090340904409054090640907409084090940910409114091240913409144091540916409174091840919409204092140922409234092440925409264092740928409294093040931409324093340934409354093640937409384093940940409414094240943409444094540946409474094840949409504095140952409534095440955409564095740958409594096040961409624096340964409654096640967409684096940970409714097240973409744097540976409774097840979409804098140982409834098440985409864098740988409894099040991409924099340994409954099640997409984099941000410014100241003410044100541006410074100841009410104101141012410134101441015410164101741018410194102041021410224102341024410254102641027410284102941030410314103241033410344103541036410374103841039410404104141042410434104441045410464104741048410494105041051410524105341054410554105641057410584105941060410614106241063410644106541066410674106841069410704107141072410734107441075410764107741078410794108041081410824108341084410854108641087410884108941090410914109241093410944109541096410974109841099411004110141102411034110441105411064110741108411094111041111411124111341114411154111641117411184111941120411214112241123411244112541126411274112841129411304113141132411334113441135411364113741138411394114041141411424114341144411454114641147411484114941150411514115241153411544115541156411574115841159411604116141162411634116441165411664116741168411694117041171411724117341174411754117641177411784117941180411814118241183411844118541186411874118841189411904119141192411934119441195411964119741198411994120041201412024120341204412054120641207412084120941210412114121241213412144121541216412174121841219412204122141222412234122441225412264122741228412294123041231412324123341234412354123641237412384123941240412414124241243412444124541246412474124841249412504125141252412534125441255412564125741258412594126041261412624126341264412654126641267412684126941270412714127241273412744127541276412774127841279412804128141282412834128441285412864128741288412894129041291412924129341294412954129641297412984129941300413014130241303413044130541306413074130841309413104131141312413134131441315413164131741318413194132041321413224132341324413254132641327413284132941330413314133241333413344133541336413374133841339413404134141342413434134441345413464134741348413494135041351413524135341354413554135641357413584135941360413614136241363413644136541366413674136841369413704137141372413734137441375413764137741378413794138041381413824138341384413854138641387413884138941390413914139241393413944139541396413974139841399414004140141402414034140441405414064140741408414094141041411414124141341414414154141641417414184141941420414214142241423414244142541426414274142841429414304143141432414334143441435414364143741438414394144041441414424144341444414454144641447414484144941450414514145241453414544145541456414574145841459414604146141462414634146441465414664146741468414694147041471414724147341474414754147641477414784147941480414814148241483414844148541486414874148841489414904149141492414934149441495414964149741498414994150041501415024150341504415054150641507415084150941510415114151241513415144151541516415174151841519415204152141522415234152441525415264152741528415294153041531415324153341534415354153641537415384153941540415414154241543415444154541546415474154841549415504155141552415534155441555415564155741558415594156041561415624156341564415654156641567415684156941570415714157241573415744157541576415774157841579415804158141582415834158441585415864158741588415894159041591415924159341594415954159641597415984159941600416014160241603416044160541606416074160841609416104161141612416134161441615416164161741618416194162041621416224162341624416254162641627416284162941630416314163241633416344163541636416374163841639416404164141642416434164441645416464164741648416494165041651416524165341654416554165641657416584165941660416614166241663416644166541666416674166841669416704167141672416734167441675416764167741678416794168041681416824168341684416854168641687416884168941690416914169241693416944169541696416974169841699417004170141702417034170441705417064170741708417094171041711417124171341714417154171641717417184171941720417214172241723417244172541726417274172841729417304173141732417334173441735417364173741738417394174041741417424174341744417454174641747417484174941750417514175241753417544175541756417574175841759417604176141762417634176441765417664176741768417694177041771417724177341774417754177641777417784177941780417814178241783417844178541786417874178841789417904179141792417934179441795417964179741798417994180041801418024180341804418054180641807418084180941810418114181241813418144181541816418174181841819418204182141822418234182441825418264182741828418294183041831418324183341834418354183641837418384183941840418414184241843418444184541846418474184841849418504185141852418534185441855418564185741858418594186041861418624186341864418654186641867418684186941870418714187241873418744187541876418774187841879418804188141882418834188441885418864188741888418894189041891418924189341894418954189641897418984189941900419014190241903419044190541906419074190841909419104191141912419134191441915419164191741918419194192041921419224192341924419254192641927419284192941930419314193241933419344193541936419374193841939419404194141942419434194441945419464194741948419494195041951419524195341954419554195641957419584195941960419614196241963419644196541966419674196841969419704197141972419734197441975419764197741978419794198041981419824198341984419854198641987419884198941990419914199241993419944199541996419974199841999420004200142002420034200442005420064200742008420094201042011420124201342014420154201642017420184201942020420214202242023420244202542026420274202842029420304203142032420334203442035420364203742038420394204042041420424204342044420454204642047420484204942050420514205242053420544205542056420574205842059420604206142062420634206442065420664206742068420694207042071420724207342074420754207642077420784207942080420814208242083420844208542086420874208842089420904209142092420934209442095420964209742098420994210042101421024210342104421054210642107421084210942110421114211242113421144211542116421174211842119421204212142122421234212442125421264212742128421294213042131421324213342134421354213642137421384213942140421414214242143421444214542146421474214842149421504215142152421534215442155421564215742158421594216042161421624216342164421654216642167421684216942170421714217242173421744217542176421774217842179421804218142182421834218442185421864218742188421894219042191421924219342194421954219642197421984219942200422014220242203422044220542206422074220842209422104221142212422134221442215422164221742218422194222042221422224222342224422254222642227422284222942230422314223242233422344223542236422374223842239422404224142242422434224442245422464224742248422494225042251422524225342254422554225642257422584225942260422614226242263422644226542266422674226842269422704227142272422734227442275422764227742278422794228042281422824228342284422854228642287422884228942290422914229242293422944229542296422974229842299423004230142302423034230442305423064230742308423094231042311423124231342314423154231642317423184231942320423214232242323423244232542326423274232842329423304233142332423334233442335423364233742338423394234042341423424234342344423454234642347423484234942350423514235242353423544235542356423574235842359423604236142362423634236442365423664236742368423694237042371423724237342374423754237642377423784237942380423814238242383423844238542386423874238842389423904239142392423934239442395423964239742398423994240042401424024240342404424054240642407424084240942410424114241242413424144241542416424174241842419424204242142422424234242442425424264242742428424294243042431424324243342434424354243642437424384243942440424414244242443424444244542446424474244842449424504245142452424534245442455424564245742458424594246042461424624246342464424654246642467424684246942470424714247242473424744247542476424774247842479424804248142482424834248442485424864248742488424894249042491424924249342494424954249642497424984249942500425014250242503425044250542506425074250842509425104251142512425134251442515425164251742518425194252042521425224252342524425254252642527425284252942530425314253242533425344253542536425374253842539425404254142542425434254442545425464254742548425494255042551425524255342554425554255642557425584255942560425614256242563425644256542566425674256842569425704257142572425734257442575425764257742578425794258042581425824258342584425854258642587425884258942590425914259242593425944259542596425974259842599426004260142602426034260442605426064260742608426094261042611426124261342614426154261642617426184261942620426214262242623426244262542626426274262842629426304263142632426334263442635426364263742638426394264042641426424264342644426454264642647426484264942650426514265242653426544265542656426574265842659426604266142662426634266442665426664266742668426694267042671426724267342674426754267642677426784267942680426814268242683426844268542686426874268842689426904269142692426934269442695426964269742698426994270042701427024270342704427054270642707427084270942710427114271242713427144271542716427174271842719427204272142722427234272442725427264272742728427294273042731427324273342734427354273642737427384273942740427414274242743427444274542746427474274842749427504275142752427534275442755427564275742758427594276042761427624276342764427654276642767427684276942770427714277242773427744277542776427774277842779427804278142782427834278442785427864278742788427894279042791427924279342794427954279642797427984279942800428014280242803428044280542806428074280842809428104281142812428134281442815428164281742818428194282042821428224282342824428254282642827428284282942830428314283242833428344283542836428374283842839428404284142842428434284442845428464284742848428494285042851428524285342854428554285642857428584285942860428614286242863428644286542866428674286842869428704287142872428734287442875428764287742878428794288042881428824288342884428854288642887428884288942890428914289242893428944289542896428974289842899429004290142902429034290442905429064290742908429094291042911429124291342914429154291642917429184291942920429214292242923429244292542926429274292842929429304293142932429334293442935429364293742938429394294042941429424294342944429454294642947429484294942950429514295242953429544295542956429574295842959429604296142962429634296442965429664296742968429694297042971429724297342974429754297642977429784297942980429814298242983429844298542986429874298842989429904299142992429934299442995429964299742998429994300043001430024300343004430054300643007430084300943010430114301243013430144301543016430174301843019430204302143022430234302443025430264302743028430294303043031430324303343034430354303643037430384303943040430414304243043430444304543046430474304843049430504305143052430534305443055430564305743058430594306043061430624306343064430654306643067430684306943070430714307243073430744307543076430774307843079430804308143082430834308443085430864308743088430894309043091430924309343094430954309643097430984309943100431014310243103431044310543106431074310843109431104311143112431134311443115431164311743118431194312043121431224312343124431254312643127431284312943130431314313243133431344313543136431374313843139431404314143142431434314443145431464314743148431494315043151431524315343154431554315643157431584315943160431614316243163431644316543166431674316843169431704317143172431734317443175431764317743178431794318043181431824318343184431854318643187431884318943190431914319243193431944319543196431974319843199432004320143202432034320443205432064320743208432094321043211432124321343214432154321643217432184321943220432214322243223432244322543226432274322843229432304323143232432334323443235432364323743238432394324043241432424324343244432454324643247432484324943250432514325243253432544325543256432574325843259432604326143262432634326443265432664326743268432694327043271432724327343274432754327643277432784327943280432814328243283432844328543286432874328843289432904329143292432934329443295432964329743298432994330043301433024330343304433054330643307433084330943310433114331243313433144331543316433174331843319433204332143322433234332443325433264332743328433294333043331433324333343334433354333643337433384333943340433414334243343433444334543346433474334843349433504335143352433534335443355433564335743358433594336043361433624336343364433654336643367433684336943370433714337243373433744337543376433774337843379433804338143382433834338443385433864338743388433894339043391433924339343394433954339643397433984339943400434014340243403434044340543406434074340843409434104341143412434134341443415434164341743418434194342043421434224342343424434254342643427434284342943430434314343243433434344343543436434374343843439434404344143442434434344443445434464344743448434494345043451434524345343454434554345643457434584345943460434614346243463434644346543466434674346843469434704347143472434734347443475434764347743478434794348043481434824348343484434854348643487434884348943490434914349243493434944349543496434974349843499435004350143502435034350443505435064350743508435094351043511435124351343514435154351643517435184351943520435214352243523435244352543526435274352843529435304353143532435334353443535435364353743538435394354043541435424354343544435454354643547435484354943550435514355243553435544355543556435574355843559435604356143562435634356443565435664356743568435694357043571435724357343574435754357643577435784357943580435814358243583435844358543586435874358843589435904359143592435934359443595435964359743598435994360043601436024360343604436054360643607436084360943610436114361243613436144361543616436174361843619436204362143622436234362443625436264362743628436294363043631436324363343634436354363643637436384363943640436414364243643436444364543646436474364843649436504365143652436534365443655436564365743658436594366043661436624366343664436654366643667436684366943670436714367243673436744367543676436774367843679436804368143682436834368443685436864368743688436894369043691436924369343694436954369643697436984369943700437014370243703437044370543706437074370843709437104371143712437134371443715437164371743718437194372043721437224372343724437254372643727437284372943730437314373243733437344373543736437374373843739437404374143742437434374443745437464374743748437494375043751437524375343754437554375643757437584375943760437614376243763437644376543766437674376843769437704377143772437734377443775437764377743778437794378043781437824378343784437854378643787437884378943790437914379243793437944379543796437974379843799438004380143802438034380443805438064380743808438094381043811438124381343814438154381643817438184381943820438214382243823438244382543826438274382843829438304383143832438334383443835438364383743838438394384043841438424384343844438454384643847438484384943850438514385243853438544385543856438574385843859438604386143862438634386443865438664386743868438694387043871438724387343874438754387643877438784387943880438814388243883438844388543886438874388843889438904389143892438934389443895438964389743898438994390043901439024390343904439054390643907439084390943910439114391243913439144391543916439174391843919439204392143922439234392443925439264392743928439294393043931439324393343934439354393643937439384393943940439414394243943439444394543946439474394843949439504395143952439534395443955439564395743958439594396043961439624396343964439654396643967439684396943970439714397243973439744397543976439774397843979439804398143982439834398443985439864398743988439894399043991439924399343994439954399643997439984399944000440014400244003440044400544006440074400844009440104401144012440134401444015440164401744018440194402044021440224402344024440254402644027440284402944030440314403244033440344403544036440374403844039440404404144042440434404444045440464404744048440494405044051440524405344054440554405644057440584405944060440614406244063440644406544066440674406844069440704407144072440734407444075440764407744078440794408044081440824408344084440854408644087440884408944090440914409244093440944409544096440974409844099441004410144102441034410444105441064410744108441094411044111441124411344114441154411644117441184411944120441214412244123441244412544126441274412844129441304413144132441334413444135441364413744138441394414044141441424414344144441454414644147441484414944150441514415244153441544415544156441574415844159441604416144162441634416444165441664416744168441694417044171441724417344174441754417644177441784417944180441814418244183441844418544186441874418844189441904419144192441934419444195441964419744198441994420044201442024420344204442054420644207442084420944210442114421244213442144421544216442174421844219442204422144222442234422444225442264422744228442294423044231442324423344234442354423644237442384423944240442414424244243442444424544246442474424844249442504425144252442534425444255442564425744258442594426044261442624426344264442654426644267442684426944270442714427244273442744427544276442774427844279442804428144282442834428444285442864428744288442894429044291442924429344294442954429644297442984429944300443014430244303443044430544306443074430844309443104431144312443134431444315443164431744318443194432044321443224432344324443254432644327443284432944330443314433244333443344433544336443374433844339443404434144342443434434444345443464434744348443494435044351443524435344354443554435644357443584435944360443614436244363443644436544366443674436844369443704437144372443734437444375443764437744378443794438044381443824438344384443854438644387443884438944390443914439244393443944439544396443974439844399444004440144402444034440444405444064440744408444094441044411444124441344414444154441644417444184441944420444214442244423444244442544426444274442844429444304443144432444334443444435444364443744438444394444044441444424444344444444454444644447444484444944450444514445244453444544445544456444574445844459444604446144462444634446444465444664446744468444694447044471444724447344474444754447644477444784447944480444814448244483444844448544486444874448844489444904449144492444934449444495444964449744498444994450044501445024450344504445054450644507445084450944510445114451244513445144451544516445174451844519445204452144522445234452444525445264452744528445294453044531445324453344534445354453644537445384453944540445414454244543445444454544546445474454844549445504455144552445534455444555445564455744558445594456044561445624456344564445654456644567445684456944570445714457244573445744457544576445774457844579445804458144582445834458444585445864458744588445894459044591445924459344594445954459644597445984459944600446014460244603446044460544606446074460844609446104461144612446134461444615446164461744618446194462044621446224462344624446254462644627446284462944630446314463244633446344463544636446374463844639446404464144642446434464444645446464464744648446494465044651446524465344654446554465644657446584465944660446614466244663446644466544666446674466844669446704467144672446734467444675446764467744678446794468044681446824468344684446854468644687446884468944690446914469244693446944469544696446974469844699447004470144702447034470444705447064470744708447094471044711447124471344714447154471644717447184471944720447214472244723447244472544726447274472844729447304473144732447334473444735447364473744738447394474044741447424474344744447454474644747447484474944750447514475244753447544475544756447574475844759447604476144762447634476444765447664476744768447694477044771447724477344774447754477644777447784477944780447814478244783447844478544786447874478844789447904479144792447934479444795447964479744798447994480044801448024480344804448054480644807448084480944810448114481244813448144481544816448174481844819448204482144822448234482444825448264482744828448294483044831448324483344834448354483644837448384483944840448414484244843448444484544846448474484844849448504485144852448534485444855448564485744858448594486044861448624486344864448654486644867448684486944870448714487244873448744487544876448774487844879448804488144882448834488444885448864488744888448894489044891448924489344894448954489644897448984489944900449014490244903449044490544906449074490844909449104491144912449134491444915449164491744918449194492044921449224492344924449254492644927449284492944930449314493244933449344493544936449374493844939449404494144942449434494444945449464494744948449494495044951449524495344954449554495644957449584495944960449614496244963449644496544966449674496844969449704497144972449734497444975449764497744978449794498044981449824498344984449854498644987449884498944990449914499244993449944499544996449974499844999450004500145002450034500445005450064500745008450094501045011450124501345014450154501645017450184501945020450214502245023450244502545026450274502845029450304503145032450334503445035450364503745038450394504045041450424504345044450454504645047450484504945050450514505245053450544505545056450574505845059450604506145062450634506445065450664506745068450694507045071450724507345074450754507645077450784507945080450814508245083450844508545086450874508845089450904509145092450934509445095450964509745098450994510045101451024510345104451054510645107451084510945110451114511245113451144511545116451174511845119451204512145122451234512445125451264512745128451294513045131451324513345134451354513645137451384513945140451414514245143451444514545146451474514845149451504515145152451534515445155451564515745158451594516045161451624516345164451654516645167451684516945170451714517245173451744517545176451774517845179451804518145182451834518445185451864518745188451894519045191451924519345194451954519645197451984519945200452014520245203452044520545206452074520845209452104521145212452134521445215452164521745218452194522045221452224522345224452254522645227452284522945230452314523245233452344523545236452374523845239452404524145242452434524445245452464524745248452494525045251452524525345254452554525645257452584525945260452614526245263452644526545266452674526845269452704527145272452734527445275452764527745278452794528045281452824528345284452854528645287452884528945290452914529245293452944529545296452974529845299453004530145302453034530445305453064530745308453094531045311453124531345314453154531645317453184531945320453214532245323453244532545326453274532845329453304533145332453334533445335453364533745338453394534045341453424534345344453454534645347453484534945350453514535245353453544535545356453574535845359453604536145362453634536445365453664536745368453694537045371453724537345374453754537645377453784537945380453814538245383453844538545386453874538845389453904539145392453934539445395453964539745398453994540045401454024540345404454054540645407454084540945410454114541245413454144541545416454174541845419454204542145422454234542445425454264542745428454294543045431454324543345434454354543645437454384543945440454414544245443454444544545446454474544845449454504545145452454534545445455454564545745458454594546045461454624546345464454654546645467454684546945470454714547245473454744547545476454774547845479454804548145482454834548445485454864548745488454894549045491454924549345494454954549645497454984549945500455014550245503455044550545506455074550845509455104551145512455134551445515455164551745518455194552045521455224552345524455254552645527455284552945530455314553245533455344553545536455374553845539455404554145542455434554445545455464554745548455494555045551455524555345554455554555645557455584555945560455614556245563455644556545566455674556845569455704557145572455734557445575455764557745578455794558045581455824558345584455854558645587455884558945590455914559245593455944559545596455974559845599456004560145602456034560445605456064560745608456094561045611456124561345614456154561645617456184561945620456214562245623456244562545626456274562845629456304563145632456334563445635456364563745638456394564045641456424564345644456454564645647456484564945650456514565245653456544565545656456574565845659456604566145662456634566445665456664566745668456694567045671456724567345674456754567645677456784567945680456814568245683456844568545686456874568845689456904569145692456934569445695456964569745698456994570045701457024570345704457054570645707457084570945710457114571245713457144571545716457174571845719457204572145722457234572445725457264572745728457294573045731457324573345734457354573645737457384573945740457414574245743457444574545746457474574845749457504575145752457534575445755457564575745758457594576045761457624576345764457654576645767457684576945770457714577245773457744577545776457774577845779457804578145782457834578445785457864578745788457894579045791457924579345794457954579645797457984579945800458014580245803458044580545806458074580845809458104581145812458134581445815458164581745818458194582045821458224582345824458254582645827458284582945830458314583245833458344583545836458374583845839458404584145842458434584445845458464584745848458494585045851458524585345854458554585645857458584585945860458614586245863458644586545866458674586845869458704587145872458734587445875458764587745878458794588045881458824588345884458854588645887458884588945890458914589245893458944589545896458974589845899459004590145902459034590445905459064590745908459094591045911459124591345914459154591645917459184591945920459214592245923459244592545926459274592845929459304593145932459334593445935459364593745938459394594045941459424594345944459454594645947459484594945950459514595245953459544595545956459574595845959459604596145962459634596445965459664596745968459694597045971459724597345974459754597645977459784597945980459814598245983459844598545986459874598845989459904599145992459934599445995459964599745998459994600046001460024600346004460054600646007460084600946010460114601246013460144601546016460174601846019460204602146022460234602446025460264602746028460294603046031460324603346034460354603646037460384603946040460414604246043460444604546046460474604846049460504605146052460534605446055460564605746058460594606046061460624606346064460654606646067460684606946070460714607246073460744607546076460774607846079460804608146082460834608446085460864608746088460894609046091460924609346094460954609646097460984609946100461014610246103461044610546106461074610846109461104611146112461134611446115461164611746118461194612046121461224612346124461254612646127461284612946130461314613246133461344613546136461374613846139461404614146142461434614446145461464614746148461494615046151461524615346154461554615646157461584615946160461614616246163461644616546166461674616846169461704617146172461734617446175461764617746178461794618046181461824618346184461854618646187461884618946190461914619246193461944619546196461974619846199462004620146202462034620446205462064620746208462094621046211462124621346214462154621646217462184621946220462214622246223462244622546226462274622846229462304623146232462334623446235462364623746238462394624046241462424624346244462454624646247462484624946250462514625246253462544625546256462574625846259462604626146262462634626446265462664626746268462694627046271462724627346274462754627646277462784627946280462814628246283462844628546286462874628846289462904629146292462934629446295462964629746298462994630046301463024630346304463054630646307463084630946310463114631246313463144631546316463174631846319463204632146322463234632446325463264632746328463294633046331463324633346334463354633646337463384633946340463414634246343463444634546346463474634846349463504635146352463534635446355463564635746358463594636046361463624636346364463654636646367463684636946370463714637246373463744637546376463774637846379463804638146382463834638446385463864638746388463894639046391463924639346394463954639646397463984639946400464014640246403464044640546406464074640846409464104641146412464134641446415464164641746418464194642046421464224642346424464254642646427464284642946430464314643246433464344643546436464374643846439464404644146442464434644446445464464644746448464494645046451464524645346454464554645646457464584645946460464614646246463464644646546466464674646846469464704647146472464734647446475464764647746478
  1. <?xml version="1.0"?>
  2. <doc>
  3. <assembly>
  4. <name>Tao.OpenGl</name>
  5. </assembly>
  6. <members>
  7. <member name="T:Tao.OpenGl.Gl">
  8. <summary>
  9. OpenGL binding for .NET, implementing OpenGL 2.1, plus extensions.
  10. </summary>
  11. <remarks>
  12. <para>
  13. This class contains all OpenGL enums and functions defined in the 2.1 specification.
  14. The official .spec files can be found at: http://opengl.org/registry/.
  15. </para>
  16. <para>
  17. We rely on static initialization to obtain the entry points for OpenGL functions.
  18. Please ensure that a valid OpenGL context has been made current in the pertinent thread <b>before</b>
  19. any OpenGL functions are called (toolkits like GLUT, SDL or GLFW will automatically take care of
  20. the context initialization process). Without a valid OpenGL context, we will only be able
  21. to retrieve statically exported entry points (typically corresponding to OpenGL version 1.1 under Windows,
  22. 1.3 under Linux and 1.4 under Windows Vista), and extension methods will need to be loaded manually.
  23. </para>
  24. <para>
  25. If you prefer to have more control on extension loading, you can use the
  26. ReloadFunctions or ReloadFunction methods to manually force the initialisation of OpenGL entry points.
  27. The ReloadFunctions method should be called whenever you change an existing visual or pixelformat. This
  28. generally happens when you change the color/stencil/depth buffer associated with a window (but probably
  29. not the resolution). This may or may not be necessary under Linux/MacOS, but is generally required for
  30. Windows.
  31. </para>
  32. <para>
  33. You can use the Gl.IsExtensionSupported method to check whether any given category of extension functions
  34. exists in the current OpenGL context. The results can be cached to speed up future searches.
  35. Keep in mind that different OpenGL contexts may support different extensions, and under different entry
  36. points. Always check if all required extensions are still supported when changing visuals or pixel
  37. formats.
  38. </para>
  39. <para>
  40. You may retrieve the entry point for an OpenGL function using the Gl.GetDelegate method.
  41. </para>
  42. <para>
  43. <see href="http://opengl.org/registry/"/>
  44. <seealso cref="M:Tao.OpenGl.Gl.IsExtensionSupported(System.String)"/>
  45. <seealso cref="M:Tao.OpenGl.Gl.GetDelegate(System.String,System.Type)"/>
  46. <seealso cref="M:Tao.OpenGl.Gl.ReloadFunctions"/>
  47. </para>
  48. </remarks>
  49. </member>
  50. <member name="M:Tao.OpenGl.Gl.IsExtensionSupported(System.String)">
  51. <summary>
  52. Determines whether the specified OpenGL extension category is available in
  53. the current OpenGL context. Equivalent to IsExtensionSupported(name, true)
  54. </summary>
  55. <param name="name">The string for the OpenGL extension category (eg. "GL_ARB_multitexture")</param>
  56. <returns>True if the specified extension is available, false otherwise.</returns>
  57. </member>
  58. <member name="M:Tao.OpenGl.Gl.GetDelegate(System.String,System.Type)">
  59. <summary>
  60. Creates a System.Delegate that can be used to call an OpenGL function, core or extension.
  61. </summary>
  62. <param name="name">The name of the OpenGL function (eg. "glNewList")</param>
  63. <param name="signature">The signature of the OpenGL function.</param>
  64. <returns>
  65. A System.Delegate that can be used to call this OpenGL function, or null if the specified
  66. function name did not correspond to an OpenGL function.
  67. </returns>
  68. </member>
  69. <member name="M:Tao.OpenGl.Gl.ReloadFunctions">
  70. <summary>
  71. Loads all OpenGL functions (core and extensions).
  72. </summary>
  73. <remarks>
  74. <para>
  75. This function will be automatically called the first time you use any opengl function. There is
  76. </para>
  77. <para>
  78. Call this function manually whenever you need to update OpenGL entry points.
  79. This need may arise if you change the pixelformat/visual, or in case you cannot
  80. (or do not want) to use the automatic initialization of the GL class.
  81. </para>
  82. </remarks>
  83. </member>
  84. <member name="M:Tao.OpenGl.Gl.Load(System.String)">
  85. <summary>
  86. Tries to reload the given OpenGL function (core or extension).
  87. </summary>
  88. <param name="function">The name of the OpenGL function (i.e. glShaderSource)</param>
  89. <returns>True if the function was found and reloaded, false otherwise.</returns>
  90. <remarks>
  91. <para>
  92. Use this function if you require greater granularity when loading OpenGL entry points.
  93. </para>
  94. <para>
  95. While the automatic initialisation will load all OpenGL entry points, in some cases
  96. the initialisation can take place before an OpenGL Context has been established.
  97. In this case, use this function to load the entry points for the OpenGL functions
  98. you will need, or use ReloadFunctions() to load all available entry points.
  99. </para>
  100. <para>
  101. This function returns true if the given OpenGL function is supported, false otherwise.
  102. </para>
  103. <para>
  104. To query for supported extensions use the IsExtensionSupported() function instead.
  105. </para>
  106. </remarks>
  107. </member>
  108. <member name="M:Tao.OpenGl.Gl.BuildExtensionList">
  109. <summary>
  110. Builds a cache of all supported extensions.
  111. </summary>
  112. </member>
  113. <member name="M:Tao.OpenGl.Gl.GetAddress(System.String)">
  114. <summary>
  115. Retrieves the entry point for a dynamically exported OpenGL function.
  116. </summary>
  117. <param name="function">The function string for the OpenGL function (eg. "glNewList")</param>
  118. <returns>
  119. An IntPtr contaning the address for the entry point, or IntPtr.Zero if the specified
  120. OpenGL function is not dynamically exported.
  121. </returns>
  122. <remarks>
  123. <para>
  124. The Marshal.GetDelegateForFunctionPointer method can be used to turn the return value
  125. into a call-able delegate.
  126. </para>
  127. <para>
  128. This function is cross-platform. It determines the underlying platform and uses the
  129. correct wgl, glx or agl GetAddress function to retrieve the function pointer.
  130. </para>
  131. <see cref="M:System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer(System.IntPtr,System.Type)"/>
  132. </remarks>
  133. </member>
  134. <member name="M:Tao.OpenGl.Gl.DetectUnixKernel">
  135. <summary>
  136. Executes "uname" which returns a string representing the name of the
  137. underlying Unix kernel.
  138. </summary>
  139. <returns>"Unix", "Linux", "Darwin" or null.</returns>
  140. <remarks>Source code from "Mono: A Developer's Notebook"</remarks>
  141. </member>
  142. <member name="M:Tao.OpenGl.Gl.GetExtensionDelegate(System.String,System.Type)">
  143. <summary>
  144. Creates a System.Delegate that can be used to call a dynamically exported OpenGL function.
  145. </summary>
  146. <param name="name">The name of the OpenGL function (eg. "glNewList")</param>
  147. <param name="signature">The signature of the OpenGL function.</param>
  148. <returns>
  149. A System.Delegate that can be used to call this OpenGL function or null
  150. if the function is not available in the current OpenGL context.
  151. </returns>
  152. </member>
  153. <member name="T:Tao.OpenGl.Gl.Imports">
  154. <summary>
  155. Contains DllImports for the core OpenGL functions.
  156. </summary>
  157. </member>
  158. <member name="F:Tao.OpenGl.Gl.Imports.FunctionMap">
  159. <summary>
  160. Build a string->MethodInfo map to speed up extension loading.
  161. </summary>
  162. </member>
  163. <member name="T:Tao.OpenGl.OpenGLExtensionImport">
  164. <summary>
  165. </summary>
  166. </member>
  167. <member name="F:Tao.OpenGl.OpenGLExtensionImport.ExtensionName">
  168. <summary>
  169. </summary>
  170. </member>
  171. <member name="F:Tao.OpenGl.OpenGLExtensionImport.EntryPoint">
  172. <summary>
  173. </summary>
  174. </member>
  175. <member name="M:Tao.OpenGl.OpenGLExtensionImport.#ctor(System.String,System.String)">
  176. <summary>
  177. </summary>
  178. <param name="ExtensionName"></param>
  179. <param name="EntryPoint"></param>
  180. </member>
  181. <member name="T:Tao.OpenGl.GlExtensionLoader">
  182. <summary>
  183. </summary>
  184. </member>
  185. <member name="M:Tao.OpenGl.GlExtensionLoader.GetProcAddress(System.String)">
  186. <summary>
  187. </summary>
  188. <param name="s"></param>
  189. <returns></returns>
  190. </member>
  191. <member name="M:Tao.OpenGl.GlExtensionLoader.IsExtensionSupported(System.String)">
  192. <summary>
  193. Returns trueif the extension with the given name is supported
  194. in the global static context.
  195. </summary>
  196. <param name="extname">The extension name.</param>
  197. <returns></returns>
  198. </member>
  199. <member name="M:Tao.OpenGl.GlExtensionLoader.IsExtensionSupported(System.Object,System.String)">
  200. <summary>
  201. Returns true if the extension with the given name is supported
  202. in the given context.
  203. </summary>
  204. <param name="contextGl">The context which to query.</param>
  205. <param name="extname">The extension name.</param>
  206. <returns></returns>
  207. </member>
  208. <member name="M:Tao.OpenGl.GlExtensionLoader.LoadExtension(System.String)">
  209. <summary>
  210. Attempt to load the extension with the specified name into the
  211. global static context. Returns true on success.
  212. </summary>
  213. <param name="extname">The extension name.</param>
  214. <returns></returns>
  215. </member>
  216. <member name="M:Tao.OpenGl.GlExtensionLoader.LoadExtension(System.Object,System.String)">
  217. <summary>
  218. </summary>
  219. <param name="contextGl"></param>
  220. <param name="extname"></param>
  221. <returns></returns>
  222. </member>
  223. <member name="M:Tao.OpenGl.GlExtensionLoader.LoadExtension(System.Object,System.String,System.Boolean)">
  224. <summary>
  225. </summary>
  226. <param name="contextGl"></param>
  227. <param name="extname"></param>
  228. <param name="forceLoad"></param>
  229. <returns></returns>
  230. </member>
  231. <member name="M:Tao.OpenGl.GlExtensionLoader.LoadAllExtensions">
  232. <summary>
  233. </summary>
  234. </member>
  235. <member name="M:Tao.OpenGl.GlExtensionLoader.LoadAllExtensions(System.Object)">
  236. <summary>
  237. </summary>
  238. <param name="contextGl"></param>
  239. </member>
  240. <member name="T:Tao.OpenGl.Glu">
  241. <summary>
  242. GLU (OpenGL Utility) binding for .NET, implementing GLU 1.3.
  243. </summary>
  244. <remarks>
  245. <para>
  246. Binds functions and definitions in glu32.dll or libGLU.so.
  247. </para>
  248. <para>
  249. The OpenGL Utility (GLU) library contains several groups of functions that
  250. complement the core OpenGL interface by providing support for auxiliary features.
  251. These features include: mipmapping, matrix manipulation, polygon tessellation,
  252. quadrics, NURBS, and error handling.
  253. </para>
  254. <para>
  255. Mipmapping routines include image scaling and automatic mipmap generation. A
  256. variety of matrix manipulation functions build projection and viewing matrices,
  257. or project vertices from one coordinate system to another. Polygon tessellation
  258. routines convert concave polygons into triangles for easy rendering. Quadrics
  259. support renders a few basic quadrics such as spheres and cones. NURBS code maps
  260. complicated NURBS curves and trimmed surfaces into simpler OpenGL evaluators.
  261. Lastly, an error lookup routine translates OpenGL and GLU error codes into
  262. strings. GLU library routines may call OpenGL library routines. Thus, an OpenGL
  263. context should be made current before calling any GLU functions. Otherwise an
  264. OpenGL error may occur.
  265. </para>
  266. <para>
  267. These utility functions make use of core OpenGL functions, so any OpenGL
  268. implementation is guaranteed to support the utility functions.
  269. </para>
  270. </remarks>
  271. </member>
  272. <member name="F:Tao.OpenGl.Glu.CALLING_CONVENTION">
  273. <summary>
  274. Specifies the calling convention.
  275. </summary>
  276. <remarks>
  277. Specifies <see cref="F:System.Runtime.InteropServices.CallingConvention.Winapi"/> for Windows and
  278. Linux, to indicate that the default should be used.
  279. </remarks>
  280. </member>
  281. <member name="F:Tao.OpenGl.Glu.GLU_VERSION_1_1">
  282. <summary>
  283. GLU API revision.
  284. </summary>
  285. <remarks>
  286. Specifies GLU 1.1.
  287. </remarks>
  288. </member>
  289. <member name="F:Tao.OpenGl.Glu.GLU_VERSION_1_2">
  290. <summary>
  291. GLU API revision.
  292. </summary>
  293. <remarks>
  294. Specifies GLU 1.2.
  295. </remarks>
  296. </member>
  297. <member name="F:Tao.OpenGl.Glu.GLU_VERSION_1_3">
  298. <summary>
  299. GLU API revision.
  300. </summary>
  301. <remarks>
  302. Specifies GLU 1.3.
  303. </remarks>
  304. </member>
  305. <member name="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM">
  306. <summary>
  307. Unknown. Unable to locate definitive documentation on this constant.
  308. </summary>
  309. </member>
  310. <member name="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE">
  311. <summary>
  312. Unknown. Unable to locate definitive documentation on this constant.
  313. </summary>
  314. </member>
  315. <member name="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY">
  316. <summary>
  317. Unknown. Unable to locate definitive documentation on this constant.
  318. </summary>
  319. </member>
  320. <member name="F:Tao.OpenGl.Glu.GLU_INCOMPATIBLE_GL_VERSION">
  321. <summary>
  322. Unknown. Unable to locate definitive documentation on this constant.
  323. </summary>
  324. </member>
  325. <member name="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION">
  326. <summary>
  327. Unknown. Unable to locate definitive documentation on this constant.
  328. </summary>
  329. </member>
  330. <member name="F:Tao.OpenGl.Glu.GLU_VERSION">
  331. <summary>
  332. Unknown. Unable to locate definitive documentation on this constant.
  333. </summary>
  334. </member>
  335. <member name="F:Tao.OpenGl.Glu.GLU_EXTENSIONS">
  336. <summary>
  337. Unknown. Unable to locate definitive documentation on this constant.
  338. </summary>
  339. </member>
  340. <member name="F:Tao.OpenGl.Glu.GLU_TRUE">
  341. <summary>
  342. Unknown. Unable to locate definitive documentation on this constant.
  343. </summary>
  344. </member>
  345. <member name="F:Tao.OpenGl.Glu.GLU_FALSE">
  346. <summary>
  347. Unknown. Unable to locate definitive documentation on this constant.
  348. </summary>
  349. </member>
  350. <member name="F:Tao.OpenGl.Glu.GLU_SMOOTH">
  351. <summary>
  352. Unknown. Unable to locate definitive documentation on this constant.
  353. </summary>
  354. </member>
  355. <member name="F:Tao.OpenGl.Glu.GLU_FLAT">
  356. <summary>
  357. Unknown. Unable to locate definitive documentation on this constant.
  358. </summary>
  359. </member>
  360. <member name="F:Tao.OpenGl.Glu.GLU_NONE">
  361. <summary>
  362. Unknown. Unable to locate definitive documentation on this constant.
  363. </summary>
  364. </member>
  365. <member name="F:Tao.OpenGl.Glu.GLU_POINT">
  366. <summary>
  367. Unknown. Unable to locate definitive documentation on this constant.
  368. </summary>
  369. </member>
  370. <member name="F:Tao.OpenGl.Glu.GLU_LINE">
  371. <summary>
  372. Unknown. Unable to locate definitive documentation on this constant.
  373. </summary>
  374. </member>
  375. <member name="F:Tao.OpenGl.Glu.GLU_FILL">
  376. <summary>
  377. Unknown. Unable to locate definitive documentation on this constant.
  378. </summary>
  379. </member>
  380. <member name="F:Tao.OpenGl.Glu.GLU_SILHOUETTE">
  381. <summary>
  382. Unknown. Unable to locate definitive documentation on this constant.
  383. </summary>
  384. </member>
  385. <member name="F:Tao.OpenGl.Glu.GLU_OUTSIDE">
  386. <summary>
  387. Unknown. Unable to locate definitive documentation on this constant.
  388. </summary>
  389. </member>
  390. <member name="F:Tao.OpenGl.Glu.GLU_INSIDE">
  391. <summary>
  392. Unknown. Unable to locate definitive documentation on this constant.
  393. </summary>
  394. </member>
  395. <member name="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD">
  396. <summary>
  397. Unknown. Unable to locate definitive documentation on this constant.
  398. </summary>
  399. </member>
  400. <member name="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_RULE">
  401. <summary>
  402. Unknown. Unable to locate definitive documentation on this constant.
  403. </summary>
  404. </member>
  405. <member name="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY">
  406. <summary>
  407. Unknown. Unable to locate definitive documentation on this constant.
  408. </summary>
  409. </member>
  410. <member name="F:Tao.OpenGl.Glu.GLU_TESS_TOLERANCE">
  411. <summary>
  412. Unknown. Unable to locate definitive documentation on this constant.
  413. </summary>
  414. </member>
  415. <member name="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_ODD">
  416. <summary>
  417. Unknown. Unable to locate definitive documentation on this constant.
  418. </summary>
  419. </member>
  420. <member name="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_NONZERO">
  421. <summary>
  422. Unknown. Unable to locate definitive documentation on this constant.
  423. </summary>
  424. </member>
  425. <member name="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_POSITIVE">
  426. <summary>
  427. Unknown. Unable to locate definitive documentation on this constant.
  428. </summary>
  429. </member>
  430. <member name="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_NEGATIVE">
  431. <summary>
  432. Unknown. Unable to locate definitive documentation on this constant.
  433. </summary>
  434. </member>
  435. <member name="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_ABS_GEQ_TWO">
  436. <summary>
  437. Unknown. Unable to locate definitive documentation on this constant.
  438. </summary>
  439. </member>
  440. <member name="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN">
  441. <summary>
  442. Unknown. Unable to locate definitive documentation on this constant.
  443. </summary>
  444. </member>
  445. <member name="F:Tao.OpenGl.Glu.GLU_BEGIN">
  446. <summary>
  447. Unknown. Unable to locate definitive documentation on this constant.
  448. </summary>
  449. </member>
  450. <member name="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX">
  451. <summary>
  452. Unknown. Unable to locate definitive documentation on this constant.
  453. </summary>
  454. </member>
  455. <member name="F:Tao.OpenGl.Glu.GLU_VERTEX">
  456. <summary>
  457. Unknown. Unable to locate definitive documentation on this constant.
  458. </summary>
  459. </member>
  460. <member name="F:Tao.OpenGl.Glu.GLU_TESS_END">
  461. <summary>
  462. Unknown. Unable to locate definitive documentation on this constant.
  463. </summary>
  464. </member>
  465. <member name="F:Tao.OpenGl.Glu.GLU_END">
  466. <summary>
  467. Unknown. Unable to locate definitive documentation on this constant.
  468. </summary>
  469. </member>
  470. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR">
  471. <summary>
  472. Unknown. Unable to locate definitive documentation on this constant.
  473. </summary>
  474. </member>
  475. <member name="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG">
  476. <summary>
  477. Unknown. Unable to locate definitive documentation on this constant.
  478. </summary>
  479. </member>
  480. <member name="F:Tao.OpenGl.Glu.GLU_EDGE_FLAG">
  481. <summary>
  482. Unknown. Unable to locate definitive documentation on this constant.
  483. </summary>
  484. </member>
  485. <member name="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE">
  486. <summary>
  487. Unknown. Unable to locate definitive documentation on this constant.
  488. </summary>
  489. </member>
  490. <member name="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA">
  491. <summary>
  492. Unknown. Unable to locate definitive documentation on this constant.
  493. </summary>
  494. </member>
  495. <member name="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA">
  496. <summary>
  497. Unknown. Unable to locate definitive documentation on this constant.
  498. </summary>
  499. </member>
  500. <member name="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA">
  501. <summary>
  502. Unknown. Unable to locate definitive documentation on this constant.
  503. </summary>
  504. </member>
  505. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA">
  506. <summary>
  507. Unknown. Unable to locate definitive documentation on this constant.
  508. </summary>
  509. </member>
  510. <member name="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA">
  511. <summary>
  512. Unknown. Unable to locate definitive documentation on this constant.
  513. </summary>
  514. </member>
  515. <member name="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA">
  516. <summary>
  517. Unknown. Unable to locate definitive documentation on this constant.
  518. </summary>
  519. </member>
  520. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR1">
  521. <summary>
  522. Unknown. Unable to locate definitive documentation on this constant.
  523. </summary>
  524. </member>
  525. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR2">
  526. <summary>
  527. Unknown. Unable to locate definitive documentation on this constant.
  528. </summary>
  529. </member>
  530. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR3">
  531. <summary>
  532. Unknown. Unable to locate definitive documentation on this constant.
  533. </summary>
  534. </member>
  535. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR4">
  536. <summary>
  537. Unknown. Unable to locate definitive documentation on this constant.
  538. </summary>
  539. </member>
  540. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR5">
  541. <summary>
  542. Unknown. Unable to locate definitive documentation on this constant.
  543. </summary>
  544. </member>
  545. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR6">
  546. <summary>
  547. Unknown. Unable to locate definitive documentation on this constant.
  548. </summary>
  549. </member>
  550. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR7">
  551. <summary>
  552. Unknown. Unable to locate definitive documentation on this constant.
  553. </summary>
  554. </member>
  555. <member name="F:Tao.OpenGl.Glu.GLU_TESS_ERROR8">
  556. <summary>
  557. Unknown. Unable to locate definitive documentation on this constant.
  558. </summary>
  559. </member>
  560. <member name="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON">
  561. <summary>
  562. Unknown. Unable to locate definitive documentation on this constant.
  563. </summary>
  564. </member>
  565. <member name="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR">
  566. <summary>
  567. Unknown. Unable to locate definitive documentation on this constant.
  568. </summary>
  569. </member>
  570. <member name="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON">
  571. <summary>
  572. Unknown. Unable to locate definitive documentation on this constant.
  573. </summary>
  574. </member>
  575. <member name="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR">
  576. <summary>
  577. Unknown. Unable to locate definitive documentation on this constant.
  578. </summary>
  579. </member>
  580. <member name="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE">
  581. <summary>
  582. Unknown. Unable to locate definitive documentation on this constant.
  583. </summary>
  584. </member>
  585. <member name="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK">
  586. <summary>
  587. Unknown. Unable to locate definitive documentation on this constant.
  588. </summary>
  589. </member>
  590. <member name="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX">
  591. <summary>
  592. Unknown. Unable to locate definitive documentation on this constant.
  593. </summary>
  594. </member>
  595. <member name="F:Tao.OpenGl.Glu.GLU_CULLING">
  596. <summary>
  597. Unknown. Unable to locate definitive documentation on this constant.
  598. </summary>
  599. </member>
  600. <member name="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE">
  601. <summary>
  602. Unknown. Unable to locate definitive documentation on this constant.
  603. </summary>
  604. </member>
  605. <member name="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE">
  606. <summary>
  607. Unknown. Unable to locate definitive documentation on this constant.
  608. </summary>
  609. </member>
  610. <member name="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE">
  611. <summary>
  612. Unknown. Unable to locate definitive documentation on this constant.
  613. </summary>
  614. </member>
  615. <member name="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD">
  616. <summary>
  617. Unknown. Unable to locate definitive documentation on this constant.
  618. </summary>
  619. </member>
  620. <member name="F:Tao.OpenGl.Glu.GLU_U_STEP">
  621. <summary>
  622. Unknown. Unable to locate definitive documentation on this constant.
  623. </summary>
  624. </member>
  625. <member name="F:Tao.OpenGl.Glu.GLU_V_STEP">
  626. <summary>
  627. Unknown. Unable to locate definitive documentation on this constant.
  628. </summary>
  629. </member>
  630. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_MODE">
  631. <summary>
  632. Unknown. Unable to locate definitive documentation on this constant.
  633. </summary>
  634. </member>
  635. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_MODE_EXT">
  636. <summary>
  637. Unknown. Unable to locate definitive documentation on this constant.
  638. </summary>
  639. </member>
  640. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR">
  641. <summary>
  642. Unknown. Unable to locate definitive documentation on this constant.
  643. </summary>
  644. </member>
  645. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR_EXT">
  646. <summary>
  647. Unknown. Unable to locate definitive documentation on this constant.
  648. </summary>
  649. </member>
  650. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_RENDERER">
  651. <summary>
  652. Unknown. Unable to locate definitive documentation on this constant.
  653. </summary>
  654. </member>
  655. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_RENDERER_EXT">
  656. <summary>
  657. Unknown. Unable to locate definitive documentation on this constant.
  658. </summary>
  659. </member>
  660. <member name="F:Tao.OpenGl.Glu.GLU_OBJECT_PARAMETRIC_ERROR">
  661. <summary>
  662. Unknown. Unable to locate definitive documentation on this constant.
  663. </summary>
  664. </member>
  665. <member name="F:Tao.OpenGl.Glu.GLU_OBJECT_PARAMETRIC_ERROR_EXT">
  666. <summary>
  667. Unknown. Unable to locate definitive documentation on this constant.
  668. </summary>
  669. </member>
  670. <member name="F:Tao.OpenGl.Glu.GLU_OBJECT_PATH_LENGTH">
  671. <summary>
  672. Unknown. Unable to locate definitive documentation on this constant.
  673. </summary>
  674. </member>
  675. <member name="F:Tao.OpenGl.Glu.GLU_OBJECT_PATH_LENGTH_EXT">
  676. <summary>
  677. Unknown. Unable to locate definitive documentation on this constant.
  678. </summary>
  679. </member>
  680. <member name="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH">
  681. <summary>
  682. Unknown. Unable to locate definitive documentation on this constant.
  683. </summary>
  684. </member>
  685. <member name="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_ERROR">
  686. <summary>
  687. Unknown. Unable to locate definitive documentation on this constant.
  688. </summary>
  689. </member>
  690. <member name="F:Tao.OpenGl.Glu.GLU_DOMAIN_DISTANCE">
  691. <summary>
  692. Unknown. Unable to locate definitive documentation on this constant.
  693. </summary>
  694. </member>
  695. <member name="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2">
  696. <summary>
  697. Unknown. Unable to locate definitive documentation on this constant.
  698. </summary>
  699. </member>
  700. <member name="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3">
  701. <summary>
  702. Unknown. Unable to locate definitive documentation on this constant.
  703. </summary>
  704. </member>
  705. <member name="F:Tao.OpenGl.Glu.GLU_OUTLINE_POLYGON">
  706. <summary>
  707. Unknown. Unable to locate definitive documentation on this constant.
  708. </summary>
  709. </member>
  710. <member name="F:Tao.OpenGl.Glu.GLU_OUTLINE_PATCH">
  711. <summary>
  712. Unknown. Unable to locate definitive documentation on this constant.
  713. </summary>
  714. </member>
  715. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR">
  716. <summary>
  717. Unknown. Unable to locate definitive documentation on this constant.
  718. </summary>
  719. </member>
  720. <member name="F:Tao.OpenGl.Glu.GLU_ERROR">
  721. <summary>
  722. Unknown. Unable to locate definitive documentation on this constant.
  723. </summary>
  724. </member>
  725. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN">
  726. <summary>
  727. Unknown. Unable to locate definitive documentation on this constant.
  728. </summary>
  729. </member>
  730. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_EXT">
  731. <summary>
  732. Unknown. Unable to locate definitive documentation on this constant.
  733. </summary>
  734. </member>
  735. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX">
  736. <summary>
  737. Unknown. Unable to locate definitive documentation on this constant.
  738. </summary>
  739. </member>
  740. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_EXT">
  741. <summary>
  742. Unknown. Unable to locate definitive documentation on this constant.
  743. </summary>
  744. </member>
  745. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL">
  746. <summary>
  747. Unknown. Unable to locate definitive documentation on this constant.
  748. </summary>
  749. </member>
  750. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_EXT">
  751. <summary>
  752. Unknown. Unable to locate definitive documentation on this constant.
  753. </summary>
  754. </member>
  755. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR">
  756. <summary>
  757. Unknown. Unable to locate definitive documentation on this constant.
  758. </summary>
  759. </member>
  760. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_EXT">
  761. <summary>
  762. Unknown. Unable to locate definitive documentation on this constant.
  763. </summary>
  764. </member>
  765. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD">
  766. <summary>
  767. Unknown. Unable to locate definitive documentation on this constant.
  768. </summary>
  769. </member>
  770. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_TEX_COORD_EXT">
  771. <summary>
  772. Unknown. Unable to locate definitive documentation on this constant.
  773. </summary>
  774. </member>
  775. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_END">
  776. <summary>
  777. Unknown. Unable to locate definitive documentation on this constant.
  778. </summary>
  779. </member>
  780. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_END_EXT">
  781. <summary>
  782. Unknown. Unable to locate definitive documentation on this constant.
  783. </summary>
  784. </member>
  785. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA">
  786. <summary>
  787. Unknown. Unable to locate definitive documentation on this constant.
  788. </summary>
  789. </member>
  790. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA_EXT">
  791. <summary>
  792. Unknown. Unable to locate definitive documentation on this constant.
  793. </summary>
  794. </member>
  795. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA">
  796. <summary>
  797. Unknown. Unable to locate definitive documentation on this constant.
  798. </summary>
  799. </member>
  800. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA_EXT">
  801. <summary>
  802. Unknown. Unable to locate definitive documentation on this constant.
  803. </summary>
  804. </member>
  805. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA">
  806. <summary>
  807. Unknown. Unable to locate definitive documentation on this constant.
  808. </summary>
  809. </member>
  810. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA_EXT">
  811. <summary>
  812. Unknown. Unable to locate definitive documentation on this constant.
  813. </summary>
  814. </member>
  815. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA">
  816. <summary>
  817. Unknown. Unable to locate definitive documentation on this constant.
  818. </summary>
  819. </member>
  820. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA_EXT">
  821. <summary>
  822. Unknown. Unable to locate definitive documentation on this constant.
  823. </summary>
  824. </member>
  825. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA">
  826. <summary>
  827. Unknown. Unable to locate definitive documentation on this constant.
  828. </summary>
  829. </member>
  830. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_TEX_COORD_DATA_EXT">
  831. <summary>
  832. Unknown. Unable to locate definitive documentation on this constant.
  833. </summary>
  834. </member>
  835. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA">
  836. <summary>
  837. Unknown. Unable to locate definitive documentation on this constant.
  838. </summary>
  839. </member>
  840. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA_EXT">
  841. <summary>
  842. Unknown. Unable to locate definitive documentation on this constant.
  843. </summary>
  844. </member>
  845. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1">
  846. <summary>
  847. Unknown. Unable to locate definitive documentation on this constant.
  848. </summary>
  849. </member>
  850. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR2">
  851. <summary>
  852. Unknown. Unable to locate definitive documentation on this constant.
  853. </summary>
  854. </member>
  855. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR3">
  856. <summary>
  857. Unknown. Unable to locate definitive documentation on this constant.
  858. </summary>
  859. </member>
  860. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR4">
  861. <summary>
  862. Unknown. Unable to locate definitive documentation on this constant.
  863. </summary>
  864. </member>
  865. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR5">
  866. <summary>
  867. Unknown. Unable to locate definitive documentation on this constant.
  868. </summary>
  869. </member>
  870. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR6">
  871. <summary>
  872. Unknown. Unable to locate definitive documentation on this constant.
  873. </summary>
  874. </member>
  875. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR7">
  876. <summary>
  877. Unknown. Unable to locate definitive documentation on this constant.
  878. </summary>
  879. </member>
  880. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR8">
  881. <summary>
  882. Unknown. Unable to locate definitive documentation on this constant.
  883. </summary>
  884. </member>
  885. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR9">
  886. <summary>
  887. Unknown. Unable to locate definitive documentation on this constant.
  888. </summary>
  889. </member>
  890. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR10">
  891. <summary>
  892. Unknown. Unable to locate definitive documentation on this constant.
  893. </summary>
  894. </member>
  895. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR11">
  896. <summary>
  897. Unknown. Unable to locate definitive documentation on this constant.
  898. </summary>
  899. </member>
  900. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR12">
  901. <summary>
  902. Unknown. Unable to locate definitive documentation on this constant.
  903. </summary>
  904. </member>
  905. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR13">
  906. <summary>
  907. Unknown. Unable to locate definitive documentation on this constant.
  908. </summary>
  909. </member>
  910. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR14">
  911. <summary>
  912. Unknown. Unable to locate definitive documentation on this constant.
  913. </summary>
  914. </member>
  915. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR15">
  916. <summary>
  917. Unknown. Unable to locate definitive documentation on this constant.
  918. </summary>
  919. </member>
  920. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR16">
  921. <summary>
  922. Unknown. Unable to locate definitive documentation on this constant.
  923. </summary>
  924. </member>
  925. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR17">
  926. <summary>
  927. Unknown. Unable to locate definitive documentation on this constant.
  928. </summary>
  929. </member>
  930. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR18">
  931. <summary>
  932. Unknown. Unable to locate definitive documentation on this constant.
  933. </summary>
  934. </member>
  935. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR19">
  936. <summary>
  937. Unknown. Unable to locate definitive documentation on this constant.
  938. </summary>
  939. </member>
  940. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR20">
  941. <summary>
  942. Unknown. Unable to locate definitive documentation on this constant.
  943. </summary>
  944. </member>
  945. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR21">
  946. <summary>
  947. Unknown. Unable to locate definitive documentation on this constant.
  948. </summary>
  949. </member>
  950. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR22">
  951. <summary>
  952. Unknown. Unable to locate definitive documentation on this constant.
  953. </summary>
  954. </member>
  955. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR23">
  956. <summary>
  957. Unknown. Unable to locate definitive documentation on this constant.
  958. </summary>
  959. </member>
  960. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR24">
  961. <summary>
  962. Unknown. Unable to locate definitive documentation on this constant.
  963. </summary>
  964. </member>
  965. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR25">
  966. <summary>
  967. Unknown. Unable to locate definitive documentation on this constant.
  968. </summary>
  969. </member>
  970. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR26">
  971. <summary>
  972. Unknown. Unable to locate definitive documentation on this constant.
  973. </summary>
  974. </member>
  975. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR27">
  976. <summary>
  977. Unknown. Unable to locate definitive documentation on this constant.
  978. </summary>
  979. </member>
  980. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR28">
  981. <summary>
  982. Unknown. Unable to locate definitive documentation on this constant.
  983. </summary>
  984. </member>
  985. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR29">
  986. <summary>
  987. Unknown. Unable to locate definitive documentation on this constant.
  988. </summary>
  989. </member>
  990. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR30">
  991. <summary>
  992. Unknown. Unable to locate definitive documentation on this constant.
  993. </summary>
  994. </member>
  995. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR31">
  996. <summary>
  997. Unknown. Unable to locate definitive documentation on this constant.
  998. </summary>
  999. </member>
  1000. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR32">
  1001. <summary>
  1002. Unknown. Unable to locate definitive documentation on this constant.
  1003. </summary>
  1004. </member>
  1005. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR33">
  1006. <summary>
  1007. Unknown. Unable to locate definitive documentation on this constant.
  1008. </summary>
  1009. </member>
  1010. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR34">
  1011. <summary>
  1012. Unknown. Unable to locate definitive documentation on this constant.
  1013. </summary>
  1014. </member>
  1015. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR35">
  1016. <summary>
  1017. Unknown. Unable to locate definitive documentation on this constant.
  1018. </summary>
  1019. </member>
  1020. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR36">
  1021. <summary>
  1022. Unknown. Unable to locate definitive documentation on this constant.
  1023. </summary>
  1024. </member>
  1025. <member name="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37">
  1026. <summary>
  1027. Unknown. Unable to locate definitive documentation on this constant.
  1028. </summary>
  1029. </member>
  1030. <member name="F:Tao.OpenGl.Glu.GLU_CW">
  1031. <summary>
  1032. Unknown. Unable to locate definitive documentation on this constant.
  1033. </summary>
  1034. </member>
  1035. <member name="F:Tao.OpenGl.Glu.GLU_CCW">
  1036. <summary>
  1037. Unknown. Unable to locate definitive documentation on this constant.
  1038. </summary>
  1039. </member>
  1040. <member name="F:Tao.OpenGl.Glu.GLU_INTERIOR">
  1041. <summary>
  1042. Unknown. Unable to locate definitive documentation on this constant.
  1043. </summary>
  1044. </member>
  1045. <member name="F:Tao.OpenGl.Glu.GLU_EXTERIOR">
  1046. <summary>
  1047. Unknown. Unable to locate definitive documentation on this constant.
  1048. </summary>
  1049. </member>
  1050. <member name="F:Tao.OpenGl.Glu.GLU_UNKNOWN">
  1051. <summary>
  1052. Unknown. Unable to locate definitive documentation on this constant.
  1053. </summary>
  1054. </member>
  1055. <member name="F:Tao.OpenGl.Glu.GLU_EXT_object_space_tess">
  1056. <summary>
  1057. Unknown. Unable to locate definitive documentation on this constant.
  1058. </summary>
  1059. </member>
  1060. <member name="F:Tao.OpenGl.Glu.GLU_EXT_nurbs_tessellator">
  1061. <summary>
  1062. Unknown. Unable to locate definitive documentation on this constant.
  1063. </summary>
  1064. </member>
  1065. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)">
  1066. <summary>
  1067. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1068. </summary>
  1069. <remarks>
  1070. <b>This method is not CLS-compliant due to naming conventions.</b>
  1071. </remarks>
  1072. </member>
  1073. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginDataCallback)">
  1074. <summary>
  1075. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1076. </summary>
  1077. <remarks>
  1078. <b>This method is not CLS-compliant due to naming conventions.</b>
  1079. </remarks>
  1080. </member>
  1081. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsColorCallback)">
  1082. <summary>
  1083. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1084. </summary>
  1085. <remarks>
  1086. <b>This method is not CLS-compliant due to naming conventions.</b>
  1087. </remarks>
  1088. </member>
  1089. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsColorDataCallback)">
  1090. <summary>
  1091. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1092. </summary>
  1093. <remarks>
  1094. <b>This method is not CLS-compliant due to naming conventions.</b>
  1095. </remarks>
  1096. </member>
  1097. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsEndCallback)">
  1098. <summary>
  1099. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1100. </summary>
  1101. <remarks>
  1102. <b>This method is not CLS-compliant due to naming conventions.</b>
  1103. </remarks>
  1104. </member>
  1105. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsEndDataCallback)">
  1106. <summary>
  1107. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1108. </summary>
  1109. <remarks>
  1110. <b>This method is not CLS-compliant due to naming conventions.</b>
  1111. </remarks>
  1112. </member>
  1113. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsErrorCallback)">
  1114. <summary>
  1115. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1116. </summary>
  1117. <remarks>
  1118. <b>This method is not CLS-compliant due to naming conventions.</b>
  1119. </remarks>
  1120. </member>
  1121. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsNormalCallback)">
  1122. <summary>
  1123. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1124. </summary>
  1125. <remarks>
  1126. <b>This method is not CLS-compliant due to naming conventions.</b>
  1127. </remarks>
  1128. </member>
  1129. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsNormalDataCallback)">
  1130. <summary>
  1131. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1132. </summary>
  1133. <remarks>
  1134. <b>This method is not CLS-compliant due to naming conventions.</b>
  1135. </remarks>
  1136. </member>
  1137. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsTexCoordCallback)">
  1138. <summary>
  1139. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1140. </summary>
  1141. <remarks>
  1142. <b>This method is not CLS-compliant due to naming conventions.</b>
  1143. </remarks>
  1144. </member>
  1145. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsTexCoordDataCallback)">
  1146. <summary>
  1147. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1148. </summary>
  1149. <remarks>
  1150. <b>This method is not CLS-compliant due to naming conventions.</b>
  1151. </remarks>
  1152. </member>
  1153. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsVertexCallback)">
  1154. <summary>
  1155. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1156. </summary>
  1157. <remarks>
  1158. <b>This method is not CLS-compliant due to naming conventions.</b>
  1159. </remarks>
  1160. </member>
  1161. <member name="M:Tao.OpenGl.Glu.__gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsVertexDataCallback)">
  1162. <summary>
  1163. Called from <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  1164. </summary>
  1165. <remarks>
  1166. <b>This method is not CLS-compliant due to naming conventions.</b>
  1167. </remarks>
  1168. </member>
  1169. <member name="M:Tao.OpenGl.Glu.__gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)">
  1170. <summary>
  1171. Called from <see cref="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)"/>.
  1172. </summary>
  1173. <remarks>
  1174. <b>This method is not CLS-compliant due to naming conventions.</b>
  1175. </remarks>
  1176. </member>
  1177. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)">
  1178. <summary>
  1179. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1180. </summary>
  1181. <remarks>
  1182. <b>This method is not CLS-compliant due to naming conventions.</b>
  1183. </remarks>
  1184. </member>
  1185. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginDataCallback)">
  1186. <summary>
  1187. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1188. </summary>
  1189. <remarks>
  1190. <b>This method is not CLS-compliant due to naming conventions.</b>
  1191. </remarks>
  1192. </member>
  1193. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessCombineCallback)">
  1194. <summary>
  1195. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1196. </summary>
  1197. <remarks>
  1198. <b>This method is not CLS-compliant due to naming conventions.</b>
  1199. </remarks>
  1200. </member>
  1201. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessCombineCallback1)">
  1202. <summary>
  1203. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1204. </summary>
  1205. <remarks>
  1206. <b>This method is not CLS-compliant due to naming conventions.</b>
  1207. </remarks>
  1208. </member>
  1209. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessCombineDataCallback)">
  1210. <summary>
  1211. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1212. </summary>
  1213. <remarks>
  1214. <b>This method is not CLS-compliant due to naming conventions.</b>
  1215. </remarks>
  1216. </member>
  1217. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEdgeFlagCallback)">
  1218. <summary>
  1219. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1220. </summary>
  1221. <remarks>
  1222. <b>This method is not CLS-compliant due to naming conventions.</b>
  1223. </remarks>
  1224. </member>
  1225. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEdgeFlagDataCallback)">
  1226. <summary>
  1227. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1228. </summary>
  1229. <remarks>
  1230. <b>This method is not CLS-compliant due to naming conventions.</b>
  1231. </remarks>
  1232. </member>
  1233. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEndCallback)">
  1234. <summary>
  1235. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1236. </summary>
  1237. <remarks>
  1238. <b>This method is not CLS-compliant due to naming conventions.</b>
  1239. </remarks>
  1240. </member>
  1241. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEndDataCallback)">
  1242. <summary>
  1243. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1244. </summary>
  1245. <remarks>
  1246. <b>This method is not CLS-compliant due to naming conventions.</b>
  1247. </remarks>
  1248. </member>
  1249. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessErrorCallback)">
  1250. <summary>
  1251. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1252. </summary>
  1253. <remarks>
  1254. <b>This method is not CLS-compliant due to naming conventions.</b>
  1255. </remarks>
  1256. </member>
  1257. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessErrorDataCallback)">
  1258. <summary>
  1259. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1260. </summary>
  1261. <remarks>
  1262. <b>This method is not CLS-compliant due to naming conventions.</b>
  1263. </remarks>
  1264. </member>
  1265. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessVertexCallback)">
  1266. <summary>
  1267. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1268. </summary>
  1269. <remarks>
  1270. <b>This method is not CLS-compliant due to naming conventions.</b>
  1271. </remarks>
  1272. </member>
  1273. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessVertexCallback1)">
  1274. <summary>
  1275. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1276. </summary>
  1277. <remarks>
  1278. <b>This method is not CLS-compliant due to naming conventions.</b>
  1279. </remarks>
  1280. </member>
  1281. <member name="M:Tao.OpenGl.Glu.__gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessVertexDataCallback)">
  1282. <summary>
  1283. Called from <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  1284. </summary>
  1285. <remarks>
  1286. <b>This method is not CLS-compliant due to naming conventions.</b>
  1287. </remarks>
  1288. </member>
  1289. <member name="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)">
  1290. <summary>
  1291. Delimits a Non-Uniform Rational B-Spline (NURBS) curve definition.
  1292. </summary>
  1293. <param name="nurb">
  1294. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  1295. </param>
  1296. <remarks>
  1297. <para>
  1298. Use <b>gluBeginCurve</b> to mark the beginning of a NURBS curve definition.
  1299. After calling <b>gluBeginCurve</b>, make one or more calls to
  1300. <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/> to define the attributes of the curve. Exactly
  1301. one of the calls to <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/> must have a curve type of
  1302. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_4"/>. To
  1303. mark the end of the NURBS curve definition, call <see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/>.
  1304. </para>
  1305. <para>
  1306. OpenGL evaluators are used to render the NURBS curve as a series of line
  1307. segments. Evaluator state is preserved during rendering with
  1308. <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib</c>. For
  1309. information on exactly what state these calls preserve, see
  1310. <see cref="M:Tao.OpenGl.Gl.glPushAttrib(System.Int32)"/>.
  1311. </para>
  1312. <para>
  1313. <b>EXAMPLE</b>
  1314. </para>
  1315. <para>
  1316. The following commands render a textured NURBS curve with normals; texture
  1317. coordinates and normals are also specified as NURBS curves:
  1318. </para>
  1319. <para>
  1320. <code>
  1321. Glu.gluBeginCurve(nobj);
  1322. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
  1323. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
  1324. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
  1325. Glu.gluEndCurve(nobj);
  1326. </code>
  1327. </para>
  1328. </remarks>
  1329. <seealso cref="M:Tao.OpenGl.Gl.glPopAttrib"/>
  1330. <seealso cref="M:Tao.OpenGl.Gl.glPushAttrib(System.Int32)"/>
  1331. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  1332. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  1333. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  1334. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  1335. </member>
  1336. <member name="M:Tao.OpenGl.Glu.gluBeginPolygon(Tao.OpenGl.Glu.GLUtesselator)">
  1337. <summary>
  1338. Delimits a polygon description.
  1339. </summary>
  1340. <param name="tess">
  1341. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  1342. </param>
  1343. <remarks>
  1344. <para>
  1345. <b>gluBeginPolygon</b> delimits the definition of a nonconvex polygon. To
  1346. define such a polygon, first call <b>gluBeginPolygon</b>. Then define the
  1347. contours of the polygon by calling <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> for each
  1348. vertex and <see cref="M:Tao.OpenGl.Glu.gluNextContour(Tao.OpenGl.Glu.GLUtesselator,System.Int32)"/> to start each new contour. Finally,
  1349. call <see cref="M:Tao.OpenGl.Glu.gluEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> to signal the end of the definition. See
  1350. the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> and <see cref="M:Tao.OpenGl.Glu.gluNextContour(Tao.OpenGl.Glu.GLUtesselator,System.Int32)"/> reference
  1351. pages for more details.
  1352. </para>
  1353. <para>
  1354. Once <see cref="M:Tao.OpenGl.Glu.gluEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated, and
  1355. the resulting triangles are described through callbacks. See
  1356. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  1357. </para>
  1358. <para>
  1359. <b>NOTES</b>
  1360. </para>
  1361. <para>
  1362. This command is obsolete and is provided for backward compatibility only.
  1363. Calls to <b>gluBeginPolygon</b> are mapped to
  1364. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> followed by
  1365. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Calls to <see cref="M:Tao.OpenGl.Glu.gluEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  1366. are mapped to <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/> followed by
  1367. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>.
  1368. </para>
  1369. <para>
  1370. <b>EXAMPLE</b>
  1371. </para>
  1372. <para>
  1373. A quadrilateral with a triangular hole in it can be described like this:
  1374. </para>
  1375. <para>
  1376. <code>
  1377. Glu.gluBeginPolygon(tobj);
  1378. Glu.gluTessVertex(tobj, v1, v1);
  1379. Glu.gluTessVertex(tobj, v2, v2);
  1380. Glu.gluTessVertex(tobj, v3, v3);
  1381. Glu.gluTessVertex(tobj, v4, v4);
  1382. Glu.gluNextContour(tobj, Glu.GLU_INTERIOR);
  1383. Glu.gluTessVertex(tobj, v5, v5);
  1384. Glu.gluTessVertex(tobj, v6, v6);
  1385. Glu.gluTessVertex(tobj, v7, v7);
  1386. Glu.gluEndPolygon(tobj);
  1387. </code>
  1388. </para>
  1389. </remarks>
  1390. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  1391. <seealso cref="M:Tao.OpenGl.Glu.gluNextContour(Tao.OpenGl.Glu.GLUtesselator,System.Int32)"/>
  1392. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  1393. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  1394. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  1395. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  1396. </member>
  1397. <member name="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)">
  1398. <summary>
  1399. Delimits a NURBS surface definition.
  1400. </summary>
  1401. <param name="nurb">
  1402. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  1403. </param>
  1404. <remarks>
  1405. <para>
  1406. Use <b>gluBeginSurface</b> to mark the beginning of a NURBS surface
  1407. definition. After calling <b>gluBeginSurface</b>, make one or more calls to
  1408. <see cref="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[],System.Int32,System.Int32,System.Int32)"/> to define the attributes of the surface.
  1409. Exactly one of these calls to <see cref="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[],System.Int32,System.Int32,System.Int32)"/> must have a
  1410. surface type of <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/> or
  1411. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_4"/>. To mark the end of the NURBS surface
  1412. definition, call <see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>.
  1413. </para>
  1414. <para>
  1415. Trimming of NURBS surfaces is supported with <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>,
  1416. <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>, <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>, and
  1417. <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>. See the <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> reference
  1418. page for details.
  1419. </para>
  1420. <para>
  1421. OpenGL evaluators are used to render the NURBS surface as a set of polygons.
  1422. Evaluator state is preserved during rendering with
  1423. <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib()</c>. See the
  1424. <see cref="M:Tao.OpenGl.Gl.glPushAttrib(System.Int32)"/> reference page for details on exactly what
  1425. state these calls preserve.
  1426. </para>
  1427. <para>
  1428. <b>EXAMPLE</b>
  1429. </para>
  1430. <para>
  1431. The following commands render a textured NURBS surface with normals; the
  1432. texture coordinates and normals are also described as NURBS surfaces:
  1433. </para>
  1434. <para>
  1435. <code>
  1436. Glu.gluBeginSurface(nobj);
  1437. Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_TEXTURE_COORD_2);
  1438. Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_NORMAL);
  1439. Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_VERTEX_4);
  1440. Glu.gluEndSurface(nobj);
  1441. </code>
  1442. </para>
  1443. </remarks>
  1444. <seealso cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  1445. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  1446. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  1447. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  1448. <see cref="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[],System.Int32,System.Int32,System.Int32)"/>
  1449. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  1450. </member>
  1451. <member name="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)">
  1452. <summary>
  1453. Delimits a NURBS trimming loop definition.
  1454. </summary>
  1455. <param name="nurb">
  1456. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  1457. </param>
  1458. <remarks>
  1459. <para>
  1460. Use <b>gluBeginTrim</b> to mark the beginning of a trimming loop, and
  1461. <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/> to mark the end of a trimming loop. A trimming
  1462. loop is a set of oriented curve segments (forming a closed curve) that define
  1463. boundaries of a NURBS surface. You include these trimming loops in the
  1464. definition of a NURBS surface, between calls to
  1465. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/> and <see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>.
  1466. </para>
  1467. <para>
  1468. The definition for a NURBS surface can contain many trimming loops. For
  1469. example, if you wrote a definition for a NURBS surface that resembled a
  1470. rectangle with a hole punched out, the definition would contain two trimming
  1471. loops. One loop would define the outer edge of the rectangle; the other
  1472. would define the hole punched out of the rectangle. The definitions of each
  1473. of these trimming loops would be bracketed by a <b>gluBeginTrim</b> and
  1474. <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/> pair.
  1475. </para>
  1476. <para>
  1477. The definition of a single closed trimming loop can consist of multiple curve
  1478. segments, each described as a piecewise linear curve (see
  1479. <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>) or as a single NURBS curve (see
  1480. <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>), or as a combination of both in any order. The
  1481. only library calls that can appear in a trimming loop definition (between the
  1482. calls to <b>gluBeginTrim</b> and <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>) are
  1483. <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/> and <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>.
  1484. </para>
  1485. <para>
  1486. The area of the NURBS surface that is displayed is the region in the domain
  1487. to the left of the trimming curve as the curve parameter increases. Thus,
  1488. the retained region of the NURBS surface is inside a counterclockwise
  1489. trimming loop and outside a clockwise trimming loop. For the rectangle
  1490. mentioned earlier, the trimming loop for the outer edge of the rectangle runs
  1491. counterclockwise, while the trimming loop for the punched-out hole runs
  1492. clockwise.
  1493. </para>
  1494. <para>
  1495. If you use more than one curve to define a single trimming loop, the curve
  1496. segments must form a closed loop (that is, the endpoint of each curve must be
  1497. the starting point of the next curve, and the endpoint of the final curve
  1498. must be the starting point of the first curve). If the endpoints of the
  1499. curve are sufficiently close together but not exactly coincident, they will
  1500. be coerced to match. If the endpoints are not sufficiently close, an error
  1501. results (see <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  1502. </para>
  1503. <para>
  1504. If a trimming loop definition contains multiple curves, the direction of the
  1505. curves must be consistent (that is, the inside must be to the left of all of
  1506. the curves). Nested trimming loops are legal as long as the curve
  1507. orientations alternate correctly. If trimming curves are self-intersecting,
  1508. or intersect one another, an error results.
  1509. </para>
  1510. <para>
  1511. If no trimming information is given for a NURBS surface, the entire surface
  1512. is drawn.
  1513. </para>
  1514. <para>
  1515. <b>EXAMPLE</b>
  1516. </para>
  1517. <para>
  1518. This code fragment defines a trimming loop that consists of one piecewise
  1519. linear curve, and two NURBS curves:
  1520. </para>
  1521. <para>
  1522. <code>
  1523. Glu.gluBeginTrim(nobj);
  1524. Glu.gluPwlCurve(..., Glu.GLU_MAP1_TRIM_2);
  1525. Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_2);
  1526. Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_3);
  1527. Glu.gluEndTrim(nobj);
  1528. </code>
  1529. </para>
  1530. </remarks>
  1531. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  1532. <seealso cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  1533. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  1534. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  1535. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  1536. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  1537. </member>
  1538. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])">
  1539. <summary>
  1540. Builds a subset of one-dimensional mipmap levels.
  1541. </summary>
  1542. <param name="target">
  1543. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  1544. </param>
  1545. <param name="internalFormat">
  1546. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  1547. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  1548. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  1549. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  1550. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  1551. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  1552. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  1553. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  1554. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  1555. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  1556. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  1557. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  1558. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  1559. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  1560. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  1561. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  1562. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  1563. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  1564. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  1565. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  1566. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  1567. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  1568. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  1569. </param>
  1570. <param name="width">
  1571. Specifies the width in pixels of the texture image. This should be a power of 2.
  1572. </param>
  1573. <param name="format">
  1574. Specifies the format of the pixel data. Must be one of:
  1575. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  1576. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  1577. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  1578. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  1579. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  1580. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  1581. </param>
  1582. <param name="type">
  1583. Specifies the data type for data. Must be one of:
  1584. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  1585. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  1586. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  1587. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  1588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  1589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  1590. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  1591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  1592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  1593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  1594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  1595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  1596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  1597. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  1598. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  1599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  1600. </param>
  1601. <param name="level">
  1602. Specifies the mipmap level of the image data.
  1603. </param>
  1604. <param name="min">
  1605. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  1606. </param>
  1607. <param name="max">
  1608. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  1609. </param>
  1610. <param name="data">
  1611. Specifies a pointer to the image data in memory.
  1612. </param>
  1613. <returns>
  1614. A return value of zero indicates success, otherwise a GLU error code is
  1615. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  1616. </returns>
  1617. <remarks>
  1618. <para>
  1619. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  1620. texture maps of decreasing resolutions called a mipmap. This is used for the
  1621. antialiasing of texture mapped primitives.
  1622. </para>
  1623. <para>
  1624. A return value of zero indicates success, otherwise a GLU error code is
  1625. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  1626. </para>
  1627. <para>
  1628. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  1629. decimating data in half until size 1×1 is reached. At each level, each texel
  1630. in the halved mipmap level is an average of the corresponding two texels in
  1631. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  1632. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  1633. than the highest mipmap level for the texture of the specified size, then a
  1634. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  1635. loaded.
  1636. </para>
  1637. <para>
  1638. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  1639. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  1640. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  1641. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  1642. an error is returned and nothing is loaded since <i>max</i> is larger than
  1643. the highest mipmap level which is, in this case, 6.
  1644. </para>
  1645. <para>
  1646. The highest mipmap level can be derived from the formula
  1647. <c>log2((width)*(2^level))</c>.
  1648. </para>
  1649. <para>
  1650. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  1651. the acceptable values for <i>type</i> parameter. See the
  1652. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  1653. acceptable values for <i>level</i> parameter.
  1654. </para>
  1655. <para>
  1656. <b>NOTES</b>
  1657. </para>
  1658. <para>
  1659. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  1660. greater.
  1661. </para>
  1662. <para>
  1663. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  1664. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  1665. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  1666. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  1667. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  1668. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  1669. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  1670. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  1671. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  1672. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  1673. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  1674. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  1675. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  1676. version is 1.2 or greater.
  1677. </para>
  1678. <para>
  1679. <b>ERRORS</b>
  1680. </para>
  1681. <para>
  1682. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  1683. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  1684. highest mipmap level for <i>data</i>.
  1685. </para>
  1686. <para>
  1687. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  1688. </para>
  1689. <para>
  1690. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  1691. <i>format</i>, or <i>type</i> are not legal.
  1692. </para>
  1693. <para>
  1694. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1695. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  1696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  1697. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  1698. </para>
  1699. <para>
  1700. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1701. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  1702. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  1703. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  1704. </para>
  1705. <para>
  1706. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1707. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  1708. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  1709. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1710. </para>
  1711. <para>
  1712. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  1714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  1715. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1716. </para>
  1717. <para>
  1718. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  1720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  1721. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1722. </para>
  1723. <para>
  1724. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1725. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  1726. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  1727. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1728. </para>
  1729. </remarks>
  1730. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1731. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1732. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  1733. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameterfv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  1734. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1735. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1736. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1737. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1738. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1739. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1740. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1741. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1742. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  1743. </member>
  1744. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:])">
  1745. <summary>
  1746. Builds a subset of one-dimensional mipmap levels.
  1747. </summary>
  1748. <param name="target">
  1749. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  1750. </param>
  1751. <param name="internalFormat">
  1752. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  1753. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  1754. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  1755. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  1756. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  1757. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  1758. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  1759. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  1760. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  1761. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  1762. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  1763. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  1764. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  1765. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  1766. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  1767. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  1768. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  1769. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  1770. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  1771. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  1772. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  1773. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  1774. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  1775. </param>
  1776. <param name="width">
  1777. Specifies the width in pixels of the texture image. This should be a power of 2.
  1778. </param>
  1779. <param name="format">
  1780. Specifies the format of the pixel data. Must be one of:
  1781. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  1782. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  1783. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  1784. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  1785. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  1786. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  1787. </param>
  1788. <param name="type">
  1789. Specifies the data type for data. Must be one of:
  1790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  1791. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  1792. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  1793. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  1794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  1795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  1796. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  1797. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  1798. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  1799. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  1800. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  1801. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  1802. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  1803. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  1804. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  1805. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  1806. </param>
  1807. <param name="level">
  1808. Specifies the mipmap level of the image data.
  1809. </param>
  1810. <param name="min">
  1811. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  1812. </param>
  1813. <param name="max">
  1814. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  1815. </param>
  1816. <param name="data">
  1817. Specifies a pointer to the image data in memory.
  1818. </param>
  1819. <returns>
  1820. A return value of zero indicates success, otherwise a GLU error code is
  1821. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  1822. </returns>
  1823. <remarks>
  1824. <para>
  1825. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  1826. texture maps of decreasing resolutions called a mipmap. This is used for the
  1827. antialiasing of texture mapped primitives.
  1828. </para>
  1829. <para>
  1830. A return value of zero indicates success, otherwise a GLU error code is
  1831. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  1832. </para>
  1833. <para>
  1834. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  1835. decimating data in half until size 1×1 is reached. At each level, each texel
  1836. in the halved mipmap level is an average of the corresponding two texels in
  1837. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  1838. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  1839. than the highest mipmap level for the texture of the specified size, then a
  1840. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  1841. loaded.
  1842. </para>
  1843. <para>
  1844. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  1845. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  1846. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  1847. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  1848. an error is returned and nothing is loaded since <i>max</i> is larger than
  1849. the highest mipmap level which is, in this case, 6.
  1850. </para>
  1851. <para>
  1852. The highest mipmap level can be derived from the formula
  1853. <c>log2((width)*(2^level))</c>.
  1854. </para>
  1855. <para>
  1856. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  1857. the acceptable values for <i>type</i> parameter. See the
  1858. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  1859. acceptable values for <i>level</i> parameter.
  1860. </para>
  1861. <para>
  1862. <b>NOTES</b>
  1863. </para>
  1864. <para>
  1865. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  1866. greater.
  1867. </para>
  1868. <para>
  1869. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  1870. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  1871. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  1872. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  1873. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  1874. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  1875. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  1876. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  1877. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  1878. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  1879. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  1880. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  1881. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  1882. version is 1.2 or greater.
  1883. </para>
  1884. <para>
  1885. <b>ERRORS</b>
  1886. </para>
  1887. <para>
  1888. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  1889. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  1890. highest mipmap level for <i>data</i>.
  1891. </para>
  1892. <para>
  1893. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  1894. </para>
  1895. <para>
  1896. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  1897. <i>format</i>, or <i>type</i> are not legal.
  1898. </para>
  1899. <para>
  1900. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  1902. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  1903. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  1904. </para>
  1905. <para>
  1906. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  1908. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  1909. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  1910. </para>
  1911. <para>
  1912. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  1914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  1915. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1916. </para>
  1917. <para>
  1918. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  1920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  1921. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1922. </para>
  1923. <para>
  1924. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1925. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  1926. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  1927. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1928. </para>
  1929. <para>
  1930. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  1931. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  1932. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  1933. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  1934. </para>
  1935. </remarks>
  1936. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1937. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1938. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  1939. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameterfv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  1940. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1941. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1942. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  1943. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1944. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1945. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1946. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1947. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  1948. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  1949. </member>
  1950. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:,0:])">
  1951. <summary>
  1952. Builds a subset of one-dimensional mipmap levels.
  1953. </summary>
  1954. <param name="target">
  1955. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  1956. </param>
  1957. <param name="internalFormat">
  1958. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  1959. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  1960. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  1961. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  1962. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  1963. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  1964. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  1965. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  1966. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  1967. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  1968. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  1969. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  1970. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  1971. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  1972. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  1973. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  1974. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  1975. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  1976. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  1977. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  1978. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  1979. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  1980. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  1981. </param>
  1982. <param name="width">
  1983. Specifies the width in pixels of the texture image. This should be a power of 2.
  1984. </param>
  1985. <param name="format">
  1986. Specifies the format of the pixel data. Must be one of:
  1987. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  1988. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  1989. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  1990. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  1991. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  1992. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  1993. </param>
  1994. <param name="type">
  1995. Specifies the data type for data. Must be one of:
  1996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  1997. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  1998. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  1999. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  2000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2002. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2003. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2004. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2005. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2006. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2007. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2008. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2009. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2010. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  2011. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  2012. </param>
  2013. <param name="level">
  2014. Specifies the mipmap level of the image data.
  2015. </param>
  2016. <param name="min">
  2017. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2018. </param>
  2019. <param name="max">
  2020. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2021. </param>
  2022. <param name="data">
  2023. Specifies a pointer to the image data in memory.
  2024. </param>
  2025. <returns>
  2026. A return value of zero indicates success, otherwise a GLU error code is
  2027. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2028. </returns>
  2029. <remarks>
  2030. <para>
  2031. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  2032. texture maps of decreasing resolutions called a mipmap. This is used for the
  2033. antialiasing of texture mapped primitives.
  2034. </para>
  2035. <para>
  2036. A return value of zero indicates success, otherwise a GLU error code is
  2037. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2038. </para>
  2039. <para>
  2040. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  2041. decimating data in half until size 1×1 is reached. At each level, each texel
  2042. in the halved mipmap level is an average of the corresponding two texels in
  2043. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  2044. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  2045. than the highest mipmap level for the texture of the specified size, then a
  2046. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  2047. loaded.
  2048. </para>
  2049. <para>
  2050. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  2051. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  2052. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  2053. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  2054. an error is returned and nothing is loaded since <i>max</i> is larger than
  2055. the highest mipmap level which is, in this case, 6.
  2056. </para>
  2057. <para>
  2058. The highest mipmap level can be derived from the formula
  2059. <c>log2((width)*(2^level))</c>.
  2060. </para>
  2061. <para>
  2062. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  2063. the acceptable values for <i>type</i> parameter. See the
  2064. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  2065. acceptable values for <i>level</i> parameter.
  2066. </para>
  2067. <para>
  2068. <b>NOTES</b>
  2069. </para>
  2070. <para>
  2071. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  2072. greater.
  2073. </para>
  2074. <para>
  2075. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  2076. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2077. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2078. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2079. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2080. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2081. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2082. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2083. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2084. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2085. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2086. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  2087. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  2088. version is 1.2 or greater.
  2089. </para>
  2090. <para>
  2091. <b>ERRORS</b>
  2092. </para>
  2093. <para>
  2094. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  2095. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  2096. highest mipmap level for <i>data</i>.
  2097. </para>
  2098. <para>
  2099. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  2100. </para>
  2101. <para>
  2102. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  2103. <i>format</i>, or <i>type</i> are not legal.
  2104. </para>
  2105. <para>
  2106. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2107. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  2108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  2109. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2110. </para>
  2111. <para>
  2112. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  2114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  2115. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2116. </para>
  2117. <para>
  2118. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  2120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  2121. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2122. </para>
  2123. <para>
  2124. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2125. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  2126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  2127. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2128. </para>
  2129. <para>
  2130. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  2132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  2133. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2134. </para>
  2135. <para>
  2136. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2137. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  2138. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  2139. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2140. </para>
  2141. </remarks>
  2142. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2143. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2144. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2145. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameterfv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2146. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2147. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2148. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2149. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2150. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2151. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2152. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2153. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2154. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  2155. </member>
  2156. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[])">
  2157. <summary>
  2158. Builds a subset of one-dimensional mipmap levels.
  2159. </summary>
  2160. <param name="target">
  2161. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  2162. </param>
  2163. <param name="internalFormat">
  2164. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  2165. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2166. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  2167. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  2168. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  2169. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  2170. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  2171. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  2172. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  2173. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  2174. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  2175. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  2176. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  2177. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  2178. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  2179. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  2180. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  2181. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  2182. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  2183. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  2184. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  2185. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  2186. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  2187. </param>
  2188. <param name="width">
  2189. Specifies the width in pixels of the texture image. This should be a power of 2.
  2190. </param>
  2191. <param name="format">
  2192. Specifies the format of the pixel data. Must be one of:
  2193. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  2194. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  2195. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2196. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  2197. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  2198. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  2199. </param>
  2200. <param name="type">
  2201. Specifies the data type for data. Must be one of:
  2202. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  2203. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  2204. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  2205. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  2206. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2207. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2208. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2214. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  2217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  2218. </param>
  2219. <param name="level">
  2220. Specifies the mipmap level of the image data.
  2221. </param>
  2222. <param name="min">
  2223. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2224. </param>
  2225. <param name="max">
  2226. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2227. </param>
  2228. <param name="data">
  2229. Specifies a pointer to the image data in memory.
  2230. </param>
  2231. <returns>
  2232. A return value of zero indicates success, otherwise a GLU error code is
  2233. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2234. </returns>
  2235. <remarks>
  2236. <para>
  2237. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  2238. texture maps of decreasing resolutions called a mipmap. This is used for the
  2239. antialiasing of texture mapped primitives.
  2240. </para>
  2241. <para>
  2242. A return value of zero indicates success, otherwise a GLU error code is
  2243. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2244. </para>
  2245. <para>
  2246. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  2247. decimating data in half until size 1×1 is reached. At each level, each texel
  2248. in the halved mipmap level is an average of the corresponding two texels in
  2249. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  2250. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  2251. than the highest mipmap level for the texture of the specified size, then a
  2252. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  2253. loaded.
  2254. </para>
  2255. <para>
  2256. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  2257. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  2258. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  2259. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  2260. an error is returned and nothing is loaded since <i>max</i> is larger than
  2261. the highest mipmap level which is, in this case, 6.
  2262. </para>
  2263. <para>
  2264. The highest mipmap level can be derived from the formula
  2265. <c>log2((width)*(2^level))</c>.
  2266. </para>
  2267. <para>
  2268. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  2269. the acceptable values for <i>type</i> parameter. See the
  2270. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  2271. acceptable values for <i>level</i> parameter.
  2272. </para>
  2273. <para>
  2274. <b>NOTES</b>
  2275. </para>
  2276. <para>
  2277. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  2278. greater.
  2279. </para>
  2280. <para>
  2281. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  2282. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2283. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2284. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2285. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2286. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2287. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2288. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2289. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2290. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2291. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2292. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  2293. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  2294. version is 1.2 or greater.
  2295. </para>
  2296. <para>
  2297. <b>ERRORS</b>
  2298. </para>
  2299. <para>
  2300. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  2301. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  2302. highest mipmap level for <i>data</i>.
  2303. </para>
  2304. <para>
  2305. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  2306. </para>
  2307. <para>
  2308. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  2309. <i>format</i>, or <i>type</i> are not legal.
  2310. </para>
  2311. <para>
  2312. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  2314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  2315. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2316. </para>
  2317. <para>
  2318. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  2320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  2321. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2322. </para>
  2323. <para>
  2324. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2325. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  2326. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  2327. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2328. </para>
  2329. <para>
  2330. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2331. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  2332. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  2333. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2334. </para>
  2335. <para>
  2336. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2337. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  2338. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  2339. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2340. </para>
  2341. <para>
  2342. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2343. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  2344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  2345. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2346. </para>
  2347. </remarks>
  2348. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2349. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2350. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2351. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2352. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2353. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2354. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2355. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2356. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2357. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2358. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2359. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  2360. </member>
  2361. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:])">
  2362. <summary>
  2363. Builds a subset of one-dimensional mipmap levels.
  2364. </summary>
  2365. <param name="target">
  2366. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  2367. </param>
  2368. <param name="internalFormat">
  2369. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  2370. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2371. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  2372. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  2373. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  2374. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  2375. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  2376. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  2377. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  2378. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  2379. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  2380. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  2381. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  2382. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  2383. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  2384. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  2385. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  2386. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  2387. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  2388. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  2389. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  2390. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  2391. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  2392. </param>
  2393. <param name="width">
  2394. Specifies the width in pixels of the texture image. This should be a power of 2.
  2395. </param>
  2396. <param name="format">
  2397. Specifies the format of the pixel data. Must be one of:
  2398. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  2399. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  2400. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2401. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  2402. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  2403. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  2404. </param>
  2405. <param name="type">
  2406. Specifies the data type for data. Must be one of:
  2407. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  2408. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  2409. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  2410. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  2411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2413. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2414. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2415. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2416. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2419. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2420. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  2422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  2423. </param>
  2424. <param name="level">
  2425. Specifies the mipmap level of the image data.
  2426. </param>
  2427. <param name="min">
  2428. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2429. </param>
  2430. <param name="max">
  2431. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2432. </param>
  2433. <param name="data">
  2434. Specifies a pointer to the image data in memory.
  2435. </param>
  2436. <returns>
  2437. A return value of zero indicates success, otherwise a GLU error code is
  2438. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2439. </returns>
  2440. <remarks>
  2441. <para>
  2442. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  2443. texture maps of decreasing resolutions called a mipmap. This is used for the
  2444. antialiasing of texture mapped primitives.
  2445. </para>
  2446. <para>
  2447. A return value of zero indicates success, otherwise a GLU error code is
  2448. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2449. </para>
  2450. <para>
  2451. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  2452. decimating data in half until size 1×1 is reached. At each level, each texel
  2453. in the halved mipmap level is an average of the corresponding two texels in
  2454. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  2455. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  2456. than the highest mipmap level for the texture of the specified size, then a
  2457. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  2458. loaded.
  2459. </para>
  2460. <para>
  2461. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  2462. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  2463. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  2464. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  2465. an error is returned and nothing is loaded since <i>max</i> is larger than
  2466. the highest mipmap level which is, in this case, 6.
  2467. </para>
  2468. <para>
  2469. The highest mipmap level can be derived from the formula
  2470. <c>log2((width)*(2^level))</c>.
  2471. </para>
  2472. <para>
  2473. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  2474. the acceptable values for <i>type</i> parameter. See the
  2475. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  2476. acceptable values for <i>level</i> parameter.
  2477. </para>
  2478. <para>
  2479. <b>NOTES</b>
  2480. </para>
  2481. <para>
  2482. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  2483. greater.
  2484. </para>
  2485. <para>
  2486. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  2487. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2488. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2489. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2490. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2491. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2492. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2493. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2494. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2495. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2496. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2497. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  2498. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  2499. version is 1.2 or greater.
  2500. </para>
  2501. <para>
  2502. <b>ERRORS</b>
  2503. </para>
  2504. <para>
  2505. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  2506. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  2507. highest mipmap level for <i>data</i>.
  2508. </para>
  2509. <para>
  2510. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  2511. </para>
  2512. <para>
  2513. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  2514. <i>format</i>, or <i>type</i> are not legal.
  2515. </para>
  2516. <para>
  2517. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  2519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  2520. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2521. </para>
  2522. <para>
  2523. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2524. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  2525. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  2526. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2527. </para>
  2528. <para>
  2529. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2530. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  2531. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  2532. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2533. </para>
  2534. <para>
  2535. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2536. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  2537. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  2538. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2539. </para>
  2540. <para>
  2541. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2542. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  2543. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  2544. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2545. </para>
  2546. <para>
  2547. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2548. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  2549. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  2550. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2551. </para>
  2552. </remarks>
  2553. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2554. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2555. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2556. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameterfv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2557. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2558. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2559. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2560. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2561. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2562. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2563. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2564. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2565. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  2566. </member>
  2567. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:,0:])">
  2568. <summary>
  2569. Builds a subset of one-dimensional mipmap levels.
  2570. </summary>
  2571. <param name="target">
  2572. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  2573. </param>
  2574. <param name="internalFormat">
  2575. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  2576. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2577. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  2578. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  2579. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  2580. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  2581. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  2582. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  2583. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  2584. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  2585. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  2586. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  2587. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  2588. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  2589. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  2590. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  2591. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  2592. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  2593. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  2594. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  2595. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  2596. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  2597. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  2598. </param>
  2599. <param name="width">
  2600. Specifies the width in pixels of the texture image. This should be a power of 2.
  2601. </param>
  2602. <param name="format">
  2603. Specifies the format of the pixel data. Must be one of:
  2604. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  2605. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  2606. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2607. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  2608. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  2609. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  2610. </param>
  2611. <param name="type">
  2612. Specifies the data type for data. Must be one of:
  2613. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  2614. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  2615. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  2616. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  2617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2619. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2620. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2621. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2622. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2625. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2626. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2627. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  2628. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  2629. </param>
  2630. <param name="level">
  2631. Specifies the mipmap level of the image data.
  2632. </param>
  2633. <param name="min">
  2634. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2635. </param>
  2636. <param name="max">
  2637. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2638. </param>
  2639. <param name="data">
  2640. Specifies a pointer to the image data in memory.
  2641. </param>
  2642. <returns>
  2643. A return value of zero indicates success, otherwise a GLU error code is
  2644. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2645. </returns>
  2646. <remarks>
  2647. <para>
  2648. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  2649. texture maps of decreasing resolutions called a mipmap. This is used for the
  2650. antialiasing of texture mapped primitives.
  2651. </para>
  2652. <para>
  2653. A return value of zero indicates success, otherwise a GLU error code is
  2654. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2655. </para>
  2656. <para>
  2657. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  2658. decimating data in half until size 1×1 is reached. At each level, each texel
  2659. in the halved mipmap level is an average of the corresponding two texels in
  2660. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  2661. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  2662. than the highest mipmap level for the texture of the specified size, then a
  2663. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  2664. loaded.
  2665. </para>
  2666. <para>
  2667. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  2668. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  2669. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  2670. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  2671. an error is returned and nothing is loaded since <i>max</i> is larger than
  2672. the highest mipmap level which is, in this case, 6.
  2673. </para>
  2674. <para>
  2675. The highest mipmap level can be derived from the formula
  2676. <c>log2((width)*(2^level))</c>.
  2677. </para>
  2678. <para>
  2679. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  2680. the acceptable values for <i>type</i> parameter. See the
  2681. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  2682. acceptable values for <i>level</i> parameter.
  2683. </para>
  2684. <para>
  2685. <b>NOTES</b>
  2686. </para>
  2687. <para>
  2688. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  2689. greater.
  2690. </para>
  2691. <para>
  2692. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  2693. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2694. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2695. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2697. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2698. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2699. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2700. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2701. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2702. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2703. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  2704. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  2705. version is 1.2 or greater.
  2706. </para>
  2707. <para>
  2708. <b>ERRORS</b>
  2709. </para>
  2710. <para>
  2711. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  2712. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  2713. highest mipmap level for <i>data</i>.
  2714. </para>
  2715. <para>
  2716. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  2717. </para>
  2718. <para>
  2719. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  2720. <i>format</i>, or <i>type</i> are not legal.
  2721. </para>
  2722. <para>
  2723. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2724. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  2725. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  2726. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2727. </para>
  2728. <para>
  2729. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2730. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  2731. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  2732. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2733. </para>
  2734. <para>
  2735. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2736. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  2737. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  2738. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2739. </para>
  2740. <para>
  2741. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2742. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  2743. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  2744. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2745. </para>
  2746. <para>
  2747. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2748. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  2749. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  2750. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2751. </para>
  2752. <para>
  2753. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2754. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  2755. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  2756. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2757. </para>
  2758. </remarks>
  2759. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2760. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2761. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2762. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameterfv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2763. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2764. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2765. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2766. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2767. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2768. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2769. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2770. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2771. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  2772. </member>
  2773. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[])">
  2774. <summary>
  2775. Builds a subset of one-dimensional mipmap levels.
  2776. </summary>
  2777. <param name="target">
  2778. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  2779. </param>
  2780. <param name="internalFormat">
  2781. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  2782. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2783. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  2784. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  2785. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  2786. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  2787. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  2788. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  2789. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  2790. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  2791. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  2792. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  2793. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  2794. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  2795. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  2796. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  2797. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  2798. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  2799. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  2800. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  2801. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  2802. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  2803. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  2804. </param>
  2805. <param name="width">
  2806. Specifies the width in pixels of the texture image. This should be a power of 2.
  2807. </param>
  2808. <param name="format">
  2809. Specifies the format of the pixel data. Must be one of:
  2810. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  2811. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  2812. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2813. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  2814. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  2815. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  2816. </param>
  2817. <param name="type">
  2818. Specifies the data type for data. Must be one of:
  2819. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  2820. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  2821. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  2822. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  2823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2825. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2826. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2827. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2828. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2831. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2832. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2833. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  2834. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  2835. </param>
  2836. <param name="level">
  2837. Specifies the mipmap level of the image data.
  2838. </param>
  2839. <param name="min">
  2840. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2841. </param>
  2842. <param name="max">
  2843. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  2844. </param>
  2845. <param name="data">
  2846. Specifies a pointer to the image data in memory.
  2847. </param>
  2848. <returns>
  2849. A return value of zero indicates success, otherwise a GLU error code is
  2850. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2851. </returns>
  2852. <remarks>
  2853. <para>
  2854. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  2855. texture maps of decreasing resolutions called a mipmap. This is used for the
  2856. antialiasing of texture mapped primitives.
  2857. </para>
  2858. <para>
  2859. A return value of zero indicates success, otherwise a GLU error code is
  2860. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  2861. </para>
  2862. <para>
  2863. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  2864. decimating data in half until size 1×1 is reached. At each level, each texel
  2865. in the halved mipmap level is an average of the corresponding two texels in
  2866. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  2867. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  2868. than the highest mipmap level for the texture of the specified size, then a
  2869. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  2870. loaded.
  2871. </para>
  2872. <para>
  2873. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  2874. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  2875. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  2876. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  2877. an error is returned and nothing is loaded since <i>max</i> is larger than
  2878. the highest mipmap level which is, in this case, 6.
  2879. </para>
  2880. <para>
  2881. The highest mipmap level can be derived from the formula
  2882. <c>log2((width)*(2^level))</c>.
  2883. </para>
  2884. <para>
  2885. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  2886. the acceptable values for <i>type</i> parameter. See the
  2887. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  2888. acceptable values for <i>level</i> parameter.
  2889. </para>
  2890. <para>
  2891. <b>NOTES</b>
  2892. </para>
  2893. <para>
  2894. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  2895. greater.
  2896. </para>
  2897. <para>
  2898. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  2899. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  2900. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  2901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  2902. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  2903. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  2904. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  2905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  2906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  2907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  2908. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  2909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  2910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  2911. version is 1.2 or greater.
  2912. </para>
  2913. <para>
  2914. <b>ERRORS</b>
  2915. </para>
  2916. <para>
  2917. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  2918. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  2919. highest mipmap level for <i>data</i>.
  2920. </para>
  2921. <para>
  2922. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  2923. </para>
  2924. <para>
  2925. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  2926. <i>format</i>, or <i>type</i> are not legal.
  2927. </para>
  2928. <para>
  2929. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2930. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  2931. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  2932. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2933. </para>
  2934. <para>
  2935. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2936. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  2937. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  2938. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  2939. </para>
  2940. <para>
  2941. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2942. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  2943. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  2944. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2945. </para>
  2946. <para>
  2947. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2948. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  2949. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  2950. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2951. </para>
  2952. <para>
  2953. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2954. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  2955. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  2956. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2957. </para>
  2958. <para>
  2959. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  2960. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  2961. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  2962. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  2963. </para>
  2964. </remarks>
  2965. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2966. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2967. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  2968. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2969. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2970. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  2971. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2972. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2973. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2974. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2975. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  2976. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  2977. </member>
  2978. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:])">
  2979. <summary>
  2980. Builds a subset of one-dimensional mipmap levels.
  2981. </summary>
  2982. <param name="target">
  2983. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  2984. </param>
  2985. <param name="internalFormat">
  2986. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  2987. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  2988. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  2989. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  2990. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  2991. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  2992. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  2993. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  2994. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  2995. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  2996. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  2997. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  2998. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  2999. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  3000. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  3001. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  3002. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  3003. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  3004. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  3005. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  3006. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  3007. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  3008. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  3009. </param>
  3010. <param name="width">
  3011. Specifies the width in pixels of the texture image. This should be a power of 2.
  3012. </param>
  3013. <param name="format">
  3014. Specifies the format of the pixel data. Must be one of:
  3015. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  3016. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  3017. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3018. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  3019. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  3020. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  3021. </param>
  3022. <param name="type">
  3023. Specifies the data type for data. Must be one of:
  3024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  3025. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  3026. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  3027. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  3028. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3031. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3032. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3033. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3034. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3037. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3038. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  3039. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  3040. </param>
  3041. <param name="level">
  3042. Specifies the mipmap level of the image data.
  3043. </param>
  3044. <param name="min">
  3045. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3046. </param>
  3047. <param name="max">
  3048. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3049. </param>
  3050. <param name="data">
  3051. Specifies a pointer to the image data in memory.
  3052. </param>
  3053. <returns>
  3054. A return value of zero indicates success, otherwise a GLU error code is
  3055. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3056. </returns>
  3057. <remarks>
  3058. <para>
  3059. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  3060. texture maps of decreasing resolutions called a mipmap. This is used for the
  3061. antialiasing of texture mapped primitives.
  3062. </para>
  3063. <para>
  3064. A return value of zero indicates success, otherwise a GLU error code is
  3065. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3066. </para>
  3067. <para>
  3068. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  3069. decimating data in half until size 1×1 is reached. At each level, each texel
  3070. in the halved mipmap level is an average of the corresponding two texels in
  3071. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  3072. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  3073. than the highest mipmap level for the texture of the specified size, then a
  3074. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  3075. loaded.
  3076. </para>
  3077. <para>
  3078. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  3079. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  3080. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  3081. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  3082. an error is returned and nothing is loaded since <i>max</i> is larger than
  3083. the highest mipmap level which is, in this case, 6.
  3084. </para>
  3085. <para>
  3086. The highest mipmap level can be derived from the formula
  3087. <c>log2((width)*(2^level))</c>.
  3088. </para>
  3089. <para>
  3090. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  3091. the acceptable values for <i>type</i> parameter. See the
  3092. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  3093. acceptable values for <i>level</i> parameter.
  3094. </para>
  3095. <para>
  3096. <b>NOTES</b>
  3097. </para>
  3098. <para>
  3099. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  3100. greater.
  3101. </para>
  3102. <para>
  3103. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  3104. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3105. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3106. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3107. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3109. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  3115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  3116. version is 1.2 or greater.
  3117. </para>
  3118. <para>
  3119. <b>ERRORS</b>
  3120. </para>
  3121. <para>
  3122. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  3123. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  3124. highest mipmap level for <i>data</i>.
  3125. </para>
  3126. <para>
  3127. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  3128. </para>
  3129. <para>
  3130. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  3131. <i>format</i>, or <i>type</i> are not legal.
  3132. </para>
  3133. <para>
  3134. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3135. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  3136. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  3137. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3138. </para>
  3139. <para>
  3140. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3141. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  3142. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  3143. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3144. </para>
  3145. <para>
  3146. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3147. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  3148. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  3149. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3150. </para>
  3151. <para>
  3152. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3153. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  3154. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  3155. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3156. </para>
  3157. <para>
  3158. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3159. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  3160. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  3161. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3162. </para>
  3163. <para>
  3164. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3165. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  3166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  3167. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3168. </para>
  3169. </remarks>
  3170. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3171. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3172. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  3173. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3174. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3175. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3176. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3177. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3178. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3179. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3180. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3181. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  3182. </member>
  3183. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:,0:])">
  3184. <summary>
  3185. Builds a subset of one-dimensional mipmap levels.
  3186. </summary>
  3187. <param name="target">
  3188. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  3189. </param>
  3190. <param name="internalFormat">
  3191. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  3192. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3193. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  3194. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  3195. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  3196. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  3197. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  3198. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  3199. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  3200. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  3201. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  3202. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  3203. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  3204. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  3205. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  3206. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  3207. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  3208. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  3209. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  3210. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  3211. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  3212. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  3213. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  3214. </param>
  3215. <param name="width">
  3216. Specifies the width in pixels of the texture image. This should be a power of 2.
  3217. </param>
  3218. <param name="format">
  3219. Specifies the format of the pixel data. Must be one of:
  3220. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  3221. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  3222. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3223. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  3224. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  3225. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  3226. </param>
  3227. <param name="type">
  3228. Specifies the data type for data. Must be one of:
  3229. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  3230. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  3231. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  3232. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  3233. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3234. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3235. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3237. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3238. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3239. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3240. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3243. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  3244. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  3245. </param>
  3246. <param name="level">
  3247. Specifies the mipmap level of the image data.
  3248. </param>
  3249. <param name="min">
  3250. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3251. </param>
  3252. <param name="max">
  3253. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3254. </param>
  3255. <param name="data">
  3256. Specifies a pointer to the image data in memory.
  3257. </param>
  3258. <returns>
  3259. A return value of zero indicates success, otherwise a GLU error code is
  3260. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3261. </returns>
  3262. <remarks>
  3263. <para>
  3264. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  3265. texture maps of decreasing resolutions called a mipmap. This is used for the
  3266. antialiasing of texture mapped primitives.
  3267. </para>
  3268. <para>
  3269. A return value of zero indicates success, otherwise a GLU error code is
  3270. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3271. </para>
  3272. <para>
  3273. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  3274. decimating data in half until size 1×1 is reached. At each level, each texel
  3275. in the halved mipmap level is an average of the corresponding two texels in
  3276. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  3277. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  3278. than the highest mipmap level for the texture of the specified size, then a
  3279. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  3280. loaded.
  3281. </para>
  3282. <para>
  3283. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  3284. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  3285. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  3286. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  3287. an error is returned and nothing is loaded since <i>max</i> is larger than
  3288. the highest mipmap level which is, in this case, 6.
  3289. </para>
  3290. <para>
  3291. The highest mipmap level can be derived from the formula
  3292. <c>log2((width)*(2^level))</c>.
  3293. </para>
  3294. <para>
  3295. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  3296. the acceptable values for <i>type</i> parameter. See the
  3297. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  3298. acceptable values for <i>level</i> parameter.
  3299. </para>
  3300. <para>
  3301. <b>NOTES</b>
  3302. </para>
  3303. <para>
  3304. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  3305. greater.
  3306. </para>
  3307. <para>
  3308. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  3309. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3310. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3311. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3312. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3316. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3318. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  3320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  3321. version is 1.2 or greater.
  3322. </para>
  3323. <para>
  3324. <b>ERRORS</b>
  3325. </para>
  3326. <para>
  3327. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  3328. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  3329. highest mipmap level for <i>data</i>.
  3330. </para>
  3331. <para>
  3332. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  3333. </para>
  3334. <para>
  3335. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  3336. <i>format</i>, or <i>type</i> are not legal.
  3337. </para>
  3338. <para>
  3339. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  3341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  3342. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3343. </para>
  3344. <para>
  3345. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  3347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  3348. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3349. </para>
  3350. <para>
  3351. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  3353. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  3354. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3355. </para>
  3356. <para>
  3357. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3358. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  3359. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  3360. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3361. </para>
  3362. <para>
  3363. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3364. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  3365. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  3366. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3367. </para>
  3368. <para>
  3369. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3370. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  3371. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  3372. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3373. </para>
  3374. </remarks>
  3375. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3376. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3377. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  3378. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3379. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3380. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3381. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3382. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3383. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3384. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3385. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3386. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  3387. </member>
  3388. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[])">
  3389. <summary>
  3390. Builds a subset of one-dimensional mipmap levels.
  3391. </summary>
  3392. <param name="target">
  3393. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  3394. </param>
  3395. <param name="internalFormat">
  3396. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  3397. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3398. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  3399. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  3400. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  3401. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  3402. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  3403. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  3404. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  3405. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  3406. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  3407. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  3408. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  3409. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  3410. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  3411. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  3412. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  3413. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  3414. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  3415. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  3416. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  3417. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  3418. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  3419. </param>
  3420. <param name="width">
  3421. Specifies the width in pixels of the texture image. This should be a power of 2.
  3422. </param>
  3423. <param name="format">
  3424. Specifies the format of the pixel data. Must be one of:
  3425. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  3426. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  3427. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3428. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  3429. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  3430. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  3431. </param>
  3432. <param name="type">
  3433. Specifies the data type for data. Must be one of:
  3434. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  3435. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  3436. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  3437. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  3438. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3439. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3440. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3443. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3444. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3445. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3446. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3447. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3448. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  3449. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  3450. </param>
  3451. <param name="level">
  3452. Specifies the mipmap level of the image data.
  3453. </param>
  3454. <param name="min">
  3455. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3456. </param>
  3457. <param name="max">
  3458. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3459. </param>
  3460. <param name="data">
  3461. Specifies a pointer to the image data in memory.
  3462. </param>
  3463. <returns>
  3464. A return value of zero indicates success, otherwise a GLU error code is
  3465. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3466. </returns>
  3467. <remarks>
  3468. <para>
  3469. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  3470. texture maps of decreasing resolutions called a mipmap. This is used for the
  3471. antialiasing of texture mapped primitives.
  3472. </para>
  3473. <para>
  3474. A return value of zero indicates success, otherwise a GLU error code is
  3475. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3476. </para>
  3477. <para>
  3478. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  3479. decimating data in half until size 1×1 is reached. At each level, each texel
  3480. in the halved mipmap level is an average of the corresponding two texels in
  3481. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  3482. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  3483. than the highest mipmap level for the texture of the specified size, then a
  3484. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  3485. loaded.
  3486. </para>
  3487. <para>
  3488. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  3489. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  3490. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  3491. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  3492. an error is returned and nothing is loaded since <i>max</i> is larger than
  3493. the highest mipmap level which is, in this case, 6.
  3494. </para>
  3495. <para>
  3496. The highest mipmap level can be derived from the formula
  3497. <c>log2((width)*(2^level))</c>.
  3498. </para>
  3499. <para>
  3500. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  3501. the acceptable values for <i>type</i> parameter. See the
  3502. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  3503. acceptable values for <i>level</i> parameter.
  3504. </para>
  3505. <para>
  3506. <b>NOTES</b>
  3507. </para>
  3508. <para>
  3509. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  3510. greater.
  3511. </para>
  3512. <para>
  3513. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  3514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3522. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3523. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3524. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  3525. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  3526. version is 1.2 or greater.
  3527. </para>
  3528. <para>
  3529. <b>ERRORS</b>
  3530. </para>
  3531. <para>
  3532. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  3533. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  3534. highest mipmap level for <i>data</i>.
  3535. </para>
  3536. <para>
  3537. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  3538. </para>
  3539. <para>
  3540. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  3541. <i>format</i>, or <i>type</i> are not legal.
  3542. </para>
  3543. <para>
  3544. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  3546. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  3547. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3548. </para>
  3549. <para>
  3550. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3551. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  3552. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  3553. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3554. </para>
  3555. <para>
  3556. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3557. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  3558. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  3559. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3560. </para>
  3561. <para>
  3562. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3563. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  3564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  3565. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3566. </para>
  3567. <para>
  3568. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  3570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  3571. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3572. </para>
  3573. <para>
  3574. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3575. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  3576. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  3577. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3578. </para>
  3579. </remarks>
  3580. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3581. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3582. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  3583. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3584. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3585. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3586. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3587. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3588. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3589. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3590. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3591. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  3592. </member>
  3593. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:])">
  3594. <summary>
  3595. Builds a subset of one-dimensional mipmap levels.
  3596. </summary>
  3597. <param name="target">
  3598. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  3599. </param>
  3600. <param name="internalFormat">
  3601. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  3602. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3603. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  3604. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  3605. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  3606. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  3607. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  3608. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  3609. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  3610. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  3611. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  3612. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  3613. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  3614. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  3615. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  3616. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  3617. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  3618. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  3619. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  3620. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  3621. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  3622. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  3623. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  3624. </param>
  3625. <param name="width">
  3626. Specifies the width in pixels of the texture image. This should be a power of 2.
  3627. </param>
  3628. <param name="format">
  3629. Specifies the format of the pixel data. Must be one of:
  3630. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  3631. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  3632. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3633. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  3634. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  3635. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  3636. </param>
  3637. <param name="type">
  3638. Specifies the data type for data. Must be one of:
  3639. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  3640. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  3641. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  3642. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  3643. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3644. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3645. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3646. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3647. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3648. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3649. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3650. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3651. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3652. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3653. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  3654. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  3655. </param>
  3656. <param name="level">
  3657. Specifies the mipmap level of the image data.
  3658. </param>
  3659. <param name="min">
  3660. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3661. </param>
  3662. <param name="max">
  3663. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3664. </param>
  3665. <param name="data">
  3666. Specifies a pointer to the image data in memory.
  3667. </param>
  3668. <returns>
  3669. A return value of zero indicates success, otherwise a GLU error code is
  3670. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3671. </returns>
  3672. <remarks>
  3673. <para>
  3674. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  3675. texture maps of decreasing resolutions called a mipmap. This is used for the
  3676. antialiasing of texture mapped primitives.
  3677. </para>
  3678. <para>
  3679. A return value of zero indicates success, otherwise a GLU error code is
  3680. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3681. </para>
  3682. <para>
  3683. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  3684. decimating data in half until size 1×1 is reached. At each level, each texel
  3685. in the halved mipmap level is an average of the corresponding two texels in
  3686. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  3687. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  3688. than the highest mipmap level for the texture of the specified size, then a
  3689. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  3690. loaded.
  3691. </para>
  3692. <para>
  3693. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  3694. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  3695. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  3696. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  3697. an error is returned and nothing is loaded since <i>max</i> is larger than
  3698. the highest mipmap level which is, in this case, 6.
  3699. </para>
  3700. <para>
  3701. The highest mipmap level can be derived from the formula
  3702. <c>log2((width)*(2^level))</c>.
  3703. </para>
  3704. <para>
  3705. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  3706. the acceptable values for <i>type</i> parameter. See the
  3707. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  3708. acceptable values for <i>level</i> parameter.
  3709. </para>
  3710. <para>
  3711. <b>NOTES</b>
  3712. </para>
  3713. <para>
  3714. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  3715. greater.
  3716. </para>
  3717. <para>
  3718. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  3719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3722. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3723. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3724. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3725. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3726. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3727. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3728. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3729. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  3730. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  3731. version is 1.2 or greater.
  3732. </para>
  3733. <para>
  3734. <b>ERRORS</b>
  3735. </para>
  3736. <para>
  3737. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  3738. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  3739. highest mipmap level for <i>data</i>.
  3740. </para>
  3741. <para>
  3742. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  3743. </para>
  3744. <para>
  3745. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  3746. <i>format</i>, or <i>type</i> are not legal.
  3747. </para>
  3748. <para>
  3749. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3750. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  3751. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  3752. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3753. </para>
  3754. <para>
  3755. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3756. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  3757. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  3758. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3759. </para>
  3760. <para>
  3761. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3762. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  3763. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  3764. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3765. </para>
  3766. <para>
  3767. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3768. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  3769. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  3770. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3771. </para>
  3772. <para>
  3773. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3774. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  3775. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  3776. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3777. </para>
  3778. <para>
  3779. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  3781. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  3782. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3783. </para>
  3784. </remarks>
  3785. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3786. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3787. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  3788. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3789. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3790. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3791. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3792. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3793. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3794. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3795. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3796. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  3797. </member>
  3798. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:,0:])">
  3799. <summary>
  3800. Builds a subset of one-dimensional mipmap levels.
  3801. </summary>
  3802. <param name="target">
  3803. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  3804. </param>
  3805. <param name="internalFormat">
  3806. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  3807. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3808. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  3809. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  3810. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  3811. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  3812. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  3813. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  3814. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  3815. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  3816. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  3817. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  3818. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  3819. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  3820. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  3821. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  3822. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  3823. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  3824. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  3825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  3826. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  3827. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  3828. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  3829. </param>
  3830. <param name="width">
  3831. Specifies the width in pixels of the texture image. This should be a power of 2.
  3832. </param>
  3833. <param name="format">
  3834. Specifies the format of the pixel data. Must be one of:
  3835. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  3836. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  3837. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  3838. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  3839. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  3840. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  3841. </param>
  3842. <param name="type">
  3843. Specifies the data type for data. Must be one of:
  3844. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  3845. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  3846. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  3847. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  3848. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3849. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3850. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3851. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3852. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3853. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3854. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3855. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3856. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3857. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3858. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  3859. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  3860. </param>
  3861. <param name="level">
  3862. Specifies the mipmap level of the image data.
  3863. </param>
  3864. <param name="min">
  3865. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3866. </param>
  3867. <param name="max">
  3868. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  3869. </param>
  3870. <param name="data">
  3871. Specifies a pointer to the image data in memory.
  3872. </param>
  3873. <returns>
  3874. A return value of zero indicates success, otherwise a GLU error code is
  3875. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3876. </returns>
  3877. <remarks>
  3878. <para>
  3879. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  3880. texture maps of decreasing resolutions called a mipmap. This is used for the
  3881. antialiasing of texture mapped primitives.
  3882. </para>
  3883. <para>
  3884. A return value of zero indicates success, otherwise a GLU error code is
  3885. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  3886. </para>
  3887. <para>
  3888. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  3889. decimating data in half until size 1×1 is reached. At each level, each texel
  3890. in the halved mipmap level is an average of the corresponding two texels in
  3891. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  3892. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  3893. than the highest mipmap level for the texture of the specified size, then a
  3894. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  3895. loaded.
  3896. </para>
  3897. <para>
  3898. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  3899. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  3900. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  3901. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  3902. an error is returned and nothing is loaded since <i>max</i> is larger than
  3903. the highest mipmap level which is, in this case, 6.
  3904. </para>
  3905. <para>
  3906. The highest mipmap level can be derived from the formula
  3907. <c>log2((width)*(2^level))</c>.
  3908. </para>
  3909. <para>
  3910. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  3911. the acceptable values for <i>type</i> parameter. See the
  3912. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  3913. acceptable values for <i>level</i> parameter.
  3914. </para>
  3915. <para>
  3916. <b>NOTES</b>
  3917. </para>
  3918. <para>
  3919. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  3920. greater.
  3921. </para>
  3922. <para>
  3923. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  3924. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  3925. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  3926. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  3927. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  3928. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  3929. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  3930. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  3931. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  3932. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  3933. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  3934. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  3935. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  3936. version is 1.2 or greater.
  3937. </para>
  3938. <para>
  3939. <b>ERRORS</b>
  3940. </para>
  3941. <para>
  3942. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  3943. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  3944. highest mipmap level for <i>data</i>.
  3945. </para>
  3946. <para>
  3947. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  3948. </para>
  3949. <para>
  3950. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  3951. <i>format</i>, or <i>type</i> are not legal.
  3952. </para>
  3953. <para>
  3954. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3955. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  3956. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  3957. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3958. </para>
  3959. <para>
  3960. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3961. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  3962. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  3963. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  3964. </para>
  3965. <para>
  3966. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3967. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  3968. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  3969. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3970. </para>
  3971. <para>
  3972. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3973. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  3974. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  3975. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3976. </para>
  3977. <para>
  3978. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3979. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  3980. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  3981. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3982. </para>
  3983. <para>
  3984. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  3985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  3986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  3987. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  3988. </para>
  3989. </remarks>
  3990. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3991. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3992. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  3993. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3994. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3995. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  3996. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3997. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3998. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  3999. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4000. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4001. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  4002. </member>
  4003. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[])">
  4004. <summary>
  4005. Builds a subset of one-dimensional mipmap levels.
  4006. </summary>
  4007. <param name="target">
  4008. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  4009. </param>
  4010. <param name="internalFormat">
  4011. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  4012. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4013. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  4014. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  4015. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  4016. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  4017. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  4018. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  4019. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  4020. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  4021. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  4022. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  4023. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  4024. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  4025. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  4026. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  4027. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  4028. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  4029. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  4030. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  4031. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  4032. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  4033. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  4034. </param>
  4035. <param name="width">
  4036. Specifies the width in pixels of the texture image. This should be a power of 2.
  4037. </param>
  4038. <param name="format">
  4039. Specifies the format of the pixel data. Must be one of:
  4040. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  4041. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  4042. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4043. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  4044. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  4045. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  4046. </param>
  4047. <param name="type">
  4048. Specifies the data type for data. Must be one of:
  4049. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  4050. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  4051. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  4052. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  4053. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4054. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4055. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4056. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4057. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4058. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4059. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4060. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4061. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4062. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4063. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  4064. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  4065. </param>
  4066. <param name="level">
  4067. Specifies the mipmap level of the image data.
  4068. </param>
  4069. <param name="min">
  4070. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4071. </param>
  4072. <param name="max">
  4073. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4074. </param>
  4075. <param name="data">
  4076. Specifies a pointer to the image data in memory.
  4077. </param>
  4078. <returns>
  4079. A return value of zero indicates success, otherwise a GLU error code is
  4080. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4081. </returns>
  4082. <remarks>
  4083. <para>
  4084. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  4085. texture maps of decreasing resolutions called a mipmap. This is used for the
  4086. antialiasing of texture mapped primitives.
  4087. </para>
  4088. <para>
  4089. A return value of zero indicates success, otherwise a GLU error code is
  4090. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4091. </para>
  4092. <para>
  4093. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  4094. decimating data in half until size 1×1 is reached. At each level, each texel
  4095. in the halved mipmap level is an average of the corresponding two texels in
  4096. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  4097. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  4098. than the highest mipmap level for the texture of the specified size, then a
  4099. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  4100. loaded.
  4101. </para>
  4102. <para>
  4103. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  4104. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  4105. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  4106. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  4107. an error is returned and nothing is loaded since <i>max</i> is larger than
  4108. the highest mipmap level which is, in this case, 6.
  4109. </para>
  4110. <para>
  4111. The highest mipmap level can be derived from the formula
  4112. <c>log2((width)*(2^level))</c>.
  4113. </para>
  4114. <para>
  4115. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  4116. the acceptable values for <i>type</i> parameter. See the
  4117. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  4118. acceptable values for <i>level</i> parameter.
  4119. </para>
  4120. <para>
  4121. <b>NOTES</b>
  4122. </para>
  4123. <para>
  4124. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  4125. greater.
  4126. </para>
  4127. <para>
  4128. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  4129. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4130. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4133. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4134. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4135. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4136. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4137. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4138. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4139. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  4140. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  4141. version is 1.2 or greater.
  4142. </para>
  4143. <para>
  4144. <b>ERRORS</b>
  4145. </para>
  4146. <para>
  4147. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  4148. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  4149. highest mipmap level for <i>data</i>.
  4150. </para>
  4151. <para>
  4152. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  4153. </para>
  4154. <para>
  4155. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  4156. <i>format</i>, or <i>type</i> are not legal.
  4157. </para>
  4158. <para>
  4159. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4160. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  4161. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  4162. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4163. </para>
  4164. <para>
  4165. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  4167. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  4168. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4169. </para>
  4170. <para>
  4171. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4172. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  4173. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  4174. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4175. </para>
  4176. <para>
  4177. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4178. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  4179. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  4180. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4181. </para>
  4182. <para>
  4183. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4184. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  4185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  4186. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4187. </para>
  4188. <para>
  4189. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  4191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  4192. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4193. </para>
  4194. </remarks>
  4195. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4196. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4197. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  4198. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4199. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4200. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4201. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4202. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4203. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4204. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4205. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4206. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  4207. </member>
  4208. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:])">
  4209. <summary>
  4210. Builds a subset of one-dimensional mipmap levels.
  4211. </summary>
  4212. <param name="target">
  4213. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  4214. </param>
  4215. <param name="internalFormat">
  4216. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  4217. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4218. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  4219. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  4220. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  4221. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  4222. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  4223. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  4224. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  4225. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  4226. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  4227. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  4228. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  4229. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  4230. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  4231. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  4232. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  4233. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  4234. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  4235. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  4236. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  4237. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  4238. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  4239. </param>
  4240. <param name="width">
  4241. Specifies the width in pixels of the texture image. This should be a power of 2.
  4242. </param>
  4243. <param name="format">
  4244. Specifies the format of the pixel data. Must be one of:
  4245. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  4246. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  4247. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4248. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  4249. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  4250. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  4251. </param>
  4252. <param name="type">
  4253. Specifies the data type for data. Must be one of:
  4254. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  4255. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  4256. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  4257. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  4258. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4259. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4260. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4262. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4263. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4264. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4265. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4266. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4267. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4268. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  4269. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  4270. </param>
  4271. <param name="level">
  4272. Specifies the mipmap level of the image data.
  4273. </param>
  4274. <param name="min">
  4275. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4276. </param>
  4277. <param name="max">
  4278. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4279. </param>
  4280. <param name="data">
  4281. Specifies a pointer to the image data in memory.
  4282. </param>
  4283. <returns>
  4284. A return value of zero indicates success, otherwise a GLU error code is
  4285. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4286. </returns>
  4287. <remarks>
  4288. <para>
  4289. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  4290. texture maps of decreasing resolutions called a mipmap. This is used for the
  4291. antialiasing of texture mapped primitives.
  4292. </para>
  4293. <para>
  4294. A return value of zero indicates success, otherwise a GLU error code is
  4295. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4296. </para>
  4297. <para>
  4298. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  4299. decimating data in half until size 1×1 is reached. At each level, each texel
  4300. in the halved mipmap level is an average of the corresponding two texels in
  4301. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  4302. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  4303. than the highest mipmap level for the texture of the specified size, then a
  4304. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  4305. loaded.
  4306. </para>
  4307. <para>
  4308. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  4309. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  4310. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  4311. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  4312. an error is returned and nothing is loaded since <i>max</i> is larger than
  4313. the highest mipmap level which is, in this case, 6.
  4314. </para>
  4315. <para>
  4316. The highest mipmap level can be derived from the formula
  4317. <c>log2((width)*(2^level))</c>.
  4318. </para>
  4319. <para>
  4320. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  4321. the acceptable values for <i>type</i> parameter. See the
  4322. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  4323. acceptable values for <i>level</i> parameter.
  4324. </para>
  4325. <para>
  4326. <b>NOTES</b>
  4327. </para>
  4328. <para>
  4329. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  4330. greater.
  4331. </para>
  4332. <para>
  4333. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  4334. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4335. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4336. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4337. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4338. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4339. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4342. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4343. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  4345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  4346. version is 1.2 or greater.
  4347. </para>
  4348. <para>
  4349. <b>ERRORS</b>
  4350. </para>
  4351. <para>
  4352. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  4353. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  4354. highest mipmap level for <i>data</i>.
  4355. </para>
  4356. <para>
  4357. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  4358. </para>
  4359. <para>
  4360. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  4361. <i>format</i>, or <i>type</i> are not legal.
  4362. </para>
  4363. <para>
  4364. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4365. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  4366. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  4367. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4368. </para>
  4369. <para>
  4370. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4371. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  4372. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  4373. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4374. </para>
  4375. <para>
  4376. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4377. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  4378. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  4379. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4380. </para>
  4381. <para>
  4382. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4383. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  4384. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  4385. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4386. </para>
  4387. <para>
  4388. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  4390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  4391. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4392. </para>
  4393. <para>
  4394. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  4396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  4397. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4398. </para>
  4399. </remarks>
  4400. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4401. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4402. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  4403. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4404. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4405. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4406. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4407. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4408. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4409. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4410. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4411. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  4412. </member>
  4413. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:,0:])">
  4414. <summary>
  4415. Builds a subset of one-dimensional mipmap levels.
  4416. </summary>
  4417. <param name="target">
  4418. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  4419. </param>
  4420. <param name="internalFormat">
  4421. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  4422. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4423. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  4424. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  4425. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  4426. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  4427. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  4428. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  4429. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  4430. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  4431. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  4432. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  4433. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  4434. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  4435. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  4436. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  4437. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  4438. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  4439. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  4440. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  4441. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  4442. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  4443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  4444. </param>
  4445. <param name="width">
  4446. Specifies the width in pixels of the texture image. This should be a power of 2.
  4447. </param>
  4448. <param name="format">
  4449. Specifies the format of the pixel data. Must be one of:
  4450. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  4451. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  4452. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4453. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  4454. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  4455. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  4456. </param>
  4457. <param name="type">
  4458. Specifies the data type for data. Must be one of:
  4459. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  4460. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  4461. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  4462. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  4463. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4464. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4465. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4466. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4467. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4468. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4469. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4470. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4471. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4472. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4473. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  4474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  4475. </param>
  4476. <param name="level">
  4477. Specifies the mipmap level of the image data.
  4478. </param>
  4479. <param name="min">
  4480. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4481. </param>
  4482. <param name="max">
  4483. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4484. </param>
  4485. <param name="data">
  4486. Specifies a pointer to the image data in memory.
  4487. </param>
  4488. <returns>
  4489. A return value of zero indicates success, otherwise a GLU error code is
  4490. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4491. </returns>
  4492. <remarks>
  4493. <para>
  4494. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  4495. texture maps of decreasing resolutions called a mipmap. This is used for the
  4496. antialiasing of texture mapped primitives.
  4497. </para>
  4498. <para>
  4499. A return value of zero indicates success, otherwise a GLU error code is
  4500. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4501. </para>
  4502. <para>
  4503. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  4504. decimating data in half until size 1×1 is reached. At each level, each texel
  4505. in the halved mipmap level is an average of the corresponding two texels in
  4506. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  4507. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  4508. than the highest mipmap level for the texture of the specified size, then a
  4509. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  4510. loaded.
  4511. </para>
  4512. <para>
  4513. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  4514. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  4515. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  4516. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  4517. an error is returned and nothing is loaded since <i>max</i> is larger than
  4518. the highest mipmap level which is, in this case, 6.
  4519. </para>
  4520. <para>
  4521. The highest mipmap level can be derived from the formula
  4522. <c>log2((width)*(2^level))</c>.
  4523. </para>
  4524. <para>
  4525. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  4526. the acceptable values for <i>type</i> parameter. See the
  4527. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  4528. acceptable values for <i>level</i> parameter.
  4529. </para>
  4530. <para>
  4531. <b>NOTES</b>
  4532. </para>
  4533. <para>
  4534. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  4535. greater.
  4536. </para>
  4537. <para>
  4538. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  4539. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4540. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4541. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4542. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4543. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4544. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4546. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4547. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4548. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4549. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  4550. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  4551. version is 1.2 or greater.
  4552. </para>
  4553. <para>
  4554. <b>ERRORS</b>
  4555. </para>
  4556. <para>
  4557. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  4558. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  4559. highest mipmap level for <i>data</i>.
  4560. </para>
  4561. <para>
  4562. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  4563. </para>
  4564. <para>
  4565. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  4566. <i>format</i>, or <i>type</i> are not legal.
  4567. </para>
  4568. <para>
  4569. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  4571. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  4572. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4573. </para>
  4574. <para>
  4575. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4576. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  4577. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  4578. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4579. </para>
  4580. <para>
  4581. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4582. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  4583. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  4584. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4585. </para>
  4586. <para>
  4587. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  4589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  4590. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4591. </para>
  4592. <para>
  4593. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  4595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  4596. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4597. </para>
  4598. <para>
  4599. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4600. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  4601. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  4602. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4603. </para>
  4604. </remarks>
  4605. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4606. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4607. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  4608. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameterfv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  4609. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4610. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4611. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4612. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4613. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4614. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4615. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4616. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4617. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  4618. </member>
  4619. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[])">
  4620. <summary>
  4621. Builds a subset of one-dimensional mipmap levels.
  4622. </summary>
  4623. <param name="target">
  4624. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  4625. </param>
  4626. <param name="internalFormat">
  4627. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  4628. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4629. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  4630. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  4631. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  4632. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  4633. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  4634. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  4635. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  4636. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  4637. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  4638. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  4639. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  4640. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  4641. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  4642. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  4643. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  4644. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  4645. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  4646. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  4647. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  4648. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  4649. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  4650. </param>
  4651. <param name="width">
  4652. Specifies the width in pixels of the texture image. This should be a power of 2.
  4653. </param>
  4654. <param name="format">
  4655. Specifies the format of the pixel data. Must be one of:
  4656. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  4657. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  4658. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4659. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  4660. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  4661. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  4662. </param>
  4663. <param name="type">
  4664. Specifies the data type for data. Must be one of:
  4665. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  4666. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  4667. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  4668. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  4669. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4670. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4671. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4672. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4673. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4674. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4675. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4676. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4677. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4678. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4679. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  4680. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  4681. </param>
  4682. <param name="level">
  4683. Specifies the mipmap level of the image data.
  4684. </param>
  4685. <param name="min">
  4686. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4687. </param>
  4688. <param name="max">
  4689. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4690. </param>
  4691. <param name="data">
  4692. Specifies a pointer to the image data in memory.
  4693. </param>
  4694. <returns>
  4695. A return value of zero indicates success, otherwise a GLU error code is
  4696. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4697. </returns>
  4698. <remarks>
  4699. <para>
  4700. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  4701. texture maps of decreasing resolutions called a mipmap. This is used for the
  4702. antialiasing of texture mapped primitives.
  4703. </para>
  4704. <para>
  4705. A return value of zero indicates success, otherwise a GLU error code is
  4706. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4707. </para>
  4708. <para>
  4709. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  4710. decimating data in half until size 1×1 is reached. At each level, each texel
  4711. in the halved mipmap level is an average of the corresponding two texels in
  4712. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  4713. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  4714. than the highest mipmap level for the texture of the specified size, then a
  4715. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  4716. loaded.
  4717. </para>
  4718. <para>
  4719. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  4720. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  4721. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  4722. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  4723. an error is returned and nothing is loaded since <i>max</i> is larger than
  4724. the highest mipmap level which is, in this case, 6.
  4725. </para>
  4726. <para>
  4727. The highest mipmap level can be derived from the formula
  4728. <c>log2((width)*(2^level))</c>.
  4729. </para>
  4730. <para>
  4731. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  4732. the acceptable values for <i>type</i> parameter. See the
  4733. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  4734. acceptable values for <i>level</i> parameter.
  4735. </para>
  4736. <para>
  4737. <b>NOTES</b>
  4738. </para>
  4739. <para>
  4740. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  4741. greater.
  4742. </para>
  4743. <para>
  4744. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  4745. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4746. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4747. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4748. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4749. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4750. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4751. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4752. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4753. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4754. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4755. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  4756. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  4757. version is 1.2 or greater.
  4758. </para>
  4759. <para>
  4760. <b>ERRORS</b>
  4761. </para>
  4762. <para>
  4763. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  4764. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  4765. highest mipmap level for <i>data</i>.
  4766. </para>
  4767. <para>
  4768. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  4769. </para>
  4770. <para>
  4771. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  4772. <i>format</i>, or <i>type</i> are not legal.
  4773. </para>
  4774. <para>
  4775. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  4777. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  4778. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4779. </para>
  4780. <para>
  4781. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4782. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  4783. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  4784. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4785. </para>
  4786. <para>
  4787. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  4789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  4790. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4791. </para>
  4792. <para>
  4793. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  4795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  4796. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4797. </para>
  4798. <para>
  4799. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4800. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  4801. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  4802. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4803. </para>
  4804. <para>
  4805. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4806. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  4807. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  4808. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4809. </para>
  4810. </remarks>
  4811. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4812. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4813. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  4814. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4815. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4816. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  4817. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4818. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4819. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4820. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4821. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  4822. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  4823. </member>
  4824. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:])">
  4825. <summary>
  4826. Builds a subset of one-dimensional mipmap levels.
  4827. </summary>
  4828. <param name="target">
  4829. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  4830. </param>
  4831. <param name="internalFormat">
  4832. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  4833. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4834. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  4835. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  4836. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  4837. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  4838. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  4839. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  4840. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  4841. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  4842. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  4843. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  4844. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  4845. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  4846. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  4847. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  4848. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  4849. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  4850. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  4851. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  4852. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  4853. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  4854. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  4855. </param>
  4856. <param name="width">
  4857. Specifies the width in pixels of the texture image. This should be a power of 2.
  4858. </param>
  4859. <param name="format">
  4860. Specifies the format of the pixel data. Must be one of:
  4861. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  4862. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  4863. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  4864. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  4865. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  4866. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  4867. </param>
  4868. <param name="type">
  4869. Specifies the data type for data. Must be one of:
  4870. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  4871. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  4872. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  4873. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  4874. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4875. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4876. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4877. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4878. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4879. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4880. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4881. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4882. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4883. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4884. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  4885. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  4886. </param>
  4887. <param name="level">
  4888. Specifies the mipmap level of the image data.
  4889. </param>
  4890. <param name="min">
  4891. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4892. </param>
  4893. <param name="max">
  4894. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  4895. </param>
  4896. <param name="data">
  4897. Specifies a pointer to the image data in memory.
  4898. </param>
  4899. <returns>
  4900. A return value of zero indicates success, otherwise a GLU error code is
  4901. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4902. </returns>
  4903. <remarks>
  4904. <para>
  4905. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  4906. texture maps of decreasing resolutions called a mipmap. This is used for the
  4907. antialiasing of texture mapped primitives.
  4908. </para>
  4909. <para>
  4910. A return value of zero indicates success, otherwise a GLU error code is
  4911. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  4912. </para>
  4913. <para>
  4914. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  4915. decimating data in half until size 1×1 is reached. At each level, each texel
  4916. in the halved mipmap level is an average of the corresponding two texels in
  4917. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  4918. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  4919. than the highest mipmap level for the texture of the specified size, then a
  4920. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  4921. loaded.
  4922. </para>
  4923. <para>
  4924. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  4925. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  4926. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  4927. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  4928. an error is returned and nothing is loaded since <i>max</i> is larger than
  4929. the highest mipmap level which is, in this case, 6.
  4930. </para>
  4931. <para>
  4932. The highest mipmap level can be derived from the formula
  4933. <c>log2((width)*(2^level))</c>.
  4934. </para>
  4935. <para>
  4936. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  4937. the acceptable values for <i>type</i> parameter. See the
  4938. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  4939. acceptable values for <i>level</i> parameter.
  4940. </para>
  4941. <para>
  4942. <b>NOTES</b>
  4943. </para>
  4944. <para>
  4945. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  4946. greater.
  4947. </para>
  4948. <para>
  4949. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  4950. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  4951. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  4952. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  4953. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  4954. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  4955. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  4956. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  4957. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  4958. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  4959. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  4960. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  4961. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  4962. version is 1.2 or greater.
  4963. </para>
  4964. <para>
  4965. <b>ERRORS</b>
  4966. </para>
  4967. <para>
  4968. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  4969. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  4970. highest mipmap level for <i>data</i>.
  4971. </para>
  4972. <para>
  4973. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  4974. </para>
  4975. <para>
  4976. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  4977. <i>format</i>, or <i>type</i> are not legal.
  4978. </para>
  4979. <para>
  4980. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4981. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  4982. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  4983. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4984. </para>
  4985. <para>
  4986. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  4988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  4989. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  4990. </para>
  4991. <para>
  4992. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  4994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  4995. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  4996. </para>
  4997. <para>
  4998. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  4999. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  5000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  5001. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5002. </para>
  5003. <para>
  5004. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5005. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  5006. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  5007. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5008. </para>
  5009. <para>
  5010. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5011. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  5012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  5013. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5014. </para>
  5015. </remarks>
  5016. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5017. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5018. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  5019. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5020. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5021. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5022. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5023. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5024. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5025. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5026. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5027. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  5028. </member>
  5029. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:,0:])">
  5030. <summary>
  5031. Builds a subset of one-dimensional mipmap levels.
  5032. </summary>
  5033. <param name="target">
  5034. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  5035. </param>
  5036. <param name="internalFormat">
  5037. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  5038. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5039. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  5040. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  5041. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  5042. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  5043. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  5044. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  5045. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  5046. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  5047. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  5048. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  5049. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  5050. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  5051. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  5052. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  5053. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  5054. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  5055. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  5056. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  5057. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  5058. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  5059. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  5060. </param>
  5061. <param name="width">
  5062. Specifies the width in pixels of the texture image. This should be a power of 2.
  5063. </param>
  5064. <param name="format">
  5065. Specifies the format of the pixel data. Must be one of:
  5066. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  5067. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  5068. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5069. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  5070. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  5071. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  5072. </param>
  5073. <param name="type">
  5074. Specifies the data type for data. Must be one of:
  5075. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  5076. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  5077. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  5078. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  5079. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5080. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5081. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5082. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5083. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5084. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5085. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5086. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5087. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5088. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5089. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  5090. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  5091. </param>
  5092. <param name="level">
  5093. Specifies the mipmap level of the image data.
  5094. </param>
  5095. <param name="min">
  5096. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5097. </param>
  5098. <param name="max">
  5099. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5100. </param>
  5101. <param name="data">
  5102. Specifies a pointer to the image data in memory.
  5103. </param>
  5104. <returns>
  5105. A return value of zero indicates success, otherwise a GLU error code is
  5106. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5107. </returns>
  5108. <remarks>
  5109. <para>
  5110. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  5111. texture maps of decreasing resolutions called a mipmap. This is used for the
  5112. antialiasing of texture mapped primitives.
  5113. </para>
  5114. <para>
  5115. A return value of zero indicates success, otherwise a GLU error code is
  5116. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5117. </para>
  5118. <para>
  5119. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  5120. decimating data in half until size 1×1 is reached. At each level, each texel
  5121. in the halved mipmap level is an average of the corresponding two texels in
  5122. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  5123. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  5124. than the highest mipmap level for the texture of the specified size, then a
  5125. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  5126. loaded.
  5127. </para>
  5128. <para>
  5129. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  5130. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  5131. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  5132. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  5133. an error is returned and nothing is loaded since <i>max</i> is larger than
  5134. the highest mipmap level which is, in this case, 6.
  5135. </para>
  5136. <para>
  5137. The highest mipmap level can be derived from the formula
  5138. <c>log2((width)*(2^level))</c>.
  5139. </para>
  5140. <para>
  5141. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  5142. the acceptable values for <i>type</i> parameter. See the
  5143. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  5144. acceptable values for <i>level</i> parameter.
  5145. </para>
  5146. <para>
  5147. <b>NOTES</b>
  5148. </para>
  5149. <para>
  5150. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  5151. greater.
  5152. </para>
  5153. <para>
  5154. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  5155. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5156. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5157. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5158. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5159. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5160. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5161. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5162. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5163. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5164. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5165. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  5166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  5167. version is 1.2 or greater.
  5168. </para>
  5169. <para>
  5170. <b>ERRORS</b>
  5171. </para>
  5172. <para>
  5173. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  5174. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  5175. highest mipmap level for <i>data</i>.
  5176. </para>
  5177. <para>
  5178. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  5179. </para>
  5180. <para>
  5181. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  5182. <i>format</i>, or <i>type</i> are not legal.
  5183. </para>
  5184. <para>
  5185. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  5187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  5188. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5189. </para>
  5190. <para>
  5191. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  5193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  5194. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5195. </para>
  5196. <para>
  5197. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5198. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  5199. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  5200. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5201. </para>
  5202. <para>
  5203. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5204. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  5205. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  5206. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5207. </para>
  5208. <para>
  5209. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  5211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  5212. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5213. </para>
  5214. <para>
  5215. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  5217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  5218. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5219. </para>
  5220. </remarks>
  5221. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5222. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5223. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  5224. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5225. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5226. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5227. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5228. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5229. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5230. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5231. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5232. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  5233. </member>
  5234. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[])">
  5235. <summary>
  5236. Builds a subset of one-dimensional mipmap levels.
  5237. </summary>
  5238. <param name="target">
  5239. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  5240. </param>
  5241. <param name="internalFormat">
  5242. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  5243. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5244. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  5245. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  5246. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  5247. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  5248. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  5249. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  5250. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  5251. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  5252. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  5253. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  5254. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  5255. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  5256. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  5257. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  5258. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  5259. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  5260. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  5261. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  5262. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  5263. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  5264. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  5265. </param>
  5266. <param name="width">
  5267. Specifies the width in pixels of the texture image. This should be a power of 2.
  5268. </param>
  5269. <param name="format">
  5270. Specifies the format of the pixel data. Must be one of:
  5271. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  5272. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  5273. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5274. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  5275. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  5276. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  5277. </param>
  5278. <param name="type">
  5279. Specifies the data type for data. Must be one of:
  5280. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  5281. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  5282. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  5283. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  5284. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5285. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5286. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5287. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5288. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5289. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5290. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5291. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5292. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5293. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5294. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  5295. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  5296. </param>
  5297. <param name="level">
  5298. Specifies the mipmap level of the image data.
  5299. </param>
  5300. <param name="min">
  5301. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5302. </param>
  5303. <param name="max">
  5304. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5305. </param>
  5306. <param name="data">
  5307. Specifies a pointer to the image data in memory.
  5308. </param>
  5309. <returns>
  5310. A return value of zero indicates success, otherwise a GLU error code is
  5311. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5312. </returns>
  5313. <remarks>
  5314. <para>
  5315. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  5316. texture maps of decreasing resolutions called a mipmap. This is used for the
  5317. antialiasing of texture mapped primitives.
  5318. </para>
  5319. <para>
  5320. A return value of zero indicates success, otherwise a GLU error code is
  5321. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5322. </para>
  5323. <para>
  5324. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  5325. decimating data in half until size 1×1 is reached. At each level, each texel
  5326. in the halved mipmap level is an average of the corresponding two texels in
  5327. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  5328. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  5329. than the highest mipmap level for the texture of the specified size, then a
  5330. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  5331. loaded.
  5332. </para>
  5333. <para>
  5334. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  5335. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  5336. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  5337. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  5338. an error is returned and nothing is loaded since <i>max</i> is larger than
  5339. the highest mipmap level which is, in this case, 6.
  5340. </para>
  5341. <para>
  5342. The highest mipmap level can be derived from the formula
  5343. <c>log2((width)*(2^level))</c>.
  5344. </para>
  5345. <para>
  5346. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  5347. the acceptable values for <i>type</i> parameter. See the
  5348. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  5349. acceptable values for <i>level</i> parameter.
  5350. </para>
  5351. <para>
  5352. <b>NOTES</b>
  5353. </para>
  5354. <para>
  5355. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  5356. greater.
  5357. </para>
  5358. <para>
  5359. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  5360. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5361. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5362. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5363. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5364. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5365. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5366. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5367. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5368. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5369. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5370. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  5371. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  5372. version is 1.2 or greater.
  5373. </para>
  5374. <para>
  5375. <b>ERRORS</b>
  5376. </para>
  5377. <para>
  5378. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  5379. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  5380. highest mipmap level for <i>data</i>.
  5381. </para>
  5382. <para>
  5383. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  5384. </para>
  5385. <para>
  5386. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  5387. <i>format</i>, or <i>type</i> are not legal.
  5388. </para>
  5389. <para>
  5390. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  5392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  5393. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5394. </para>
  5395. <para>
  5396. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5397. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  5398. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  5399. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5400. </para>
  5401. <para>
  5402. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5403. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  5404. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  5405. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5406. </para>
  5407. <para>
  5408. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5409. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  5410. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  5411. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5412. </para>
  5413. <para>
  5414. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5415. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  5416. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  5417. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5418. </para>
  5419. <para>
  5420. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  5422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  5423. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5424. </para>
  5425. </remarks>
  5426. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5427. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5428. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  5429. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5430. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5431. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5432. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5433. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5434. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5435. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5436. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5437. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  5438. </member>
  5439. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:])">
  5440. <summary>
  5441. Builds a subset of one-dimensional mipmap levels.
  5442. </summary>
  5443. <param name="target">
  5444. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  5445. </param>
  5446. <param name="internalFormat">
  5447. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  5448. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5449. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  5450. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  5451. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  5452. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  5453. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  5454. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  5455. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  5456. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  5457. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  5458. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  5459. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  5460. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  5461. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  5462. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  5463. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  5464. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  5465. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  5466. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  5467. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  5468. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  5469. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  5470. </param>
  5471. <param name="width">
  5472. Specifies the width in pixels of the texture image. This should be a power of 2.
  5473. </param>
  5474. <param name="format">
  5475. Specifies the format of the pixel data. Must be one of:
  5476. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  5477. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  5478. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5479. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  5480. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  5481. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  5482. </param>
  5483. <param name="type">
  5484. Specifies the data type for data. Must be one of:
  5485. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  5486. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  5487. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  5488. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  5489. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5490. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5491. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5492. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5493. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5494. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5495. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5496. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5497. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5498. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5499. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  5500. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  5501. </param>
  5502. <param name="level">
  5503. Specifies the mipmap level of the image data.
  5504. </param>
  5505. <param name="min">
  5506. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5507. </param>
  5508. <param name="max">
  5509. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5510. </param>
  5511. <param name="data">
  5512. Specifies a pointer to the image data in memory.
  5513. </param>
  5514. <returns>
  5515. A return value of zero indicates success, otherwise a GLU error code is
  5516. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5517. </returns>
  5518. <remarks>
  5519. <para>
  5520. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  5521. texture maps of decreasing resolutions called a mipmap. This is used for the
  5522. antialiasing of texture mapped primitives.
  5523. </para>
  5524. <para>
  5525. A return value of zero indicates success, otherwise a GLU error code is
  5526. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5527. </para>
  5528. <para>
  5529. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  5530. decimating data in half until size 1×1 is reached. At each level, each texel
  5531. in the halved mipmap level is an average of the corresponding two texels in
  5532. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  5533. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  5534. than the highest mipmap level for the texture of the specified size, then a
  5535. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  5536. loaded.
  5537. </para>
  5538. <para>
  5539. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  5540. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  5541. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  5542. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  5543. an error is returned and nothing is loaded since <i>max</i> is larger than
  5544. the highest mipmap level which is, in this case, 6.
  5545. </para>
  5546. <para>
  5547. The highest mipmap level can be derived from the formula
  5548. <c>log2((width)*(2^level))</c>.
  5549. </para>
  5550. <para>
  5551. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  5552. the acceptable values for <i>type</i> parameter. See the
  5553. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  5554. acceptable values for <i>level</i> parameter.
  5555. </para>
  5556. <para>
  5557. <b>NOTES</b>
  5558. </para>
  5559. <para>
  5560. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  5561. greater.
  5562. </para>
  5563. <para>
  5564. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  5565. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5566. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5567. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5568. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5571. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5572. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5573. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5574. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5575. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  5576. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  5577. version is 1.2 or greater.
  5578. </para>
  5579. <para>
  5580. <b>ERRORS</b>
  5581. </para>
  5582. <para>
  5583. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  5584. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  5585. highest mipmap level for <i>data</i>.
  5586. </para>
  5587. <para>
  5588. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  5589. </para>
  5590. <para>
  5591. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  5592. <i>format</i>, or <i>type</i> are not legal.
  5593. </para>
  5594. <para>
  5595. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  5597. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  5598. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5599. </para>
  5600. <para>
  5601. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  5603. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  5604. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5605. </para>
  5606. <para>
  5607. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5608. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  5609. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  5610. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5611. </para>
  5612. <para>
  5613. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5614. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  5615. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  5616. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5617. </para>
  5618. <para>
  5619. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5620. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  5621. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  5622. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5623. </para>
  5624. <para>
  5625. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5626. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  5627. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  5628. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5629. </para>
  5630. </remarks>
  5631. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5632. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5633. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  5634. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5635. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5636. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5637. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5638. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5639. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5640. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5641. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5642. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  5643. </member>
  5644. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:,0:])">
  5645. <summary>
  5646. Builds a subset of one-dimensional mipmap levels.
  5647. </summary>
  5648. <param name="target">
  5649. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  5650. </param>
  5651. <param name="internalFormat">
  5652. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  5653. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5654. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  5655. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  5656. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  5657. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  5658. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  5659. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  5660. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  5661. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  5662. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  5663. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  5664. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  5665. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  5666. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  5667. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  5668. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  5669. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  5670. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  5671. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  5672. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  5673. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  5674. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  5675. </param>
  5676. <param name="width">
  5677. Specifies the width in pixels of the texture image. This should be a power of 2.
  5678. </param>
  5679. <param name="format">
  5680. Specifies the format of the pixel data. Must be one of:
  5681. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  5682. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  5683. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5684. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  5685. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  5686. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  5687. </param>
  5688. <param name="type">
  5689. Specifies the data type for data. Must be one of:
  5690. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  5691. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  5692. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  5693. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  5694. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5695. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5697. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5698. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5699. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5700. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5701. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5702. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5703. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5704. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  5705. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  5706. </param>
  5707. <param name="level">
  5708. Specifies the mipmap level of the image data.
  5709. </param>
  5710. <param name="min">
  5711. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5712. </param>
  5713. <param name="max">
  5714. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5715. </param>
  5716. <param name="data">
  5717. Specifies a pointer to the image data in memory.
  5718. </param>
  5719. <returns>
  5720. A return value of zero indicates success, otherwise a GLU error code is
  5721. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5722. </returns>
  5723. <remarks>
  5724. <para>
  5725. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  5726. texture maps of decreasing resolutions called a mipmap. This is used for the
  5727. antialiasing of texture mapped primitives.
  5728. </para>
  5729. <para>
  5730. A return value of zero indicates success, otherwise a GLU error code is
  5731. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5732. </para>
  5733. <para>
  5734. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  5735. decimating data in half until size 1×1 is reached. At each level, each texel
  5736. in the halved mipmap level is an average of the corresponding two texels in
  5737. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  5738. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  5739. than the highest mipmap level for the texture of the specified size, then a
  5740. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  5741. loaded.
  5742. </para>
  5743. <para>
  5744. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  5745. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  5746. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  5747. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  5748. an error is returned and nothing is loaded since <i>max</i> is larger than
  5749. the highest mipmap level which is, in this case, 6.
  5750. </para>
  5751. <para>
  5752. The highest mipmap level can be derived from the formula
  5753. <c>log2((width)*(2^level))</c>.
  5754. </para>
  5755. <para>
  5756. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  5757. the acceptable values for <i>type</i> parameter. See the
  5758. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  5759. acceptable values for <i>level</i> parameter.
  5760. </para>
  5761. <para>
  5762. <b>NOTES</b>
  5763. </para>
  5764. <para>
  5765. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  5766. greater.
  5767. </para>
  5768. <para>
  5769. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  5770. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5771. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5772. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5773. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5774. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5775. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5777. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5778. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5779. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  5781. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  5782. version is 1.2 or greater.
  5783. </para>
  5784. <para>
  5785. <b>ERRORS</b>
  5786. </para>
  5787. <para>
  5788. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  5789. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  5790. highest mipmap level for <i>data</i>.
  5791. </para>
  5792. <para>
  5793. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  5794. </para>
  5795. <para>
  5796. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  5797. <i>format</i>, or <i>type</i> are not legal.
  5798. </para>
  5799. <para>
  5800. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5801. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  5802. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  5803. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5804. </para>
  5805. <para>
  5806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5807. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  5808. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  5809. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  5810. </para>
  5811. <para>
  5812. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5813. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  5814. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  5815. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5816. </para>
  5817. <para>
  5818. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5819. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  5820. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  5821. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5822. </para>
  5823. <para>
  5824. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5825. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  5826. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  5827. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5828. </para>
  5829. <para>
  5830. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  5831. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  5832. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  5833. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  5834. </para>
  5835. </remarks>
  5836. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5837. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5838. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  5839. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5840. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5841. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  5842. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5843. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5844. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5845. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5846. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  5847. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  5848. </member>
  5849. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
  5850. <summary>
  5851. Builds a subset of one-dimensional mipmap levels.
  5852. </summary>
  5853. <param name="target">
  5854. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  5855. </param>
  5856. <param name="internalFormat">
  5857. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  5858. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5859. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  5860. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  5861. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  5862. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  5863. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  5864. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  5865. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  5866. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  5867. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  5868. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  5869. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  5870. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  5871. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  5872. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  5873. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  5874. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  5875. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  5876. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  5877. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  5878. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  5879. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  5880. </param>
  5881. <param name="width">
  5882. Specifies the width in pixels of the texture image. This should be a power of 2.
  5883. </param>
  5884. <param name="format">
  5885. Specifies the format of the pixel data. Must be one of:
  5886. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  5887. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  5888. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  5889. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  5890. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  5891. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  5892. </param>
  5893. <param name="type">
  5894. Specifies the data type for data. Must be one of:
  5895. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  5896. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  5897. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  5898. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  5899. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5900. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5902. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5903. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5904. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5908. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  5910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  5911. </param>
  5912. <param name="level">
  5913. Specifies the mipmap level of the image data.
  5914. </param>
  5915. <param name="min">
  5916. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5917. </param>
  5918. <param name="max">
  5919. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  5920. </param>
  5921. <param name="data">
  5922. Specifies a pointer to the image data in memory.
  5923. </param>
  5924. <returns>
  5925. A return value of zero indicates success, otherwise a GLU error code is
  5926. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5927. </returns>
  5928. <remarks>
  5929. <para>
  5930. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  5931. texture maps of decreasing resolutions called a mipmap. This is used for the
  5932. antialiasing of texture mapped primitives.
  5933. </para>
  5934. <para>
  5935. A return value of zero indicates success, otherwise a GLU error code is
  5936. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  5937. </para>
  5938. <para>
  5939. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  5940. decimating data in half until size 1×1 is reached. At each level, each texel
  5941. in the halved mipmap level is an average of the corresponding two texels in
  5942. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  5943. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  5944. than the highest mipmap level for the texture of the specified size, then a
  5945. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  5946. loaded.
  5947. </para>
  5948. <para>
  5949. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  5950. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  5951. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  5952. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  5953. an error is returned and nothing is loaded since <i>max</i> is larger than
  5954. the highest mipmap level which is, in this case, 6.
  5955. </para>
  5956. <para>
  5957. The highest mipmap level can be derived from the formula
  5958. <c>log2((width)*(2^level))</c>.
  5959. </para>
  5960. <para>
  5961. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  5962. the acceptable values for <i>type</i> parameter. See the
  5963. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  5964. acceptable values for <i>level</i> parameter.
  5965. </para>
  5966. <para>
  5967. <b>NOTES</b>
  5968. </para>
  5969. <para>
  5970. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  5971. greater.
  5972. </para>
  5973. <para>
  5974. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  5975. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  5976. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  5977. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  5978. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  5979. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  5980. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  5981. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  5982. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  5983. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  5984. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  5985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  5986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  5987. version is 1.2 or greater.
  5988. </para>
  5989. <para>
  5990. <b>ERRORS</b>
  5991. </para>
  5992. <para>
  5993. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  5994. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  5995. highest mipmap level for <i>data</i>.
  5996. </para>
  5997. <para>
  5998. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  5999. </para>
  6000. <para>
  6001. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  6002. <i>format</i>, or <i>type</i> are not legal.
  6003. </para>
  6004. <para>
  6005. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6006. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  6007. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  6008. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6009. </para>
  6010. <para>
  6011. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  6013. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  6014. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6015. </para>
  6016. <para>
  6017. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6018. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  6019. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  6020. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6021. </para>
  6022. <para>
  6023. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  6025. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  6026. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6027. </para>
  6028. <para>
  6029. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  6031. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  6032. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6033. </para>
  6034. <para>
  6035. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  6037. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  6038. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6039. </para>
  6040. </remarks>
  6041. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6042. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6043. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  6044. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6045. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6046. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6047. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6048. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6049. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6050. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6051. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6052. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  6053. </member>
  6054. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Void*)">
  6055. <summary>
  6056. Builds a subset of one-dimensional mipmap levels.
  6057. </summary>
  6058. <param name="target">
  6059. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  6060. </param>
  6061. <param name="internalFormat">
  6062. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  6063. or 4 or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6064. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  6065. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  6066. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  6067. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  6068. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  6069. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  6070. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  6071. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  6072. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  6073. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  6074. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  6075. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  6076. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  6077. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  6078. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  6079. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  6080. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  6081. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  6082. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  6083. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  6084. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  6085. </param>
  6086. <param name="width">
  6087. Specifies the width in pixels of the texture image. This should be a power of 2.
  6088. </param>
  6089. <param name="format">
  6090. Specifies the format of the pixel data. Must be one of:
  6091. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  6092. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  6093. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6094. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6095. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  6096. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  6097. </param>
  6098. <param name="type">
  6099. Specifies the data type for data. Must be one of:
  6100. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  6101. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  6102. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  6103. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  6104. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6105. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6106. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6107. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6109. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  6115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  6116. </param>
  6117. <param name="level">
  6118. Specifies the mipmap level of the image data.
  6119. </param>
  6120. <param name="min">
  6121. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  6122. </param>
  6123. <param name="max">
  6124. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  6125. </param>
  6126. <param name="data">
  6127. Specifies a pointer to the image data in memory.
  6128. </param>
  6129. <returns>
  6130. A return value of zero indicates success, otherwise a GLU error code is
  6131. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6132. </returns>
  6133. <remarks>
  6134. <para>
  6135. <b>gluBuild1DMipmapLevels</b> builds a subset of prefiltered one-dimensional
  6136. texture maps of decreasing resolutions called a mipmap. This is used for the
  6137. antialiasing of texture mapped primitives.
  6138. </para>
  6139. <para>
  6140. A return value of zero indicates success, otherwise a GLU error code is
  6141. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6142. </para>
  6143. <para>
  6144. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  6145. decimating data in half until size 1×1 is reached. At each level, each texel
  6146. in the halved mipmap level is an average of the corresponding two texels in
  6147. the larger mipmap level. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load
  6148. these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
  6149. than the highest mipmap level for the texture of the specified size, then a
  6150. GLU error code is returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is
  6151. loaded.
  6152. </para>
  6153. <para>
  6154. For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
  6155. levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
  6156. through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
  6157. mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
  6158. an error is returned and nothing is loaded since <i>max</i> is larger than
  6159. the highest mipmap level which is, in this case, 6.
  6160. </para>
  6161. <para>
  6162. The highest mipmap level can be derived from the formula
  6163. <c>log2((width)*(2^level))</c>.
  6164. </para>
  6165. <para>
  6166. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  6167. the acceptable values for <i>type</i> parameter. See the
  6168. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  6169. acceptable values for <i>level</i> parameter.
  6170. </para>
  6171. <para>
  6172. <b>NOTES</b>
  6173. </para>
  6174. <para>
  6175. <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
  6176. greater.
  6177. </para>
  6178. <para>
  6179. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  6180. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6181. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6182. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6183. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6184. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6188. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6189. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  6191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  6192. version is 1.2 or greater.
  6193. </para>
  6194. <para>
  6195. <b>ERRORS</b>
  6196. </para>
  6197. <para>
  6198. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  6199. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  6200. highest mipmap level for <i>data</i>.
  6201. </para>
  6202. <para>
  6203. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  6204. </para>
  6205. <para>
  6206. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  6207. <i>format</i>, or <i>type</i> are not legal.
  6208. </para>
  6209. <para>
  6210. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  6212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  6213. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6214. </para>
  6215. <para>
  6216. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  6218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  6219. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6220. </para>
  6221. <para>
  6222. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6223. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  6224. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  6225. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6226. </para>
  6227. <para>
  6228. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6229. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  6230. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  6231. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6232. </para>
  6233. <para>
  6234. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6235. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  6236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  6237. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6238. </para>
  6239. <para>
  6240. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  6242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  6243. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6244. </para>
  6245. </remarks>
  6246. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6247. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6248. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  6249. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6250. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6251. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6252. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6253. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6254. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6255. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6256. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6257. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  6258. </member>
  6259. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])">
  6260. <summary>
  6261. Builds a one-dimensional mipmap.
  6262. </summary>
  6263. <param name="target">
  6264. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  6265. </param>
  6266. <param name="internalFormat">
  6267. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  6268. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6269. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  6270. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  6271. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  6272. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  6273. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  6274. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  6275. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  6276. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  6277. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  6278. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  6279. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  6280. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  6281. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  6282. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  6283. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  6284. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  6285. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  6286. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6287. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  6288. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  6289. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  6290. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  6291. </param>
  6292. <param name="width">
  6293. Specifies the width, in pixels, of the texture image.
  6294. </param>
  6295. <param name="format">
  6296. Specifies the format of the pixel data. Must be one of
  6297. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  6298. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  6299. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6300. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6301. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  6302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  6303. </param>
  6304. <param name="type">
  6305. Specifies the data type for <i>data</i>. Must be one of
  6306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  6307. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  6308. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  6309. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  6310. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6311. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6312. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6316. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6318. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  6321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  6322. </param>
  6323. <param name="data">
  6324. Specifies a pointer to the image data in memory.
  6325. </param>
  6326. <returns>
  6327. A return value of zero indicates success, otherwise a GLU error code is
  6328. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6329. </returns>
  6330. <remarks>
  6331. <para>
  6332. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  6333. texture maps of decreasing resolutions called a mipmap. This is used for the
  6334. antialiasing of texture mapped primitives.
  6335. </para>
  6336. <para>
  6337. A return value of zero indicates success, otherwise a GLU error code is
  6338. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6339. </para>
  6340. <para>
  6341. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  6342. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  6343. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  6344. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  6345. mipmapping operations described below. For example, if <i>width</i> is 57
  6346. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  6347. </para>
  6348. <para>
  6349. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  6350. determine if the implementation can fit the requested texture. If not, width
  6351. is continually halved until it fits.
  6352. </para>
  6353. <para>
  6354. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  6355. in half until size 1×1 is reached. At each level, each texel in the halved
  6356. mipmap level is an average of the corresponding two texels in the larger
  6357. mipmap level.
  6358. </para>
  6359. <para>
  6360. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  6361. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  6362. example, if <i>width</i> is 64 and the implementation can store a texture of
  6363. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  6364. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  6365. </para>
  6366. <para>
  6367. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  6368. the acceptable values for the <i>type</i> parameter. See the
  6369. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  6370. acceptable values for the <i>data</i> parameter.
  6371. </para>
  6372. <para>
  6373. <b>NOTES</b>
  6374. </para>
  6375. <para>
  6376. Note that there is no direct way of querying the maximum level. This can be
  6377. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  6378. query for the width actually used at level 0. (The width may not be equal to
  6379. <i>width</i> since proxy textures might have scaled it to fit the
  6380. implementation.) Then the maximum level can be derived from the formula
  6381. <c>log2(width)</c>.
  6382. </para>
  6383. <para>
  6384. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  6385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6394. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  6396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  6397. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  6398. </para>
  6399. <para>
  6400. <b>ERRORS</b>
  6401. </para>
  6402. <para>
  6403. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  6404. </para>
  6405. <para>
  6406. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  6407. are not legal.
  6408. </para>
  6409. <para>
  6410. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  6412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  6413. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6414. </para>
  6415. <para>
  6416. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  6418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  6419. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6420. </para>
  6421. <para>
  6422. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  6424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  6425. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6426. </para>
  6427. <para>
  6428. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  6430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  6431. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6432. </para>
  6433. <para>
  6434. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  6436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  6437. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6438. </para>
  6439. <para>
  6440. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  6442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  6443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6444. </para>
  6445. </remarks>
  6446. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6447. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6448. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  6449. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6450. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6451. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6452. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6453. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6454. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6455. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6456. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6457. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  6458. </member>
  6459. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:])">
  6460. <summary>
  6461. Builds a one-dimensional mipmap.
  6462. </summary>
  6463. <param name="target">
  6464. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  6465. </param>
  6466. <param name="internalFormat">
  6467. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  6468. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6469. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  6470. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  6471. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  6472. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  6473. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  6474. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  6475. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  6476. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  6477. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  6478. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  6479. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  6480. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  6481. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  6482. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  6483. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  6484. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  6485. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  6486. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6487. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  6488. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  6489. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  6490. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  6491. </param>
  6492. <param name="width">
  6493. Specifies the width, in pixels, of the texture image.
  6494. </param>
  6495. <param name="format">
  6496. Specifies the format of the pixel data. Must be one of
  6497. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  6498. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  6499. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6500. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6501. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  6502. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  6503. </param>
  6504. <param name="type">
  6505. Specifies the data type for <i>data</i>. Must be one of
  6506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  6507. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  6508. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  6509. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  6510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  6521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  6522. </param>
  6523. <param name="data">
  6524. Specifies a pointer to the image data in memory.
  6525. </param>
  6526. <returns>
  6527. A return value of zero indicates success, otherwise a GLU error code is
  6528. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6529. </returns>
  6530. <remarks>
  6531. <para>
  6532. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  6533. texture maps of decreasing resolutions called a mipmap. This is used for the
  6534. antialiasing of texture mapped primitives.
  6535. </para>
  6536. <para>
  6537. A return value of zero indicates success, otherwise a GLU error code is
  6538. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6539. </para>
  6540. <para>
  6541. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  6542. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  6543. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  6544. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  6545. mipmapping operations described below. For example, if <i>width</i> is 57
  6546. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  6547. </para>
  6548. <para>
  6549. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  6550. determine if the implementation can fit the requested texture. If not, width
  6551. is continually halved until it fits.
  6552. </para>
  6553. <para>
  6554. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  6555. in half until size 1×1 is reached. At each level, each texel in the halved
  6556. mipmap level is an average of the corresponding two texels in the larger
  6557. mipmap level.
  6558. </para>
  6559. <para>
  6560. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  6561. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  6562. example, if <i>width</i> is 64 and the implementation can store a texture of
  6563. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  6564. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  6565. </para>
  6566. <para>
  6567. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  6568. the acceptable values for the <i>type</i> parameter. See the
  6569. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  6570. acceptable values for the <i>data</i> parameter.
  6571. </para>
  6572. <para>
  6573. <b>NOTES</b>
  6574. </para>
  6575. <para>
  6576. Note that there is no direct way of querying the maximum level. This can be
  6577. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  6578. query for the width actually used at level 0. (The width may not be equal to
  6579. <i>width</i> since proxy textures might have scaled it to fit the
  6580. implementation.) Then the maximum level can be derived from the formula
  6581. <c>log2(width)</c>.
  6582. </para>
  6583. <para>
  6584. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  6585. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6586. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6587. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6590. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  6596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  6597. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  6598. </para>
  6599. <para>
  6600. <b>ERRORS</b>
  6601. </para>
  6602. <para>
  6603. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  6604. </para>
  6605. <para>
  6606. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  6607. are not legal.
  6608. </para>
  6609. <para>
  6610. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6611. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  6612. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  6613. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6614. </para>
  6615. <para>
  6616. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  6618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  6619. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6620. </para>
  6621. <para>
  6622. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  6624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  6625. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6626. </para>
  6627. <para>
  6628. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  6630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  6631. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6632. </para>
  6633. <para>
  6634. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  6636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  6637. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6638. </para>
  6639. <para>
  6640. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  6642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  6643. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6644. </para>
  6645. </remarks>
  6646. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6647. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6648. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  6649. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6650. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6651. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6652. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6653. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6654. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6655. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6656. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6657. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  6658. </member>
  6659. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:,0:])">
  6660. <summary>
  6661. Builds a one-dimensional mipmap.
  6662. </summary>
  6663. <param name="target">
  6664. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  6665. </param>
  6666. <param name="internalFormat">
  6667. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  6668. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6669. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  6670. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  6671. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  6672. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  6673. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  6674. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  6675. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  6676. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  6677. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  6678. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  6679. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  6680. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  6681. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  6682. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  6683. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  6684. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  6685. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  6686. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6687. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  6688. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  6689. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  6690. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  6691. </param>
  6692. <param name="width">
  6693. Specifies the width, in pixels, of the texture image.
  6694. </param>
  6695. <param name="format">
  6696. Specifies the format of the pixel data. Must be one of
  6697. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  6698. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  6699. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6700. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6701. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  6702. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  6703. </param>
  6704. <param name="type">
  6705. Specifies the data type for <i>data</i>. Must be one of
  6706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  6707. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  6708. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  6709. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  6710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6715. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6718. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  6721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  6722. </param>
  6723. <param name="data">
  6724. Specifies a pointer to the image data in memory.
  6725. </param>
  6726. <returns>
  6727. A return value of zero indicates success, otherwise a GLU error code is
  6728. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6729. </returns>
  6730. <remarks>
  6731. <para>
  6732. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  6733. texture maps of decreasing resolutions called a mipmap. This is used for the
  6734. antialiasing of texture mapped primitives.
  6735. </para>
  6736. <para>
  6737. A return value of zero indicates success, otherwise a GLU error code is
  6738. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6739. </para>
  6740. <para>
  6741. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  6742. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  6743. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  6744. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  6745. mipmapping operations described below. For example, if <i>width</i> is 57
  6746. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  6747. </para>
  6748. <para>
  6749. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  6750. determine if the implementation can fit the requested texture. If not, width
  6751. is continually halved until it fits.
  6752. </para>
  6753. <para>
  6754. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  6755. in half until size 1×1 is reached. At each level, each texel in the halved
  6756. mipmap level is an average of the corresponding two texels in the larger
  6757. mipmap level.
  6758. </para>
  6759. <para>
  6760. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  6761. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  6762. example, if <i>width</i> is 64 and the implementation can store a texture of
  6763. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  6764. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  6765. </para>
  6766. <para>
  6767. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  6768. the acceptable values for the <i>type</i> parameter. See the
  6769. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  6770. acceptable values for the <i>data</i> parameter.
  6771. </para>
  6772. <para>
  6773. <b>NOTES</b>
  6774. </para>
  6775. <para>
  6776. Note that there is no direct way of querying the maximum level. This can be
  6777. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  6778. query for the width actually used at level 0. (The width may not be equal to
  6779. <i>width</i> since proxy textures might have scaled it to fit the
  6780. implementation.) Then the maximum level can be derived from the formula
  6781. <c>log2(width)</c>.
  6782. </para>
  6783. <para>
  6784. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  6785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6791. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6792. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6793. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  6796. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  6797. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  6798. </para>
  6799. <para>
  6800. <b>ERRORS</b>
  6801. </para>
  6802. <para>
  6803. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  6804. </para>
  6805. <para>
  6806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  6807. are not legal.
  6808. </para>
  6809. <para>
  6810. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  6812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  6813. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6814. </para>
  6815. <para>
  6816. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  6818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  6819. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  6820. </para>
  6821. <para>
  6822. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  6824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  6825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6826. </para>
  6827. <para>
  6828. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  6830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  6831. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6832. </para>
  6833. <para>
  6834. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  6836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  6837. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6838. </para>
  6839. <para>
  6840. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  6841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  6842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  6843. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  6844. </para>
  6845. </remarks>
  6846. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6847. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6848. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  6849. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6850. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6851. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  6852. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6853. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6854. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6855. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6856. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  6857. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  6858. </member>
  6859. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[])">
  6860. <summary>
  6861. Builds a one-dimensional mipmap.
  6862. </summary>
  6863. <param name="target">
  6864. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  6865. </param>
  6866. <param name="internalFormat">
  6867. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  6868. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6869. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  6870. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  6871. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  6872. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  6873. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  6874. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  6875. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  6876. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  6877. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  6878. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  6879. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  6880. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  6881. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  6882. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  6883. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  6884. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  6885. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  6886. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6887. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  6888. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  6889. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  6890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  6891. </param>
  6892. <param name="width">
  6893. Specifies the width, in pixels, of the texture image.
  6894. </param>
  6895. <param name="format">
  6896. Specifies the format of the pixel data. Must be one of
  6897. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  6898. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  6899. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  6900. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  6901. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  6902. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  6903. </param>
  6904. <param name="type">
  6905. Specifies the data type for <i>data</i>. Must be one of
  6906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  6907. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  6908. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  6909. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  6910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6918. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  6921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  6922. </param>
  6923. <param name="data">
  6924. Specifies a pointer to the image data in memory.
  6925. </param>
  6926. <returns>
  6927. A return value of zero indicates success, otherwise a GLU error code is
  6928. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6929. </returns>
  6930. <remarks>
  6931. <para>
  6932. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  6933. texture maps of decreasing resolutions called a mipmap. This is used for the
  6934. antialiasing of texture mapped primitives.
  6935. </para>
  6936. <para>
  6937. A return value of zero indicates success, otherwise a GLU error code is
  6938. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  6939. </para>
  6940. <para>
  6941. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  6942. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  6943. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  6944. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  6945. mipmapping operations described below. For example, if <i>width</i> is 57
  6946. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  6947. </para>
  6948. <para>
  6949. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  6950. determine if the implementation can fit the requested texture. If not, width
  6951. is continually halved until it fits.
  6952. </para>
  6953. <para>
  6954. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  6955. in half until size 1×1 is reached. At each level, each texel in the halved
  6956. mipmap level is an average of the corresponding two texels in the larger
  6957. mipmap level.
  6958. </para>
  6959. <para>
  6960. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  6961. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  6962. example, if <i>width</i> is 64 and the implementation can store a texture of
  6963. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  6964. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  6965. </para>
  6966. <para>
  6967. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  6968. the acceptable values for the <i>type</i> parameter. See the
  6969. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  6970. acceptable values for the <i>data</i> parameter.
  6971. </para>
  6972. <para>
  6973. <b>NOTES</b>
  6974. </para>
  6975. <para>
  6976. Note that there is no direct way of querying the maximum level. This can be
  6977. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  6978. query for the width actually used at level 0. (The width may not be equal to
  6979. <i>width</i> since proxy textures might have scaled it to fit the
  6980. implementation.) Then the maximum level can be derived from the formula
  6981. <c>log2(width)</c>.
  6982. </para>
  6983. <para>
  6984. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  6985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  6986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  6987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  6988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  6989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  6990. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  6991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  6992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  6993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  6994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  6995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  6996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  6997. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  6998. </para>
  6999. <para>
  7000. <b>ERRORS</b>
  7001. </para>
  7002. <para>
  7003. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  7004. </para>
  7005. <para>
  7006. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  7007. are not legal.
  7008. </para>
  7009. <para>
  7010. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7011. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  7012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  7013. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7014. </para>
  7015. <para>
  7016. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7017. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  7018. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  7019. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7020. </para>
  7021. <para>
  7022. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7023. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  7024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  7025. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7026. </para>
  7027. <para>
  7028. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  7030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  7031. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7032. </para>
  7033. <para>
  7034. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  7036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  7037. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7038. </para>
  7039. <para>
  7040. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  7042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  7043. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7044. </para>
  7045. </remarks>
  7046. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7047. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7048. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  7049. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7050. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7051. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7052. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7053. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7054. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7055. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7056. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7057. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  7058. </member>
  7059. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:])">
  7060. <summary>
  7061. Builds a one-dimensional mipmap.
  7062. </summary>
  7063. <param name="target">
  7064. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  7065. </param>
  7066. <param name="internalFormat">
  7067. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  7068. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7069. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  7070. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  7071. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  7072. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  7073. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  7074. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  7075. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  7076. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  7077. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  7078. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  7079. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  7080. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  7081. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  7082. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  7083. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  7084. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  7085. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  7086. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7087. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  7088. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  7089. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  7090. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  7091. </param>
  7092. <param name="width">
  7093. Specifies the width, in pixels, of the texture image.
  7094. </param>
  7095. <param name="format">
  7096. Specifies the format of the pixel data. Must be one of
  7097. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  7098. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  7099. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7100. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7101. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  7102. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  7103. </param>
  7104. <param name="type">
  7105. Specifies the data type for <i>data</i>. Must be one of
  7106. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  7107. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  7108. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  7109. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  7110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7117. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7118. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  7121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  7122. </param>
  7123. <param name="data">
  7124. Specifies a pointer to the image data in memory.
  7125. </param>
  7126. <returns>
  7127. A return value of zero indicates success, otherwise a GLU error code is
  7128. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7129. </returns>
  7130. <remarks>
  7131. <para>
  7132. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  7133. texture maps of decreasing resolutions called a mipmap. This is used for the
  7134. antialiasing of texture mapped primitives.
  7135. </para>
  7136. <para>
  7137. A return value of zero indicates success, otherwise a GLU error code is
  7138. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7139. </para>
  7140. <para>
  7141. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  7142. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  7143. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  7144. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  7145. mipmapping operations described below. For example, if <i>width</i> is 57
  7146. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  7147. </para>
  7148. <para>
  7149. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  7150. determine if the implementation can fit the requested texture. If not, width
  7151. is continually halved until it fits.
  7152. </para>
  7153. <para>
  7154. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  7155. in half until size 1×1 is reached. At each level, each texel in the halved
  7156. mipmap level is an average of the corresponding two texels in the larger
  7157. mipmap level.
  7158. </para>
  7159. <para>
  7160. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  7161. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  7162. example, if <i>width</i> is 64 and the implementation can store a texture of
  7163. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  7164. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  7165. </para>
  7166. <para>
  7167. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  7168. the acceptable values for the <i>type</i> parameter. See the
  7169. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  7170. acceptable values for the <i>data</i> parameter.
  7171. </para>
  7172. <para>
  7173. <b>NOTES</b>
  7174. </para>
  7175. <para>
  7176. Note that there is no direct way of querying the maximum level. This can be
  7177. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  7178. query for the width actually used at level 0. (The width may not be equal to
  7179. <i>width</i> since proxy textures might have scaled it to fit the
  7180. implementation.) Then the maximum level can be derived from the formula
  7181. <c>log2(width)</c>.
  7182. </para>
  7183. <para>
  7184. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  7185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7188. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7189. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7194. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  7196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  7197. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  7198. </para>
  7199. <para>
  7200. <b>ERRORS</b>
  7201. </para>
  7202. <para>
  7203. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  7204. </para>
  7205. <para>
  7206. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  7207. are not legal.
  7208. </para>
  7209. <para>
  7210. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  7212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  7213. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7214. </para>
  7215. <para>
  7216. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  7218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  7219. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7220. </para>
  7221. <para>
  7222. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7223. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  7224. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  7225. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7226. </para>
  7227. <para>
  7228. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7229. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  7230. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  7231. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7232. </para>
  7233. <para>
  7234. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7235. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  7236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  7237. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7238. </para>
  7239. <para>
  7240. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  7242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  7243. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7244. </para>
  7245. </remarks>
  7246. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7247. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7248. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  7249. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7250. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7251. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7252. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7253. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7254. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7255. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7256. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7257. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  7258. </member>
  7259. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:,0:])">
  7260. <summary>
  7261. Builds a one-dimensional mipmap.
  7262. </summary>
  7263. <param name="target">
  7264. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  7265. </param>
  7266. <param name="internalFormat">
  7267. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  7268. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7269. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  7270. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  7271. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  7272. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  7273. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  7274. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  7275. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  7276. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  7277. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  7278. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  7279. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  7280. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  7281. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  7282. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  7283. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  7284. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  7285. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  7286. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7287. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  7288. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  7289. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  7290. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  7291. </param>
  7292. <param name="width">
  7293. Specifies the width, in pixels, of the texture image.
  7294. </param>
  7295. <param name="format">
  7296. Specifies the format of the pixel data. Must be one of
  7297. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  7298. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  7299. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7300. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7301. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  7302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  7303. </param>
  7304. <param name="type">
  7305. Specifies the data type for <i>data</i>. Must be one of
  7306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  7307. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  7308. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  7309. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  7310. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7311. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7312. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7316. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7318. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  7321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  7322. </param>
  7323. <param name="data">
  7324. Specifies a pointer to the image data in memory.
  7325. </param>
  7326. <returns>
  7327. A return value of zero indicates success, otherwise a GLU error code is
  7328. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7329. </returns>
  7330. <remarks>
  7331. <para>
  7332. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  7333. texture maps of decreasing resolutions called a mipmap. This is used for the
  7334. antialiasing of texture mapped primitives.
  7335. </para>
  7336. <para>
  7337. A return value of zero indicates success, otherwise a GLU error code is
  7338. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7339. </para>
  7340. <para>
  7341. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  7342. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  7343. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  7344. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  7345. mipmapping operations described below. For example, if <i>width</i> is 57
  7346. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  7347. </para>
  7348. <para>
  7349. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  7350. determine if the implementation can fit the requested texture. If not, width
  7351. is continually halved until it fits.
  7352. </para>
  7353. <para>
  7354. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  7355. in half until size 1×1 is reached. At each level, each texel in the halved
  7356. mipmap level is an average of the corresponding two texels in the larger
  7357. mipmap level.
  7358. </para>
  7359. <para>
  7360. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  7361. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  7362. example, if <i>width</i> is 64 and the implementation can store a texture of
  7363. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  7364. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  7365. </para>
  7366. <para>
  7367. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  7368. the acceptable values for the <i>type</i> parameter. See the
  7369. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  7370. acceptable values for the <i>data</i> parameter.
  7371. </para>
  7372. <para>
  7373. <b>NOTES</b>
  7374. </para>
  7375. <para>
  7376. Note that there is no direct way of querying the maximum level. This can be
  7377. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  7378. query for the width actually used at level 0. (The width may not be equal to
  7379. <i>width</i> since proxy textures might have scaled it to fit the
  7380. implementation.) Then the maximum level can be derived from the formula
  7381. <c>log2(width)</c>.
  7382. </para>
  7383. <para>
  7384. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  7385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7394. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  7396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  7397. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  7398. </para>
  7399. <para>
  7400. <b>ERRORS</b>
  7401. </para>
  7402. <para>
  7403. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  7404. </para>
  7405. <para>
  7406. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  7407. are not legal.
  7408. </para>
  7409. <para>
  7410. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  7412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  7413. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7414. </para>
  7415. <para>
  7416. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  7418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  7419. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7420. </para>
  7421. <para>
  7422. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  7424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  7425. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7426. </para>
  7427. <para>
  7428. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  7430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  7431. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7432. </para>
  7433. <para>
  7434. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  7436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  7437. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7438. </para>
  7439. <para>
  7440. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  7442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  7443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7444. </para>
  7445. </remarks>
  7446. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7447. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7448. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  7449. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7450. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7451. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7452. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7453. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7454. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7455. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7456. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7457. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  7458. </member>
  7459. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[])">
  7460. <summary>
  7461. Builds a one-dimensional mipmap.
  7462. </summary>
  7463. <param name="target">
  7464. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  7465. </param>
  7466. <param name="internalFormat">
  7467. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  7468. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7469. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  7470. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  7471. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  7472. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  7473. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  7474. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  7475. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  7476. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  7477. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  7478. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  7479. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  7480. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  7481. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  7482. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  7483. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  7484. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  7485. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  7486. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7487. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  7488. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  7489. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  7490. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  7491. </param>
  7492. <param name="width">
  7493. Specifies the width, in pixels, of the texture image.
  7494. </param>
  7495. <param name="format">
  7496. Specifies the format of the pixel data. Must be one of
  7497. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  7498. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  7499. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7500. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7501. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  7502. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  7503. </param>
  7504. <param name="type">
  7505. Specifies the data type for <i>data</i>. Must be one of
  7506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  7507. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  7508. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  7509. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  7510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  7521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  7522. </param>
  7523. <param name="data">
  7524. Specifies a pointer to the image data in memory.
  7525. </param>
  7526. <returns>
  7527. A return value of zero indicates success, otherwise a GLU error code is
  7528. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7529. </returns>
  7530. <remarks>
  7531. <para>
  7532. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  7533. texture maps of decreasing resolutions called a mipmap. This is used for the
  7534. antialiasing of texture mapped primitives.
  7535. </para>
  7536. <para>
  7537. A return value of zero indicates success, otherwise a GLU error code is
  7538. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7539. </para>
  7540. <para>
  7541. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  7542. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  7543. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  7544. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  7545. mipmapping operations described below. For example, if <i>width</i> is 57
  7546. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  7547. </para>
  7548. <para>
  7549. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  7550. determine if the implementation can fit the requested texture. If not, width
  7551. is continually halved until it fits.
  7552. </para>
  7553. <para>
  7554. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  7555. in half until size 1×1 is reached. At each level, each texel in the halved
  7556. mipmap level is an average of the corresponding two texels in the larger
  7557. mipmap level.
  7558. </para>
  7559. <para>
  7560. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  7561. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  7562. example, if <i>width</i> is 64 and the implementation can store a texture of
  7563. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  7564. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  7565. </para>
  7566. <para>
  7567. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  7568. the acceptable values for the <i>type</i> parameter. See the
  7569. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  7570. acceptable values for the <i>data</i> parameter.
  7571. </para>
  7572. <para>
  7573. <b>NOTES</b>
  7574. </para>
  7575. <para>
  7576. Note that there is no direct way of querying the maximum level. This can be
  7577. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  7578. query for the width actually used at level 0. (The width may not be equal to
  7579. <i>width</i> since proxy textures might have scaled it to fit the
  7580. implementation.) Then the maximum level can be derived from the formula
  7581. <c>log2(width)</c>.
  7582. </para>
  7583. <para>
  7584. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  7585. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7586. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7587. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7590. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  7596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  7597. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  7598. </para>
  7599. <para>
  7600. <b>ERRORS</b>
  7601. </para>
  7602. <para>
  7603. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  7604. </para>
  7605. <para>
  7606. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  7607. are not legal.
  7608. </para>
  7609. <para>
  7610. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7611. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  7612. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  7613. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7614. </para>
  7615. <para>
  7616. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  7618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  7619. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7620. </para>
  7621. <para>
  7622. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  7624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  7625. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7626. </para>
  7627. <para>
  7628. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  7630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  7631. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7632. </para>
  7633. <para>
  7634. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  7636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  7637. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7638. </para>
  7639. <para>
  7640. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  7642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  7643. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7644. </para>
  7645. </remarks>
  7646. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7647. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7648. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  7649. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7650. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7651. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7652. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7653. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7654. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7655. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7656. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7657. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  7658. </member>
  7659. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:])">
  7660. <summary>
  7661. Builds a one-dimensional mipmap.
  7662. </summary>
  7663. <param name="target">
  7664. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  7665. </param>
  7666. <param name="internalFormat">
  7667. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  7668. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7669. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  7670. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  7671. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  7672. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  7673. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  7674. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  7675. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  7676. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  7677. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  7678. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  7679. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  7680. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  7681. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  7682. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  7683. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  7684. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  7685. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  7686. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7687. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  7688. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  7689. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  7690. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  7691. </param>
  7692. <param name="width">
  7693. Specifies the width, in pixels, of the texture image.
  7694. </param>
  7695. <param name="format">
  7696. Specifies the format of the pixel data. Must be one of
  7697. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  7698. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  7699. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7700. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7701. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  7702. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  7703. </param>
  7704. <param name="type">
  7705. Specifies the data type for <i>data</i>. Must be one of
  7706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  7707. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  7708. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  7709. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  7710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7715. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7718. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  7721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  7722. </param>
  7723. <param name="data">
  7724. Specifies a pointer to the image data in memory.
  7725. </param>
  7726. <returns>
  7727. A return value of zero indicates success, otherwise a GLU error code is
  7728. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7729. </returns>
  7730. <remarks>
  7731. <para>
  7732. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  7733. texture maps of decreasing resolutions called a mipmap. This is used for the
  7734. antialiasing of texture mapped primitives.
  7735. </para>
  7736. <para>
  7737. A return value of zero indicates success, otherwise a GLU error code is
  7738. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7739. </para>
  7740. <para>
  7741. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  7742. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  7743. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  7744. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  7745. mipmapping operations described below. For example, if <i>width</i> is 57
  7746. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  7747. </para>
  7748. <para>
  7749. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  7750. determine if the implementation can fit the requested texture. If not, width
  7751. is continually halved until it fits.
  7752. </para>
  7753. <para>
  7754. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  7755. in half until size 1×1 is reached. At each level, each texel in the halved
  7756. mipmap level is an average of the corresponding two texels in the larger
  7757. mipmap level.
  7758. </para>
  7759. <para>
  7760. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  7761. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  7762. example, if <i>width</i> is 64 and the implementation can store a texture of
  7763. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  7764. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  7765. </para>
  7766. <para>
  7767. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  7768. the acceptable values for the <i>type</i> parameter. See the
  7769. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  7770. acceptable values for the <i>data</i> parameter.
  7771. </para>
  7772. <para>
  7773. <b>NOTES</b>
  7774. </para>
  7775. <para>
  7776. Note that there is no direct way of querying the maximum level. This can be
  7777. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  7778. query for the width actually used at level 0. (The width may not be equal to
  7779. <i>width</i> since proxy textures might have scaled it to fit the
  7780. implementation.) Then the maximum level can be derived from the formula
  7781. <c>log2(width)</c>.
  7782. </para>
  7783. <para>
  7784. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  7785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7791. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7792. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7793. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  7796. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  7797. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  7798. </para>
  7799. <para>
  7800. <b>ERRORS</b>
  7801. </para>
  7802. <para>
  7803. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  7804. </para>
  7805. <para>
  7806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  7807. are not legal.
  7808. </para>
  7809. <para>
  7810. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  7812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  7813. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7814. </para>
  7815. <para>
  7816. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  7818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  7819. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  7820. </para>
  7821. <para>
  7822. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  7824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  7825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7826. </para>
  7827. <para>
  7828. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  7830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  7831. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7832. </para>
  7833. <para>
  7834. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  7836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  7837. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7838. </para>
  7839. <para>
  7840. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  7841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  7842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  7843. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  7844. </para>
  7845. </remarks>
  7846. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7847. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7848. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  7849. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7850. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7851. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  7852. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7853. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7854. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7855. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7856. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  7857. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  7858. </member>
  7859. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:,0:])">
  7860. <summary>
  7861. Builds a one-dimensional mipmap.
  7862. </summary>
  7863. <param name="target">
  7864. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  7865. </param>
  7866. <param name="internalFormat">
  7867. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  7868. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7869. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  7870. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  7871. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  7872. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  7873. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  7874. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  7875. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  7876. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  7877. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  7878. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  7879. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  7880. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  7881. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  7882. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  7883. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  7884. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  7885. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  7886. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7887. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  7888. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  7889. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  7890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  7891. </param>
  7892. <param name="width">
  7893. Specifies the width, in pixels, of the texture image.
  7894. </param>
  7895. <param name="format">
  7896. Specifies the format of the pixel data. Must be one of
  7897. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  7898. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  7899. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  7900. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  7901. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  7902. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  7903. </param>
  7904. <param name="type">
  7905. Specifies the data type for <i>data</i>. Must be one of
  7906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  7907. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  7908. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  7909. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  7910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7918. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  7921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  7922. </param>
  7923. <param name="data">
  7924. Specifies a pointer to the image data in memory.
  7925. </param>
  7926. <returns>
  7927. A return value of zero indicates success, otherwise a GLU error code is
  7928. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7929. </returns>
  7930. <remarks>
  7931. <para>
  7932. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  7933. texture maps of decreasing resolutions called a mipmap. This is used for the
  7934. antialiasing of texture mapped primitives.
  7935. </para>
  7936. <para>
  7937. A return value of zero indicates success, otherwise a GLU error code is
  7938. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  7939. </para>
  7940. <para>
  7941. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  7942. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  7943. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  7944. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  7945. mipmapping operations described below. For example, if <i>width</i> is 57
  7946. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  7947. </para>
  7948. <para>
  7949. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  7950. determine if the implementation can fit the requested texture. If not, width
  7951. is continually halved until it fits.
  7952. </para>
  7953. <para>
  7954. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  7955. in half until size 1×1 is reached. At each level, each texel in the halved
  7956. mipmap level is an average of the corresponding two texels in the larger
  7957. mipmap level.
  7958. </para>
  7959. <para>
  7960. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  7961. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  7962. example, if <i>width</i> is 64 and the implementation can store a texture of
  7963. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  7964. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  7965. </para>
  7966. <para>
  7967. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  7968. the acceptable values for the <i>type</i> parameter. See the
  7969. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  7970. acceptable values for the <i>data</i> parameter.
  7971. </para>
  7972. <para>
  7973. <b>NOTES</b>
  7974. </para>
  7975. <para>
  7976. Note that there is no direct way of querying the maximum level. This can be
  7977. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  7978. query for the width actually used at level 0. (The width may not be equal to
  7979. <i>width</i> since proxy textures might have scaled it to fit the
  7980. implementation.) Then the maximum level can be derived from the formula
  7981. <c>log2(width)</c>.
  7982. </para>
  7983. <para>
  7984. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  7985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  7986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  7987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  7988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  7989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  7990. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  7991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  7992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  7993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  7994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  7995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  7996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  7997. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  7998. </para>
  7999. <para>
  8000. <b>ERRORS</b>
  8001. </para>
  8002. <para>
  8003. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  8004. </para>
  8005. <para>
  8006. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  8007. are not legal.
  8008. </para>
  8009. <para>
  8010. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8011. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  8012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  8013. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8014. </para>
  8015. <para>
  8016. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8017. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  8018. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  8019. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8020. </para>
  8021. <para>
  8022. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8023. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  8024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  8025. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8026. </para>
  8027. <para>
  8028. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  8030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  8031. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8032. </para>
  8033. <para>
  8034. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  8036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  8037. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8038. </para>
  8039. <para>
  8040. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  8042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  8043. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8044. </para>
  8045. </remarks>
  8046. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8047. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8048. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  8049. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8050. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8051. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8052. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8053. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8054. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8055. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8056. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8057. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  8058. </member>
  8059. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[])">
  8060. <summary>
  8061. Builds a one-dimensional mipmap.
  8062. </summary>
  8063. <param name="target">
  8064. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  8065. </param>
  8066. <param name="internalFormat">
  8067. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  8068. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8069. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  8070. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  8071. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  8072. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  8073. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  8074. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  8075. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  8076. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  8077. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  8078. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  8079. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  8080. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  8081. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  8082. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  8083. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  8084. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  8085. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  8086. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8087. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  8088. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  8089. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  8090. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  8091. </param>
  8092. <param name="width">
  8093. Specifies the width, in pixels, of the texture image.
  8094. </param>
  8095. <param name="format">
  8096. Specifies the format of the pixel data. Must be one of
  8097. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  8098. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  8099. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8100. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8101. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  8102. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  8103. </param>
  8104. <param name="type">
  8105. Specifies the data type for <i>data</i>. Must be one of
  8106. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  8107. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  8108. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  8109. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  8110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8117. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8118. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  8121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  8122. </param>
  8123. <param name="data">
  8124. Specifies a pointer to the image data in memory.
  8125. </param>
  8126. <returns>
  8127. A return value of zero indicates success, otherwise a GLU error code is
  8128. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8129. </returns>
  8130. <remarks>
  8131. <para>
  8132. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  8133. texture maps of decreasing resolutions called a mipmap. This is used for the
  8134. antialiasing of texture mapped primitives.
  8135. </para>
  8136. <para>
  8137. A return value of zero indicates success, otherwise a GLU error code is
  8138. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8139. </para>
  8140. <para>
  8141. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  8142. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  8143. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  8144. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  8145. mipmapping operations described below. For example, if <i>width</i> is 57
  8146. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  8147. </para>
  8148. <para>
  8149. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  8150. determine if the implementation can fit the requested texture. If not, width
  8151. is continually halved until it fits.
  8152. </para>
  8153. <para>
  8154. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  8155. in half until size 1×1 is reached. At each level, each texel in the halved
  8156. mipmap level is an average of the corresponding two texels in the larger
  8157. mipmap level.
  8158. </para>
  8159. <para>
  8160. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  8161. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  8162. example, if <i>width</i> is 64 and the implementation can store a texture of
  8163. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  8164. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  8165. </para>
  8166. <para>
  8167. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  8168. the acceptable values for the <i>type</i> parameter. See the
  8169. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  8170. acceptable values for the <i>data</i> parameter.
  8171. </para>
  8172. <para>
  8173. <b>NOTES</b>
  8174. </para>
  8175. <para>
  8176. Note that there is no direct way of querying the maximum level. This can be
  8177. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  8178. query for the width actually used at level 0. (The width may not be equal to
  8179. <i>width</i> since proxy textures might have scaled it to fit the
  8180. implementation.) Then the maximum level can be derived from the formula
  8181. <c>log2(width)</c>.
  8182. </para>
  8183. <para>
  8184. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  8185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8188. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8189. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8194. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  8196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  8197. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  8198. </para>
  8199. <para>
  8200. <b>ERRORS</b>
  8201. </para>
  8202. <para>
  8203. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  8204. </para>
  8205. <para>
  8206. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  8207. are not legal.
  8208. </para>
  8209. <para>
  8210. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  8212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  8213. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8214. </para>
  8215. <para>
  8216. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  8218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  8219. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8220. </para>
  8221. <para>
  8222. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8223. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  8224. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  8225. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8226. </para>
  8227. <para>
  8228. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8229. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  8230. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  8231. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8232. </para>
  8233. <para>
  8234. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8235. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  8236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  8237. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8238. </para>
  8239. <para>
  8240. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  8242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  8243. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8244. </para>
  8245. </remarks>
  8246. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8247. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8248. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  8249. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8250. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8251. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8252. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8253. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8254. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8255. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8256. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8257. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  8258. </member>
  8259. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:])">
  8260. <summary>
  8261. Builds a one-dimensional mipmap.
  8262. </summary>
  8263. <param name="target">
  8264. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  8265. </param>
  8266. <param name="internalFormat">
  8267. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  8268. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8269. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  8270. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  8271. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  8272. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  8273. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  8274. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  8275. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  8276. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  8277. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  8278. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  8279. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  8280. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  8281. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  8282. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  8283. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  8284. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  8285. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  8286. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8287. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  8288. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  8289. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  8290. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  8291. </param>
  8292. <param name="width">
  8293. Specifies the width, in pixels, of the texture image.
  8294. </param>
  8295. <param name="format">
  8296. Specifies the format of the pixel data. Must be one of
  8297. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  8298. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  8299. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8300. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8301. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  8302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  8303. </param>
  8304. <param name="type">
  8305. Specifies the data type for <i>data</i>. Must be one of
  8306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  8307. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  8308. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  8309. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  8310. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8311. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8312. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8316. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8318. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  8321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  8322. </param>
  8323. <param name="data">
  8324. Specifies a pointer to the image data in memory.
  8325. </param>
  8326. <returns>
  8327. A return value of zero indicates success, otherwise a GLU error code is
  8328. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8329. </returns>
  8330. <remarks>
  8331. <para>
  8332. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  8333. texture maps of decreasing resolutions called a mipmap. This is used for the
  8334. antialiasing of texture mapped primitives.
  8335. </para>
  8336. <para>
  8337. A return value of zero indicates success, otherwise a GLU error code is
  8338. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8339. </para>
  8340. <para>
  8341. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  8342. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  8343. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  8344. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  8345. mipmapping operations described below. For example, if <i>width</i> is 57
  8346. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  8347. </para>
  8348. <para>
  8349. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  8350. determine if the implementation can fit the requested texture. If not, width
  8351. is continually halved until it fits.
  8352. </para>
  8353. <para>
  8354. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  8355. in half until size 1×1 is reached. At each level, each texel in the halved
  8356. mipmap level is an average of the corresponding two texels in the larger
  8357. mipmap level.
  8358. </para>
  8359. <para>
  8360. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  8361. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  8362. example, if <i>width</i> is 64 and the implementation can store a texture of
  8363. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  8364. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  8365. </para>
  8366. <para>
  8367. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  8368. the acceptable values for the <i>type</i> parameter. See the
  8369. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  8370. acceptable values for the <i>data</i> parameter.
  8371. </para>
  8372. <para>
  8373. <b>NOTES</b>
  8374. </para>
  8375. <para>
  8376. Note that there is no direct way of querying the maximum level. This can be
  8377. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  8378. query for the width actually used at level 0. (The width may not be equal to
  8379. <i>width</i> since proxy textures might have scaled it to fit the
  8380. implementation.) Then the maximum level can be derived from the formula
  8381. <c>log2(width)</c>.
  8382. </para>
  8383. <para>
  8384. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  8385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8394. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  8396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  8397. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  8398. </para>
  8399. <para>
  8400. <b>ERRORS</b>
  8401. </para>
  8402. <para>
  8403. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  8404. </para>
  8405. <para>
  8406. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  8407. are not legal.
  8408. </para>
  8409. <para>
  8410. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  8412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  8413. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8414. </para>
  8415. <para>
  8416. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  8418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  8419. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8420. </para>
  8421. <para>
  8422. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  8424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  8425. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8426. </para>
  8427. <para>
  8428. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  8430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  8431. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8432. </para>
  8433. <para>
  8434. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  8436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  8437. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8438. </para>
  8439. <para>
  8440. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  8442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  8443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8444. </para>
  8445. </remarks>
  8446. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8447. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8448. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  8449. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8450. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8451. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8452. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8453. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8454. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8455. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8456. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8457. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  8458. </member>
  8459. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:,0:])">
  8460. <summary>
  8461. Builds a one-dimensional mipmap.
  8462. </summary>
  8463. <param name="target">
  8464. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  8465. </param>
  8466. <param name="internalFormat">
  8467. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  8468. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8469. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  8470. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  8471. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  8472. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  8473. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  8474. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  8475. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  8476. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  8477. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  8478. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  8479. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  8480. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  8481. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  8482. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  8483. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  8484. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  8485. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  8486. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8487. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  8488. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  8489. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  8490. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  8491. </param>
  8492. <param name="width">
  8493. Specifies the width, in pixels, of the texture image.
  8494. </param>
  8495. <param name="format">
  8496. Specifies the format of the pixel data. Must be one of
  8497. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  8498. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  8499. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8500. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8501. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  8502. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  8503. </param>
  8504. <param name="type">
  8505. Specifies the data type for <i>data</i>. Must be one of
  8506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  8507. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  8508. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  8509. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  8510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  8521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  8522. </param>
  8523. <param name="data">
  8524. Specifies a pointer to the image data in memory.
  8525. </param>
  8526. <returns>
  8527. A return value of zero indicates success, otherwise a GLU error code is
  8528. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8529. </returns>
  8530. <remarks>
  8531. <para>
  8532. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  8533. texture maps of decreasing resolutions called a mipmap. This is used for the
  8534. antialiasing of texture mapped primitives.
  8535. </para>
  8536. <para>
  8537. A return value of zero indicates success, otherwise a GLU error code is
  8538. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8539. </para>
  8540. <para>
  8541. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  8542. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  8543. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  8544. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  8545. mipmapping operations described below. For example, if <i>width</i> is 57
  8546. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  8547. </para>
  8548. <para>
  8549. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  8550. determine if the implementation can fit the requested texture. If not, width
  8551. is continually halved until it fits.
  8552. </para>
  8553. <para>
  8554. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  8555. in half until size 1×1 is reached. At each level, each texel in the halved
  8556. mipmap level is an average of the corresponding two texels in the larger
  8557. mipmap level.
  8558. </para>
  8559. <para>
  8560. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  8561. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  8562. example, if <i>width</i> is 64 and the implementation can store a texture of
  8563. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  8564. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  8565. </para>
  8566. <para>
  8567. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  8568. the acceptable values for the <i>type</i> parameter. See the
  8569. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  8570. acceptable values for the <i>data</i> parameter.
  8571. </para>
  8572. <para>
  8573. <b>NOTES</b>
  8574. </para>
  8575. <para>
  8576. Note that there is no direct way of querying the maximum level. This can be
  8577. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  8578. query for the width actually used at level 0. (The width may not be equal to
  8579. <i>width</i> since proxy textures might have scaled it to fit the
  8580. implementation.) Then the maximum level can be derived from the formula
  8581. <c>log2(width)</c>.
  8582. </para>
  8583. <para>
  8584. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  8585. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8586. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8587. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8590. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  8596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  8597. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  8598. </para>
  8599. <para>
  8600. <b>ERRORS</b>
  8601. </para>
  8602. <para>
  8603. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  8604. </para>
  8605. <para>
  8606. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  8607. are not legal.
  8608. </para>
  8609. <para>
  8610. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8611. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  8612. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  8613. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8614. </para>
  8615. <para>
  8616. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  8618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  8619. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8620. </para>
  8621. <para>
  8622. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  8624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  8625. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8626. </para>
  8627. <para>
  8628. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  8630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  8631. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8632. </para>
  8633. <para>
  8634. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  8636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  8637. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8638. </para>
  8639. <para>
  8640. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  8642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  8643. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8644. </para>
  8645. </remarks>
  8646. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8647. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8648. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  8649. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8650. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8651. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8652. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8653. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8654. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8655. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8656. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8657. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  8658. </member>
  8659. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[])">
  8660. <summary>
  8661. Builds a one-dimensional mipmap.
  8662. </summary>
  8663. <param name="target">
  8664. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  8665. </param>
  8666. <param name="internalFormat">
  8667. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  8668. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8669. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  8670. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  8671. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  8672. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  8673. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  8674. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  8675. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  8676. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  8677. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  8678. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  8679. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  8680. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  8681. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  8682. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  8683. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  8684. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  8685. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  8686. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8687. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  8688. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  8689. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  8690. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  8691. </param>
  8692. <param name="width">
  8693. Specifies the width, in pixels, of the texture image.
  8694. </param>
  8695. <param name="format">
  8696. Specifies the format of the pixel data. Must be one of
  8697. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  8698. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  8699. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8700. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8701. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  8702. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  8703. </param>
  8704. <param name="type">
  8705. Specifies the data type for <i>data</i>. Must be one of
  8706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  8707. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  8708. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  8709. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  8710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8715. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8718. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  8721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  8722. </param>
  8723. <param name="data">
  8724. Specifies a pointer to the image data in memory.
  8725. </param>
  8726. <returns>
  8727. A return value of zero indicates success, otherwise a GLU error code is
  8728. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8729. </returns>
  8730. <remarks>
  8731. <para>
  8732. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  8733. texture maps of decreasing resolutions called a mipmap. This is used for the
  8734. antialiasing of texture mapped primitives.
  8735. </para>
  8736. <para>
  8737. A return value of zero indicates success, otherwise a GLU error code is
  8738. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8739. </para>
  8740. <para>
  8741. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  8742. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  8743. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  8744. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  8745. mipmapping operations described below. For example, if <i>width</i> is 57
  8746. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  8747. </para>
  8748. <para>
  8749. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  8750. determine if the implementation can fit the requested texture. If not, width
  8751. is continually halved until it fits.
  8752. </para>
  8753. <para>
  8754. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  8755. in half until size 1×1 is reached. At each level, each texel in the halved
  8756. mipmap level is an average of the corresponding two texels in the larger
  8757. mipmap level.
  8758. </para>
  8759. <para>
  8760. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  8761. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  8762. example, if <i>width</i> is 64 and the implementation can store a texture of
  8763. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  8764. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  8765. </para>
  8766. <para>
  8767. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  8768. the acceptable values for the <i>type</i> parameter. See the
  8769. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  8770. acceptable values for the <i>data</i> parameter.
  8771. </para>
  8772. <para>
  8773. <b>NOTES</b>
  8774. </para>
  8775. <para>
  8776. Note that there is no direct way of querying the maximum level. This can be
  8777. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  8778. query for the width actually used at level 0. (The width may not be equal to
  8779. <i>width</i> since proxy textures might have scaled it to fit the
  8780. implementation.) Then the maximum level can be derived from the formula
  8781. <c>log2(width)</c>.
  8782. </para>
  8783. <para>
  8784. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  8785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8791. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8792. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8793. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  8796. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  8797. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  8798. </para>
  8799. <para>
  8800. <b>ERRORS</b>
  8801. </para>
  8802. <para>
  8803. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  8804. </para>
  8805. <para>
  8806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  8807. are not legal.
  8808. </para>
  8809. <para>
  8810. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  8812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  8813. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8814. </para>
  8815. <para>
  8816. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  8818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  8819. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  8820. </para>
  8821. <para>
  8822. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  8824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  8825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8826. </para>
  8827. <para>
  8828. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  8830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  8831. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8832. </para>
  8833. <para>
  8834. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  8836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  8837. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8838. </para>
  8839. <para>
  8840. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  8841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  8842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  8843. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  8844. </para>
  8845. </remarks>
  8846. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8847. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8848. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  8849. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8850. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8851. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  8852. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8853. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8854. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8855. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8856. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  8857. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  8858. </member>
  8859. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:])">
  8860. <summary>
  8861. Builds a one-dimensional mipmap.
  8862. </summary>
  8863. <param name="target">
  8864. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  8865. </param>
  8866. <param name="internalFormat">
  8867. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  8868. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8869. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  8870. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  8871. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  8872. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  8873. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  8874. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  8875. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  8876. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  8877. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  8878. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  8879. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  8880. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  8881. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  8882. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  8883. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  8884. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  8885. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  8886. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8887. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  8888. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  8889. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  8890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  8891. </param>
  8892. <param name="width">
  8893. Specifies the width, in pixels, of the texture image.
  8894. </param>
  8895. <param name="format">
  8896. Specifies the format of the pixel data. Must be one of
  8897. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  8898. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  8899. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  8900. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  8901. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  8902. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  8903. </param>
  8904. <param name="type">
  8905. Specifies the data type for <i>data</i>. Must be one of
  8906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  8907. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  8908. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  8909. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  8910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8918. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  8921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  8922. </param>
  8923. <param name="data">
  8924. Specifies a pointer to the image data in memory.
  8925. </param>
  8926. <returns>
  8927. A return value of zero indicates success, otherwise a GLU error code is
  8928. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8929. </returns>
  8930. <remarks>
  8931. <para>
  8932. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  8933. texture maps of decreasing resolutions called a mipmap. This is used for the
  8934. antialiasing of texture mapped primitives.
  8935. </para>
  8936. <para>
  8937. A return value of zero indicates success, otherwise a GLU error code is
  8938. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  8939. </para>
  8940. <para>
  8941. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  8942. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  8943. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  8944. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  8945. mipmapping operations described below. For example, if <i>width</i> is 57
  8946. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  8947. </para>
  8948. <para>
  8949. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  8950. determine if the implementation can fit the requested texture. If not, width
  8951. is continually halved until it fits.
  8952. </para>
  8953. <para>
  8954. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  8955. in half until size 1×1 is reached. At each level, each texel in the halved
  8956. mipmap level is an average of the corresponding two texels in the larger
  8957. mipmap level.
  8958. </para>
  8959. <para>
  8960. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  8961. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  8962. example, if <i>width</i> is 64 and the implementation can store a texture of
  8963. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  8964. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  8965. </para>
  8966. <para>
  8967. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  8968. the acceptable values for the <i>type</i> parameter. See the
  8969. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  8970. acceptable values for the <i>data</i> parameter.
  8971. </para>
  8972. <para>
  8973. <b>NOTES</b>
  8974. </para>
  8975. <para>
  8976. Note that there is no direct way of querying the maximum level. This can be
  8977. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  8978. query for the width actually used at level 0. (The width may not be equal to
  8979. <i>width</i> since proxy textures might have scaled it to fit the
  8980. implementation.) Then the maximum level can be derived from the formula
  8981. <c>log2(width)</c>.
  8982. </para>
  8983. <para>
  8984. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  8985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  8986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  8987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  8988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  8989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  8990. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  8991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  8992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  8993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  8994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  8995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  8996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  8997. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  8998. </para>
  8999. <para>
  9000. <b>ERRORS</b>
  9001. </para>
  9002. <para>
  9003. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  9004. </para>
  9005. <para>
  9006. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  9007. are not legal.
  9008. </para>
  9009. <para>
  9010. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9011. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  9012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  9013. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9014. </para>
  9015. <para>
  9016. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9017. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  9018. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  9019. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9020. </para>
  9021. <para>
  9022. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9023. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  9024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  9025. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9026. </para>
  9027. <para>
  9028. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  9030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  9031. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9032. </para>
  9033. <para>
  9034. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  9036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  9037. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9038. </para>
  9039. <para>
  9040. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  9042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  9043. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9044. </para>
  9045. </remarks>
  9046. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9047. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9048. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  9049. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9050. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9051. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9052. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9053. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9054. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9055. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9056. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9057. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  9058. </member>
  9059. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:,0:])">
  9060. <summary>
  9061. Builds a one-dimensional mipmap.
  9062. </summary>
  9063. <param name="target">
  9064. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  9065. </param>
  9066. <param name="internalFormat">
  9067. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  9068. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9069. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  9070. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  9071. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  9072. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  9073. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  9074. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  9075. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  9076. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  9077. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  9078. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  9079. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  9080. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  9081. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  9082. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  9083. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  9084. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  9085. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  9086. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9087. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  9088. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  9089. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  9090. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  9091. </param>
  9092. <param name="width">
  9093. Specifies the width, in pixels, of the texture image.
  9094. </param>
  9095. <param name="format">
  9096. Specifies the format of the pixel data. Must be one of
  9097. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  9098. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  9099. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9100. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9101. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  9102. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  9103. </param>
  9104. <param name="type">
  9105. Specifies the data type for <i>data</i>. Must be one of
  9106. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  9107. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  9108. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  9109. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  9110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9117. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9118. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  9121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  9122. </param>
  9123. <param name="data">
  9124. Specifies a pointer to the image data in memory.
  9125. </param>
  9126. <returns>
  9127. A return value of zero indicates success, otherwise a GLU error code is
  9128. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9129. </returns>
  9130. <remarks>
  9131. <para>
  9132. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  9133. texture maps of decreasing resolutions called a mipmap. This is used for the
  9134. antialiasing of texture mapped primitives.
  9135. </para>
  9136. <para>
  9137. A return value of zero indicates success, otherwise a GLU error code is
  9138. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9139. </para>
  9140. <para>
  9141. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  9142. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  9143. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  9144. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  9145. mipmapping operations described below. For example, if <i>width</i> is 57
  9146. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  9147. </para>
  9148. <para>
  9149. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  9150. determine if the implementation can fit the requested texture. If not, width
  9151. is continually halved until it fits.
  9152. </para>
  9153. <para>
  9154. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  9155. in half until size 1×1 is reached. At each level, each texel in the halved
  9156. mipmap level is an average of the corresponding two texels in the larger
  9157. mipmap level.
  9158. </para>
  9159. <para>
  9160. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  9161. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  9162. example, if <i>width</i> is 64 and the implementation can store a texture of
  9163. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  9164. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  9165. </para>
  9166. <para>
  9167. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  9168. the acceptable values for the <i>type</i> parameter. See the
  9169. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  9170. acceptable values for the <i>data</i> parameter.
  9171. </para>
  9172. <para>
  9173. <b>NOTES</b>
  9174. </para>
  9175. <para>
  9176. Note that there is no direct way of querying the maximum level. This can be
  9177. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  9178. query for the width actually used at level 0. (The width may not be equal to
  9179. <i>width</i> since proxy textures might have scaled it to fit the
  9180. implementation.) Then the maximum level can be derived from the formula
  9181. <c>log2(width)</c>.
  9182. </para>
  9183. <para>
  9184. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  9185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9188. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9189. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9194. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  9196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  9197. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  9198. </para>
  9199. <para>
  9200. <b>ERRORS</b>
  9201. </para>
  9202. <para>
  9203. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  9204. </para>
  9205. <para>
  9206. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  9207. are not legal.
  9208. </para>
  9209. <para>
  9210. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  9212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  9213. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9214. </para>
  9215. <para>
  9216. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  9218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  9219. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9220. </para>
  9221. <para>
  9222. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9223. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  9224. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  9225. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9226. </para>
  9227. <para>
  9228. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9229. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  9230. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  9231. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9232. </para>
  9233. <para>
  9234. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9235. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  9236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  9237. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9238. </para>
  9239. <para>
  9240. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  9242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  9243. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9244. </para>
  9245. </remarks>
  9246. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9247. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9248. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  9249. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9250. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9251. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9252. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9253. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9254. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9255. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9256. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9257. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  9258. </member>
  9259. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[])">
  9260. <summary>
  9261. Builds a one-dimensional mipmap.
  9262. </summary>
  9263. <param name="target">
  9264. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  9265. </param>
  9266. <param name="internalFormat">
  9267. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  9268. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9269. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  9270. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  9271. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  9272. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  9273. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  9274. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  9275. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  9276. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  9277. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  9278. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  9279. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  9280. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  9281. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  9282. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  9283. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  9284. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  9285. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  9286. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9287. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  9288. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  9289. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  9290. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  9291. </param>
  9292. <param name="width">
  9293. Specifies the width, in pixels, of the texture image.
  9294. </param>
  9295. <param name="format">
  9296. Specifies the format of the pixel data. Must be one of
  9297. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  9298. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  9299. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9300. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9301. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  9302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  9303. </param>
  9304. <param name="type">
  9305. Specifies the data type for <i>data</i>. Must be one of
  9306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  9307. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  9308. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  9309. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  9310. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9311. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9312. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9316. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9318. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  9321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  9322. </param>
  9323. <param name="data">
  9324. Specifies a pointer to the image data in memory.
  9325. </param>
  9326. <returns>
  9327. A return value of zero indicates success, otherwise a GLU error code is
  9328. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9329. </returns>
  9330. <remarks>
  9331. <para>
  9332. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  9333. texture maps of decreasing resolutions called a mipmap. This is used for the
  9334. antialiasing of texture mapped primitives.
  9335. </para>
  9336. <para>
  9337. A return value of zero indicates success, otherwise a GLU error code is
  9338. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9339. </para>
  9340. <para>
  9341. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  9342. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  9343. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  9344. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  9345. mipmapping operations described below. For example, if <i>width</i> is 57
  9346. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  9347. </para>
  9348. <para>
  9349. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  9350. determine if the implementation can fit the requested texture. If not, width
  9351. is continually halved until it fits.
  9352. </para>
  9353. <para>
  9354. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  9355. in half until size 1×1 is reached. At each level, each texel in the halved
  9356. mipmap level is an average of the corresponding two texels in the larger
  9357. mipmap level.
  9358. </para>
  9359. <para>
  9360. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  9361. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  9362. example, if <i>width</i> is 64 and the implementation can store a texture of
  9363. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  9364. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  9365. </para>
  9366. <para>
  9367. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  9368. the acceptable values for the <i>type</i> parameter. See the
  9369. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  9370. acceptable values for the <i>data</i> parameter.
  9371. </para>
  9372. <para>
  9373. <b>NOTES</b>
  9374. </para>
  9375. <para>
  9376. Note that there is no direct way of querying the maximum level. This can be
  9377. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  9378. query for the width actually used at level 0. (The width may not be equal to
  9379. <i>width</i> since proxy textures might have scaled it to fit the
  9380. implementation.) Then the maximum level can be derived from the formula
  9381. <c>log2(width)</c>.
  9382. </para>
  9383. <para>
  9384. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  9385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9394. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  9396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  9397. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  9398. </para>
  9399. <para>
  9400. <b>ERRORS</b>
  9401. </para>
  9402. <para>
  9403. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  9404. </para>
  9405. <para>
  9406. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  9407. are not legal.
  9408. </para>
  9409. <para>
  9410. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  9412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  9413. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9414. </para>
  9415. <para>
  9416. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  9418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  9419. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9420. </para>
  9421. <para>
  9422. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  9424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  9425. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9426. </para>
  9427. <para>
  9428. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  9430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  9431. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9432. </para>
  9433. <para>
  9434. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  9436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  9437. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9438. </para>
  9439. <para>
  9440. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  9442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  9443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9444. </para>
  9445. </remarks>
  9446. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9447. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9448. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  9449. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9450. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9451. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9452. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9453. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9454. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9455. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9456. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9457. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  9458. </member>
  9459. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:])">
  9460. <summary>
  9461. Builds a one-dimensional mipmap.
  9462. </summary>
  9463. <param name="target">
  9464. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  9465. </param>
  9466. <param name="internalFormat">
  9467. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  9468. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9469. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  9470. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  9471. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  9472. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  9473. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  9474. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  9475. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  9476. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  9477. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  9478. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  9479. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  9480. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  9481. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  9482. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  9483. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  9484. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  9485. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  9486. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9487. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  9488. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  9489. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  9490. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  9491. </param>
  9492. <param name="width">
  9493. Specifies the width, in pixels, of the texture image.
  9494. </param>
  9495. <param name="format">
  9496. Specifies the format of the pixel data. Must be one of
  9497. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  9498. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  9499. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9500. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9501. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  9502. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  9503. </param>
  9504. <param name="type">
  9505. Specifies the data type for <i>data</i>. Must be one of
  9506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  9507. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  9508. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  9509. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  9510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  9521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  9522. </param>
  9523. <param name="data">
  9524. Specifies a pointer to the image data in memory.
  9525. </param>
  9526. <returns>
  9527. A return value of zero indicates success, otherwise a GLU error code is
  9528. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9529. </returns>
  9530. <remarks>
  9531. <para>
  9532. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  9533. texture maps of decreasing resolutions called a mipmap. This is used for the
  9534. antialiasing of texture mapped primitives.
  9535. </para>
  9536. <para>
  9537. A return value of zero indicates success, otherwise a GLU error code is
  9538. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9539. </para>
  9540. <para>
  9541. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  9542. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  9543. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  9544. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  9545. mipmapping operations described below. For example, if <i>width</i> is 57
  9546. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  9547. </para>
  9548. <para>
  9549. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  9550. determine if the implementation can fit the requested texture. If not, width
  9551. is continually halved until it fits.
  9552. </para>
  9553. <para>
  9554. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  9555. in half until size 1×1 is reached. At each level, each texel in the halved
  9556. mipmap level is an average of the corresponding two texels in the larger
  9557. mipmap level.
  9558. </para>
  9559. <para>
  9560. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  9561. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  9562. example, if <i>width</i> is 64 and the implementation can store a texture of
  9563. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  9564. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  9565. </para>
  9566. <para>
  9567. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  9568. the acceptable values for the <i>type</i> parameter. See the
  9569. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  9570. acceptable values for the <i>data</i> parameter.
  9571. </para>
  9572. <para>
  9573. <b>NOTES</b>
  9574. </para>
  9575. <para>
  9576. Note that there is no direct way of querying the maximum level. This can be
  9577. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  9578. query for the width actually used at level 0. (The width may not be equal to
  9579. <i>width</i> since proxy textures might have scaled it to fit the
  9580. implementation.) Then the maximum level can be derived from the formula
  9581. <c>log2(width)</c>.
  9582. </para>
  9583. <para>
  9584. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  9585. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9586. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9587. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9590. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  9596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  9597. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  9598. </para>
  9599. <para>
  9600. <b>ERRORS</b>
  9601. </para>
  9602. <para>
  9603. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  9604. </para>
  9605. <para>
  9606. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  9607. are not legal.
  9608. </para>
  9609. <para>
  9610. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9611. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  9612. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  9613. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9614. </para>
  9615. <para>
  9616. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  9618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  9619. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9620. </para>
  9621. <para>
  9622. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  9624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  9625. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9626. </para>
  9627. <para>
  9628. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  9630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  9631. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9632. </para>
  9633. <para>
  9634. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  9636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  9637. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9638. </para>
  9639. <para>
  9640. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  9642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  9643. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9644. </para>
  9645. </remarks>
  9646. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9647. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9648. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  9649. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9650. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9651. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9652. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9653. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9654. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9655. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9656. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9657. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  9658. </member>
  9659. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:,0:])">
  9660. <summary>
  9661. Builds a one-dimensional mipmap.
  9662. </summary>
  9663. <param name="target">
  9664. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  9665. </param>
  9666. <param name="internalFormat">
  9667. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  9668. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9669. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  9670. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  9671. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  9672. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  9673. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  9674. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  9675. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  9676. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  9677. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  9678. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  9679. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  9680. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  9681. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  9682. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  9683. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  9684. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  9685. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  9686. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9687. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  9688. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  9689. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  9690. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  9691. </param>
  9692. <param name="width">
  9693. Specifies the width, in pixels, of the texture image.
  9694. </param>
  9695. <param name="format">
  9696. Specifies the format of the pixel data. Must be one of
  9697. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  9698. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  9699. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9700. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9701. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  9702. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  9703. </param>
  9704. <param name="type">
  9705. Specifies the data type for <i>data</i>. Must be one of
  9706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  9707. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  9708. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  9709. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  9710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9715. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9718. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  9721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  9722. </param>
  9723. <param name="data">
  9724. Specifies a pointer to the image data in memory.
  9725. </param>
  9726. <returns>
  9727. A return value of zero indicates success, otherwise a GLU error code is
  9728. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9729. </returns>
  9730. <remarks>
  9731. <para>
  9732. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  9733. texture maps of decreasing resolutions called a mipmap. This is used for the
  9734. antialiasing of texture mapped primitives.
  9735. </para>
  9736. <para>
  9737. A return value of zero indicates success, otherwise a GLU error code is
  9738. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9739. </para>
  9740. <para>
  9741. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  9742. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  9743. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  9744. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  9745. mipmapping operations described below. For example, if <i>width</i> is 57
  9746. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  9747. </para>
  9748. <para>
  9749. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  9750. determine if the implementation can fit the requested texture. If not, width
  9751. is continually halved until it fits.
  9752. </para>
  9753. <para>
  9754. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  9755. in half until size 1×1 is reached. At each level, each texel in the halved
  9756. mipmap level is an average of the corresponding two texels in the larger
  9757. mipmap level.
  9758. </para>
  9759. <para>
  9760. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  9761. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  9762. example, if <i>width</i> is 64 and the implementation can store a texture of
  9763. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  9764. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  9765. </para>
  9766. <para>
  9767. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  9768. the acceptable values for the <i>type</i> parameter. See the
  9769. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  9770. acceptable values for the <i>data</i> parameter.
  9771. </para>
  9772. <para>
  9773. <b>NOTES</b>
  9774. </para>
  9775. <para>
  9776. Note that there is no direct way of querying the maximum level. This can be
  9777. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  9778. query for the width actually used at level 0. (The width may not be equal to
  9779. <i>width</i> since proxy textures might have scaled it to fit the
  9780. implementation.) Then the maximum level can be derived from the formula
  9781. <c>log2(width)</c>.
  9782. </para>
  9783. <para>
  9784. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  9785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9791. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9792. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9793. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  9796. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  9797. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  9798. </para>
  9799. <para>
  9800. <b>ERRORS</b>
  9801. </para>
  9802. <para>
  9803. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  9804. </para>
  9805. <para>
  9806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  9807. are not legal.
  9808. </para>
  9809. <para>
  9810. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  9812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  9813. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9814. </para>
  9815. <para>
  9816. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  9818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  9819. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  9820. </para>
  9821. <para>
  9822. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  9824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  9825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9826. </para>
  9827. <para>
  9828. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  9830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  9831. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9832. </para>
  9833. <para>
  9834. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  9836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  9837. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9838. </para>
  9839. <para>
  9840. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  9841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  9842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  9843. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  9844. </para>
  9845. </remarks>
  9846. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9847. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9848. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  9849. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9850. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9851. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  9852. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9853. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9854. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9855. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9856. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  9857. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  9858. </member>
  9859. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[])">
  9860. <summary>
  9861. Builds a one-dimensional mipmap.
  9862. </summary>
  9863. <param name="target">
  9864. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  9865. </param>
  9866. <param name="internalFormat">
  9867. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  9868. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9869. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  9870. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  9871. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  9872. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  9873. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  9874. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  9875. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  9876. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  9877. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  9878. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  9879. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  9880. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  9881. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  9882. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  9883. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  9884. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  9885. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  9886. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9887. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  9888. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  9889. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  9890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  9891. </param>
  9892. <param name="width">
  9893. Specifies the width, in pixels, of the texture image.
  9894. </param>
  9895. <param name="format">
  9896. Specifies the format of the pixel data. Must be one of
  9897. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  9898. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  9899. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  9900. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  9901. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  9902. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  9903. </param>
  9904. <param name="type">
  9905. Specifies the data type for <i>data</i>. Must be one of
  9906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  9907. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  9908. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  9909. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  9910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9918. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  9921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  9922. </param>
  9923. <param name="data">
  9924. Specifies a pointer to the image data in memory.
  9925. </param>
  9926. <returns>
  9927. A return value of zero indicates success, otherwise a GLU error code is
  9928. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9929. </returns>
  9930. <remarks>
  9931. <para>
  9932. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  9933. texture maps of decreasing resolutions called a mipmap. This is used for the
  9934. antialiasing of texture mapped primitives.
  9935. </para>
  9936. <para>
  9937. A return value of zero indicates success, otherwise a GLU error code is
  9938. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  9939. </para>
  9940. <para>
  9941. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  9942. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  9943. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  9944. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  9945. mipmapping operations described below. For example, if <i>width</i> is 57
  9946. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  9947. </para>
  9948. <para>
  9949. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  9950. determine if the implementation can fit the requested texture. If not, width
  9951. is continually halved until it fits.
  9952. </para>
  9953. <para>
  9954. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  9955. in half until size 1×1 is reached. At each level, each texel in the halved
  9956. mipmap level is an average of the corresponding two texels in the larger
  9957. mipmap level.
  9958. </para>
  9959. <para>
  9960. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  9961. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  9962. example, if <i>width</i> is 64 and the implementation can store a texture of
  9963. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  9964. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  9965. </para>
  9966. <para>
  9967. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  9968. the acceptable values for the <i>type</i> parameter. See the
  9969. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  9970. acceptable values for the <i>data</i> parameter.
  9971. </para>
  9972. <para>
  9973. <b>NOTES</b>
  9974. </para>
  9975. <para>
  9976. Note that there is no direct way of querying the maximum level. This can be
  9977. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  9978. query for the width actually used at level 0. (The width may not be equal to
  9979. <i>width</i> since proxy textures might have scaled it to fit the
  9980. implementation.) Then the maximum level can be derived from the formula
  9981. <c>log2(width)</c>.
  9982. </para>
  9983. <para>
  9984. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  9985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  9986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  9987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  9988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  9989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  9990. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  9991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  9992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  9993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  9994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  9995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  9996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  9997. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  9998. </para>
  9999. <para>
  10000. <b>ERRORS</b>
  10001. </para>
  10002. <para>
  10003. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  10004. </para>
  10005. <para>
  10006. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  10007. are not legal.
  10008. </para>
  10009. <para>
  10010. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10011. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  10012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  10013. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10014. </para>
  10015. <para>
  10016. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10017. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  10018. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  10019. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10020. </para>
  10021. <para>
  10022. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10023. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  10024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  10025. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10026. </para>
  10027. <para>
  10028. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  10030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  10031. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10032. </para>
  10033. <para>
  10034. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  10036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  10037. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10038. </para>
  10039. <para>
  10040. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  10042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  10043. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10044. </para>
  10045. </remarks>
  10046. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10047. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10048. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  10049. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10050. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10051. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10052. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10053. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10054. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10055. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10056. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10057. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  10058. </member>
  10059. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:])">
  10060. <summary>
  10061. Builds a one-dimensional mipmap.
  10062. </summary>
  10063. <param name="target">
  10064. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  10065. </param>
  10066. <param name="internalFormat">
  10067. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  10068. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10069. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  10070. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  10071. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  10072. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  10073. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  10074. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  10075. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  10076. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  10077. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  10078. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  10079. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  10080. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  10081. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  10082. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  10083. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  10084. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  10085. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  10086. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10087. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  10088. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  10089. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  10090. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  10091. </param>
  10092. <param name="width">
  10093. Specifies the width, in pixels, of the texture image.
  10094. </param>
  10095. <param name="format">
  10096. Specifies the format of the pixel data. Must be one of
  10097. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  10098. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  10099. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10100. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10101. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  10102. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  10103. </param>
  10104. <param name="type">
  10105. Specifies the data type for <i>data</i>. Must be one of
  10106. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  10107. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  10108. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  10109. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  10110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10117. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10118. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  10121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  10122. </param>
  10123. <param name="data">
  10124. Specifies a pointer to the image data in memory.
  10125. </param>
  10126. <returns>
  10127. A return value of zero indicates success, otherwise a GLU error code is
  10128. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10129. </returns>
  10130. <remarks>
  10131. <para>
  10132. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  10133. texture maps of decreasing resolutions called a mipmap. This is used for the
  10134. antialiasing of texture mapped primitives.
  10135. </para>
  10136. <para>
  10137. A return value of zero indicates success, otherwise a GLU error code is
  10138. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10139. </para>
  10140. <para>
  10141. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  10142. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  10143. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  10144. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  10145. mipmapping operations described below. For example, if <i>width</i> is 57
  10146. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  10147. </para>
  10148. <para>
  10149. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  10150. determine if the implementation can fit the requested texture. If not, width
  10151. is continually halved until it fits.
  10152. </para>
  10153. <para>
  10154. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  10155. in half until size 1×1 is reached. At each level, each texel in the halved
  10156. mipmap level is an average of the corresponding two texels in the larger
  10157. mipmap level.
  10158. </para>
  10159. <para>
  10160. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  10161. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  10162. example, if <i>width</i> is 64 and the implementation can store a texture of
  10163. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  10164. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  10165. </para>
  10166. <para>
  10167. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  10168. the acceptable values for the <i>type</i> parameter. See the
  10169. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  10170. acceptable values for the <i>data</i> parameter.
  10171. </para>
  10172. <para>
  10173. <b>NOTES</b>
  10174. </para>
  10175. <para>
  10176. Note that there is no direct way of querying the maximum level. This can be
  10177. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  10178. query for the width actually used at level 0. (The width may not be equal to
  10179. <i>width</i> since proxy textures might have scaled it to fit the
  10180. implementation.) Then the maximum level can be derived from the formula
  10181. <c>log2(width)</c>.
  10182. </para>
  10183. <para>
  10184. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  10185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10188. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10189. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10194. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  10196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  10197. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  10198. </para>
  10199. <para>
  10200. <b>ERRORS</b>
  10201. </para>
  10202. <para>
  10203. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  10204. </para>
  10205. <para>
  10206. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  10207. are not legal.
  10208. </para>
  10209. <para>
  10210. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  10212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  10213. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10214. </para>
  10215. <para>
  10216. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  10218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  10219. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10220. </para>
  10221. <para>
  10222. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10223. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  10224. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  10225. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10226. </para>
  10227. <para>
  10228. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10229. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  10230. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  10231. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10232. </para>
  10233. <para>
  10234. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10235. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  10236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  10237. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10238. </para>
  10239. <para>
  10240. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  10242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  10243. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10244. </para>
  10245. </remarks>
  10246. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10247. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10248. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  10249. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10250. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10251. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10252. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10253. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10254. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10255. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10256. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10257. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  10258. </member>
  10259. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:,0:])">
  10260. <summary>
  10261. Builds a one-dimensional mipmap.
  10262. </summary>
  10263. <param name="target">
  10264. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  10265. </param>
  10266. <param name="internalFormat">
  10267. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  10268. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10269. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  10270. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  10271. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  10272. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  10273. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  10274. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  10275. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  10276. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  10277. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  10278. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  10279. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  10280. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  10281. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  10282. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  10283. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  10284. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  10285. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  10286. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10287. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  10288. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  10289. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  10290. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  10291. </param>
  10292. <param name="width">
  10293. Specifies the width, in pixels, of the texture image.
  10294. </param>
  10295. <param name="format">
  10296. Specifies the format of the pixel data. Must be one of
  10297. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  10298. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  10299. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10300. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10301. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  10302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  10303. </param>
  10304. <param name="type">
  10305. Specifies the data type for <i>data</i>. Must be one of
  10306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  10307. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  10308. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  10309. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  10310. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10311. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10312. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10316. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10318. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  10321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  10322. </param>
  10323. <param name="data">
  10324. Specifies a pointer to the image data in memory.
  10325. </param>
  10326. <returns>
  10327. A return value of zero indicates success, otherwise a GLU error code is
  10328. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10329. </returns>
  10330. <remarks>
  10331. <para>
  10332. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  10333. texture maps of decreasing resolutions called a mipmap. This is used for the
  10334. antialiasing of texture mapped primitives.
  10335. </para>
  10336. <para>
  10337. A return value of zero indicates success, otherwise a GLU error code is
  10338. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10339. </para>
  10340. <para>
  10341. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  10342. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  10343. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  10344. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  10345. mipmapping operations described below. For example, if <i>width</i> is 57
  10346. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  10347. </para>
  10348. <para>
  10349. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  10350. determine if the implementation can fit the requested texture. If not, width
  10351. is continually halved until it fits.
  10352. </para>
  10353. <para>
  10354. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  10355. in half until size 1×1 is reached. At each level, each texel in the halved
  10356. mipmap level is an average of the corresponding two texels in the larger
  10357. mipmap level.
  10358. </para>
  10359. <para>
  10360. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  10361. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  10362. example, if <i>width</i> is 64 and the implementation can store a texture of
  10363. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  10364. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  10365. </para>
  10366. <para>
  10367. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  10368. the acceptable values for the <i>type</i> parameter. See the
  10369. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  10370. acceptable values for the <i>data</i> parameter.
  10371. </para>
  10372. <para>
  10373. <b>NOTES</b>
  10374. </para>
  10375. <para>
  10376. Note that there is no direct way of querying the maximum level. This can be
  10377. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  10378. query for the width actually used at level 0. (The width may not be equal to
  10379. <i>width</i> since proxy textures might have scaled it to fit the
  10380. implementation.) Then the maximum level can be derived from the formula
  10381. <c>log2(width)</c>.
  10382. </para>
  10383. <para>
  10384. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  10385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10394. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  10396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  10397. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  10398. </para>
  10399. <para>
  10400. <b>ERRORS</b>
  10401. </para>
  10402. <para>
  10403. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  10404. </para>
  10405. <para>
  10406. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  10407. are not legal.
  10408. </para>
  10409. <para>
  10410. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  10412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  10413. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10414. </para>
  10415. <para>
  10416. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  10418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  10419. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10420. </para>
  10421. <para>
  10422. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  10424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  10425. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10426. </para>
  10427. <para>
  10428. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  10430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  10431. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10432. </para>
  10433. <para>
  10434. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  10436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  10437. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10438. </para>
  10439. <para>
  10440. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  10442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  10443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10444. </para>
  10445. </remarks>
  10446. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10447. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10448. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  10449. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10450. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10451. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10452. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10453. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10454. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10455. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10456. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10457. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  10458. </member>
  10459. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
  10460. <summary>
  10461. Builds a one-dimensional mipmap.
  10462. </summary>
  10463. <param name="target">
  10464. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  10465. </param>
  10466. <param name="internalFormat">
  10467. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  10468. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10469. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  10470. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  10471. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  10472. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  10473. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  10474. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  10475. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  10476. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  10477. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  10478. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  10479. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  10480. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  10481. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  10482. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  10483. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  10484. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  10485. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  10486. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10487. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  10488. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  10489. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  10490. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  10491. </param>
  10492. <param name="width">
  10493. Specifies the width, in pixels, of the texture image.
  10494. </param>
  10495. <param name="format">
  10496. Specifies the format of the pixel data. Must be one of
  10497. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  10498. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  10499. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10500. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10501. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  10502. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  10503. </param>
  10504. <param name="type">
  10505. Specifies the data type for <i>data</i>. Must be one of
  10506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  10507. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  10508. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  10509. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  10510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  10521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  10522. </param>
  10523. <param name="data">
  10524. Specifies a pointer to the image data in memory.
  10525. </param>
  10526. <returns>
  10527. A return value of zero indicates success, otherwise a GLU error code is
  10528. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10529. </returns>
  10530. <remarks>
  10531. <para>
  10532. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  10533. texture maps of decreasing resolutions called a mipmap. This is used for the
  10534. antialiasing of texture mapped primitives.
  10535. </para>
  10536. <para>
  10537. A return value of zero indicates success, otherwise a GLU error code is
  10538. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10539. </para>
  10540. <para>
  10541. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  10542. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  10543. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  10544. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  10545. mipmapping operations described below. For example, if <i>width</i> is 57
  10546. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  10547. </para>
  10548. <para>
  10549. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  10550. determine if the implementation can fit the requested texture. If not, width
  10551. is continually halved until it fits.
  10552. </para>
  10553. <para>
  10554. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  10555. in half until size 1×1 is reached. At each level, each texel in the halved
  10556. mipmap level is an average of the corresponding two texels in the larger
  10557. mipmap level.
  10558. </para>
  10559. <para>
  10560. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  10561. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  10562. example, if <i>width</i> is 64 and the implementation can store a texture of
  10563. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  10564. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  10565. </para>
  10566. <para>
  10567. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  10568. the acceptable values for the <i>type</i> parameter. See the
  10569. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  10570. acceptable values for the <i>data</i> parameter.
  10571. </para>
  10572. <para>
  10573. <b>NOTES</b>
  10574. </para>
  10575. <para>
  10576. Note that there is no direct way of querying the maximum level. This can be
  10577. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  10578. query for the width actually used at level 0. (The width may not be equal to
  10579. <i>width</i> since proxy textures might have scaled it to fit the
  10580. implementation.) Then the maximum level can be derived from the formula
  10581. <c>log2(width)</c>.
  10582. </para>
  10583. <para>
  10584. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  10585. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10586. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10587. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10590. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  10596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  10597. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  10598. </para>
  10599. <para>
  10600. <b>ERRORS</b>
  10601. </para>
  10602. <para>
  10603. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  10604. </para>
  10605. <para>
  10606. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  10607. are not legal.
  10608. </para>
  10609. <para>
  10610. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10611. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  10612. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  10613. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10614. </para>
  10615. <para>
  10616. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  10618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  10619. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10620. </para>
  10621. <para>
  10622. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  10624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  10625. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10626. </para>
  10627. <para>
  10628. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  10630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  10631. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10632. </para>
  10633. <para>
  10634. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  10636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  10637. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10638. </para>
  10639. <para>
  10640. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  10642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  10643. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10644. </para>
  10645. </remarks>
  10646. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10647. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10648. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  10649. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10650. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10651. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10652. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10653. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10654. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10655. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10656. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10657. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  10658. </member>
  10659. <member name="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Void*)">
  10660. <summary>
  10661. Builds a one-dimensional mipmap.
  10662. </summary>
  10663. <param name="target">
  10664. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_1D"/>.
  10665. </param>
  10666. <param name="internalFormat">
  10667. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  10668. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10669. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  10670. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  10671. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  10672. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  10673. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  10674. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  10675. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  10676. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  10677. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  10678. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  10679. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  10680. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  10681. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  10682. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  10683. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  10684. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  10685. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  10686. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10687. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  10688. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  10689. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or
  10690. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  10691. </param>
  10692. <param name="width">
  10693. Specifies the width, in pixels, of the texture image.
  10694. </param>
  10695. <param name="format">
  10696. Specifies the format of the pixel data. Must be one of
  10697. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  10698. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  10699. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10700. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10701. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  10702. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  10703. </param>
  10704. <param name="type">
  10705. Specifies the data type for <i>data</i>. Must be one of
  10706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  10707. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  10708. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  10709. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  10710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10715. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10718. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  10721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  10722. </param>
  10723. <param name="data">
  10724. Specifies a pointer to the image data in memory.
  10725. </param>
  10726. <returns>
  10727. A return value of zero indicates success, otherwise a GLU error code is
  10728. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10729. </returns>
  10730. <remarks>
  10731. <para>
  10732. <b>gluBuild1DMipmaps</b> builds a series of prefiltered one-dimensional
  10733. texture maps of decreasing resolutions called a mipmap. This is used for the
  10734. antialiasing of texture mapped primitives.
  10735. </para>
  10736. <para>
  10737. A return value of zero indicates success, otherwise a GLU error code is
  10738. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10739. </para>
  10740. <para>
  10741. Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
  10742. of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
  10743. power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
  10744. of <i>data</i> will scale upwards.) This copy will be used for subsequent
  10745. mipmapping operations described below. For example, if <i>width</i> is 57
  10746. then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
  10747. </para>
  10748. <para>
  10749. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  10750. determine if the implementation can fit the requested texture. If not, width
  10751. is continually halved until it fits.
  10752. </para>
  10753. <para>
  10754. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  10755. in half until size 1×1 is reached. At each level, each texel in the halved
  10756. mipmap level is an average of the corresponding two texels in the larger
  10757. mipmap level.
  10758. </para>
  10759. <para>
  10760. <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
  10761. is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
  10762. example, if <i>width</i> is 64 and the implementation can store a texture of
  10763. this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
  10764. 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
  10765. </para>
  10766. <para>
  10767. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  10768. the acceptable values for the <i>type</i> parameter. See the
  10769. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  10770. acceptable values for the <i>data</i> parameter.
  10771. </para>
  10772. <para>
  10773. <b>NOTES</b>
  10774. </para>
  10775. <para>
  10776. Note that there is no direct way of querying the maximum level. This can be
  10777. derived indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First,
  10778. query for the width actually used at level 0. (The width may not be equal to
  10779. <i>width</i> since proxy textures might have scaled it to fit the
  10780. implementation.) Then the maximum level can be derived from the formula
  10781. <c>log2(width)</c>.
  10782. </para>
  10783. <para>
  10784. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  10785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10791. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10792. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10793. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  10796. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  10797. version is 1.2 or greater, and if the GLU version is 1.3 or greater.
  10798. </para>
  10799. <para>
  10800. <b>ERRORS</b>
  10801. </para>
  10802. <para>
  10803. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> is &lt; 1.
  10804. </para>
  10805. <para>
  10806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i> or <i>type</i>
  10807. are not legal.
  10808. </para>
  10809. <para>
  10810. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  10812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  10813. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10814. </para>
  10815. <para>
  10816. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  10818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  10819. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  10820. </para>
  10821. <para>
  10822. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  10824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  10825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10826. </para>
  10827. <para>
  10828. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  10830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  10831. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10832. </para>
  10833. <para>
  10834. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  10836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  10837. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10838. </para>
  10839. <para>
  10840. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  10841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  10842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  10843. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  10844. </para>
  10845. </remarks>
  10846. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10847. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10848. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  10849. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10850. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10851. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  10852. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10853. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10854. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10855. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10856. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  10857. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  10858. </member>
  10859. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])">
  10860. <summary>
  10861. Builds a subset of two-dimensional mipmap levels.
  10862. </summary>
  10863. <param name="target">
  10864. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  10865. </param>
  10866. <param name="internalFormat">
  10867. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  10868. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10869. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  10870. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  10871. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  10872. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  10873. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  10874. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  10875. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  10876. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  10877. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  10878. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  10879. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  10880. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  10881. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  10882. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  10883. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  10884. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  10885. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  10886. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10887. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  10888. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  10889. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  10890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  10891. </param>
  10892. <param name="width">
  10893. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  10894. </param>
  10895. <param name="height">
  10896. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  10897. </param>
  10898. <param name="format">
  10899. Specifies the format of the pixel data. Must be one of
  10900. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  10901. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  10902. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  10903. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  10904. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  10905. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  10906. </param>
  10907. <param name="type">
  10908. Specifies the data type for <i>data</i>. Must be one of
  10909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  10910. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  10911. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  10912. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  10913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10918. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  10921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  10922. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  10923. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  10924. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  10925. </param>
  10926. <param name="level">
  10927. Specifies the mipmap level of the image data.
  10928. </param>
  10929. <param name="min">
  10930. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  10931. </param>
  10932. <param name="max">
  10933. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  10934. </param>
  10935. <param name="data">
  10936. Specifies a pointer to the image data in memory.
  10937. </param>
  10938. <returns>
  10939. A return value of zero indicates success, otherwise a GLU error code is
  10940. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10941. </returns>
  10942. <remarks>
  10943. <para>
  10944. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  10945. texture maps of decreasing resolutions called a mipmap. This is used for the
  10946. antialiasing of texture mapped primitives.
  10947. </para>
  10948. <para>
  10949. A return value of zero indicates success, otherwise a GLU error code is
  10950. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  10951. </para>
  10952. <para>
  10953. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  10954. decimating <i>data</i> in half along both dimensions until size 1×1 is
  10955. reached. At each level, each texel in the halved mipmap level is an average
  10956. of the corresponding four texels in the larger mipmap level. (In the case of
  10957. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  10958. configuration. Here, two texels are averaged instead.)
  10959. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  10960. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  10961. level for the texture of the specified size, then a GLU error code is
  10962. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  10963. </para>
  10964. <para>
  10965. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  10966. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  10967. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  10968. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  10969. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  10970. since <i>max</i> is larger than the highest mipmap level which is, in this
  10971. case, 6.
  10972. </para>
  10973. <para>
  10974. The highest mipmap level can be derived from the formula
  10975. <c>log2(max(width,height)*(2^level))</c>.
  10976. </para>
  10977. <para>
  10978. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  10979. the acceptable values for <i>format</i> parameter. See the
  10980. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  10981. acceptable values for <i>type</i> parameter.
  10982. </para>
  10983. <para>
  10984. <b>NOTES</b>
  10985. </para>
  10986. <para>
  10987. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  10988. greater.
  10989. </para>
  10990. <para>
  10991. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  10992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  10993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  10994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  10995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  10996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  10997. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  10998. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  10999. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11002. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  11003. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  11004. version is 1.2 or greater.
  11005. </para>
  11006. <para>
  11007. <b>ERRORS</b>
  11008. </para>
  11009. <para>
  11010. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  11011. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  11012. highest mipmap level for <i>data</i>.
  11013. </para>
  11014. <para>
  11015. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  11016. is &lt; 1.
  11017. </para>
  11018. <para>
  11019. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  11020. <i>format</i>, or <i>type</i> is not legal.
  11021. </para>
  11022. <para>
  11023. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  11025. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  11026. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11027. </para>
  11028. <para>
  11029. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  11031. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  11032. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11033. </para>
  11034. <para>
  11035. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  11037. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  11038. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11039. </para>
  11040. <para>
  11041. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  11043. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  11044. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11045. </para>
  11046. <para>
  11047. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11048. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  11049. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  11050. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11051. </para>
  11052. <para>
  11053. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11054. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11055. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  11056. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11057. </para>
  11058. </remarks>
  11059. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11060. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11061. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  11062. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11063. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11064. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11065. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11066. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11067. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11068. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11069. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11070. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  11071. </member>
  11072. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:])">
  11073. <summary>
  11074. Builds a subset of two-dimensional mipmap levels.
  11075. </summary>
  11076. <param name="target">
  11077. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  11078. </param>
  11079. <param name="internalFormat">
  11080. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  11081. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11082. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  11083. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  11084. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  11085. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  11086. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  11087. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  11088. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  11089. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  11090. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  11091. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  11092. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  11093. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  11094. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  11095. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  11096. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  11097. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  11098. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  11099. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11100. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  11101. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  11102. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  11103. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  11104. </param>
  11105. <param name="width">
  11106. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  11107. </param>
  11108. <param name="height">
  11109. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  11110. </param>
  11111. <param name="format">
  11112. Specifies the format of the pixel data. Must be one of
  11113. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  11114. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  11115. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11116. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11117. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  11118. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  11119. </param>
  11120. <param name="type">
  11121. Specifies the data type for <i>data</i>. Must be one of
  11122. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  11123. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  11124. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  11125. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  11126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11127. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11128. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11129. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11130. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11133. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11134. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11135. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11136. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11137. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  11138. </param>
  11139. <param name="level">
  11140. Specifies the mipmap level of the image data.
  11141. </param>
  11142. <param name="min">
  11143. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11144. </param>
  11145. <param name="max">
  11146. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11147. </param>
  11148. <param name="data">
  11149. Specifies a pointer to the image data in memory.
  11150. </param>
  11151. <returns>
  11152. A return value of zero indicates success, otherwise a GLU error code is
  11153. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11154. </returns>
  11155. <remarks>
  11156. <para>
  11157. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  11158. texture maps of decreasing resolutions called a mipmap. This is used for the
  11159. antialiasing of texture mapped primitives.
  11160. </para>
  11161. <para>
  11162. A return value of zero indicates success, otherwise a GLU error code is
  11163. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11164. </para>
  11165. <para>
  11166. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  11167. decimating <i>data</i> in half along both dimensions until size 1×1 is
  11168. reached. At each level, each texel in the halved mipmap level is an average
  11169. of the corresponding four texels in the larger mipmap level. (In the case of
  11170. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  11171. configuration. Here, two texels are averaged instead.)
  11172. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  11173. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  11174. level for the texture of the specified size, then a GLU error code is
  11175. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  11176. </para>
  11177. <para>
  11178. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  11179. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  11180. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  11181. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  11182. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  11183. since <i>max</i> is larger than the highest mipmap level which is, in this
  11184. case, 6.
  11185. </para>
  11186. <para>
  11187. The highest mipmap level can be derived from the formula
  11188. <c>log2(max(width,height)*(2^level))</c>.
  11189. </para>
  11190. <para>
  11191. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  11192. the acceptable values for <i>format</i> parameter. See the
  11193. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  11194. acceptable values for <i>type</i> parameter.
  11195. </para>
  11196. <para>
  11197. <b>NOTES</b>
  11198. </para>
  11199. <para>
  11200. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  11201. greater.
  11202. </para>
  11203. <para>
  11204. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  11205. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11206. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11207. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11208. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11214. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  11216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  11217. version is 1.2 or greater.
  11218. </para>
  11219. <para>
  11220. <b>ERRORS</b>
  11221. </para>
  11222. <para>
  11223. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  11224. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  11225. highest mipmap level for <i>data</i>.
  11226. </para>
  11227. <para>
  11228. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  11229. is &lt; 1.
  11230. </para>
  11231. <para>
  11232. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  11233. <i>format</i>, or <i>type</i> is not legal.
  11234. </para>
  11235. <para>
  11236. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11237. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  11238. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  11239. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11240. </para>
  11241. <para>
  11242. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11243. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  11244. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  11245. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11246. </para>
  11247. <para>
  11248. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11249. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  11250. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  11251. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11252. </para>
  11253. <para>
  11254. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11255. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  11256. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  11257. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11258. </para>
  11259. <para>
  11260. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  11262. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  11263. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11264. </para>
  11265. <para>
  11266. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11267. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11268. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  11269. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11270. </para>
  11271. </remarks>
  11272. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11273. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11274. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  11275. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11276. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11277. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11278. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11279. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11280. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11281. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11282. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11283. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  11284. </member>
  11285. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:,0:])">
  11286. <summary>
  11287. Builds a subset of two-dimensional mipmap levels.
  11288. </summary>
  11289. <param name="target">
  11290. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  11291. </param>
  11292. <param name="internalFormat">
  11293. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  11294. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11295. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  11296. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  11297. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  11298. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  11299. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  11300. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  11301. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  11302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  11303. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  11304. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  11305. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  11306. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  11307. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  11308. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  11309. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  11310. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  11311. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  11312. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11313. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  11314. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  11315. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  11316. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  11317. </param>
  11318. <param name="width">
  11319. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  11320. </param>
  11321. <param name="height">
  11322. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  11323. </param>
  11324. <param name="format">
  11325. Specifies the format of the pixel data. Must be one of
  11326. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  11327. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  11328. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11329. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11330. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  11331. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  11332. </param>
  11333. <param name="type">
  11334. Specifies the data type for <i>data</i>. Must be one of
  11335. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  11336. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  11337. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  11338. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  11339. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11342. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11343. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11348. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11349. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11350. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  11351. </param>
  11352. <param name="level">
  11353. Specifies the mipmap level of the image data.
  11354. </param>
  11355. <param name="min">
  11356. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11357. </param>
  11358. <param name="max">
  11359. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11360. </param>
  11361. <param name="data">
  11362. Specifies a pointer to the image data in memory.
  11363. </param>
  11364. <returns>
  11365. A return value of zero indicates success, otherwise a GLU error code is
  11366. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11367. </returns>
  11368. <remarks>
  11369. <para>
  11370. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  11371. texture maps of decreasing resolutions called a mipmap. This is used for the
  11372. antialiasing of texture mapped primitives.
  11373. </para>
  11374. <para>
  11375. A return value of zero indicates success, otherwise a GLU error code is
  11376. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11377. </para>
  11378. <para>
  11379. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  11380. decimating <i>data</i> in half along both dimensions until size 1×1 is
  11381. reached. At each level, each texel in the halved mipmap level is an average
  11382. of the corresponding four texels in the larger mipmap level. (In the case of
  11383. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  11384. configuration. Here, two texels are averaged instead.)
  11385. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  11386. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  11387. level for the texture of the specified size, then a GLU error code is
  11388. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  11389. </para>
  11390. <para>
  11391. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  11392. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  11393. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  11394. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  11395. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  11396. since <i>max</i> is larger than the highest mipmap level which is, in this
  11397. case, 6.
  11398. </para>
  11399. <para>
  11400. The highest mipmap level can be derived from the formula
  11401. <c>log2(max(width,height)*(2^level))</c>.
  11402. </para>
  11403. <para>
  11404. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  11405. the acceptable values for <i>format</i> parameter. See the
  11406. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  11407. acceptable values for <i>type</i> parameter.
  11408. </para>
  11409. <para>
  11410. <b>NOTES</b>
  11411. </para>
  11412. <para>
  11413. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  11414. greater.
  11415. </para>
  11416. <para>
  11417. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  11418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11419. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11420. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11425. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11426. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11427. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11428. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  11429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  11430. version is 1.2 or greater.
  11431. </para>
  11432. <para>
  11433. <b>ERRORS</b>
  11434. </para>
  11435. <para>
  11436. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  11437. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  11438. highest mipmap level for <i>data</i>.
  11439. </para>
  11440. <para>
  11441. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  11442. is &lt; 1.
  11443. </para>
  11444. <para>
  11445. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  11446. <i>format</i>, or <i>type</i> is not legal.
  11447. </para>
  11448. <para>
  11449. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11450. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  11451. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  11452. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11453. </para>
  11454. <para>
  11455. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11456. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  11457. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  11458. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11459. </para>
  11460. <para>
  11461. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11462. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  11463. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  11464. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11465. </para>
  11466. <para>
  11467. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11468. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  11469. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  11470. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11471. </para>
  11472. <para>
  11473. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  11475. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  11476. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11477. </para>
  11478. <para>
  11479. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11480. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11481. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  11482. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11483. </para>
  11484. </remarks>
  11485. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11486. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11487. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  11488. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11489. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11490. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11491. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11492. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11493. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11494. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11495. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11496. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  11497. </member>
  11498. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[])">
  11499. <summary>
  11500. Builds a subset of two-dimensional mipmap levels.
  11501. </summary>
  11502. <param name="target">
  11503. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  11504. </param>
  11505. <param name="internalFormat">
  11506. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  11507. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11508. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  11509. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  11510. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  11511. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  11512. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  11513. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  11514. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  11515. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  11516. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  11517. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  11518. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  11519. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  11520. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  11521. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  11522. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  11523. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  11524. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  11525. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11526. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  11527. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  11528. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  11529. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  11530. </param>
  11531. <param name="width">
  11532. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  11533. </param>
  11534. <param name="height">
  11535. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  11536. </param>
  11537. <param name="format">
  11538. Specifies the format of the pixel data. Must be one of
  11539. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  11540. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  11541. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11542. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11543. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  11544. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  11545. </param>
  11546. <param name="type">
  11547. Specifies the data type for <i>data</i>. Must be one of
  11548. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  11549. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  11550. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  11551. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  11552. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11553. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11554. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11555. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11557. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11558. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11559. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11560. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11561. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11562. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11563. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  11564. </param>
  11565. <param name="level">
  11566. Specifies the mipmap level of the image data.
  11567. </param>
  11568. <param name="min">
  11569. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11570. </param>
  11571. <param name="max">
  11572. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11573. </param>
  11574. <param name="data">
  11575. Specifies a pointer to the image data in memory.
  11576. </param>
  11577. <returns>
  11578. A return value of zero indicates success, otherwise a GLU error code is
  11579. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11580. </returns>
  11581. <remarks>
  11582. <para>
  11583. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  11584. texture maps of decreasing resolutions called a mipmap. This is used for the
  11585. antialiasing of texture mapped primitives.
  11586. </para>
  11587. <para>
  11588. A return value of zero indicates success, otherwise a GLU error code is
  11589. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11590. </para>
  11591. <para>
  11592. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  11593. decimating <i>data</i> in half along both dimensions until size 1×1 is
  11594. reached. At each level, each texel in the halved mipmap level is an average
  11595. of the corresponding four texels in the larger mipmap level. (In the case of
  11596. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  11597. configuration. Here, two texels are averaged instead.)
  11598. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  11599. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  11600. level for the texture of the specified size, then a GLU error code is
  11601. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  11602. </para>
  11603. <para>
  11604. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  11605. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  11606. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  11607. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  11608. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  11609. since <i>max</i> is larger than the highest mipmap level which is, in this
  11610. case, 6.
  11611. </para>
  11612. <para>
  11613. The highest mipmap level can be derived from the formula
  11614. <c>log2(max(width,height)*(2^level))</c>.
  11615. </para>
  11616. <para>
  11617. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  11618. the acceptable values for <i>format</i> parameter. See the
  11619. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  11620. acceptable values for <i>type</i> parameter.
  11621. </para>
  11622. <para>
  11623. <b>NOTES</b>
  11624. </para>
  11625. <para>
  11626. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  11627. greater.
  11628. </para>
  11629. <para>
  11630. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  11631. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11632. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11633. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11634. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11637. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11638. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11639. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11640. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  11642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  11643. version is 1.2 or greater.
  11644. </para>
  11645. <para>
  11646. <b>ERRORS</b>
  11647. </para>
  11648. <para>
  11649. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  11650. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  11651. highest mipmap level for <i>data</i>.
  11652. </para>
  11653. <para>
  11654. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  11655. is &lt; 1.
  11656. </para>
  11657. <para>
  11658. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  11659. <i>format</i>, or <i>type</i> is not legal.
  11660. </para>
  11661. <para>
  11662. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11663. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  11664. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  11665. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11666. </para>
  11667. <para>
  11668. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11669. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  11670. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  11671. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11672. </para>
  11673. <para>
  11674. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11675. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  11676. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  11677. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11678. </para>
  11679. <para>
  11680. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11681. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  11682. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  11683. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11684. </para>
  11685. <para>
  11686. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11687. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  11688. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  11689. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11690. </para>
  11691. <para>
  11692. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11693. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11694. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  11695. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11696. </para>
  11697. </remarks>
  11698. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11699. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11700. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  11701. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11702. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11703. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11704. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11705. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11706. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11707. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11708. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11709. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  11710. </member>
  11711. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:])">
  11712. <summary>
  11713. Builds a subset of two-dimensional mipmap levels.
  11714. </summary>
  11715. <param name="target">
  11716. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  11717. </param>
  11718. <param name="internalFormat">
  11719. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  11720. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11721. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  11722. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  11723. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  11724. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  11725. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  11726. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  11727. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  11728. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  11729. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  11730. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  11731. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  11732. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  11733. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  11734. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  11735. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  11736. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  11737. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  11738. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11739. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  11740. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  11741. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  11742. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  11743. </param>
  11744. <param name="width">
  11745. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  11746. </param>
  11747. <param name="height">
  11748. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  11749. </param>
  11750. <param name="format">
  11751. Specifies the format of the pixel data. Must be one of
  11752. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  11753. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  11754. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11755. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11756. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  11757. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  11758. </param>
  11759. <param name="type">
  11760. Specifies the data type for <i>data</i>. Must be one of
  11761. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  11762. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  11763. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  11764. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  11765. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11766. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11767. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11768. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11769. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11770. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11771. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11772. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11773. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11774. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11775. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  11777. </param>
  11778. <param name="level">
  11779. Specifies the mipmap level of the image data.
  11780. </param>
  11781. <param name="min">
  11782. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11783. </param>
  11784. <param name="max">
  11785. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11786. </param>
  11787. <param name="data">
  11788. Specifies a pointer to the image data in memory.
  11789. </param>
  11790. <returns>
  11791. A return value of zero indicates success, otherwise a GLU error code is
  11792. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11793. </returns>
  11794. <remarks>
  11795. <para>
  11796. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  11797. texture maps of decreasing resolutions called a mipmap. This is used for the
  11798. antialiasing of texture mapped primitives.
  11799. </para>
  11800. <para>
  11801. A return value of zero indicates success, otherwise a GLU error code is
  11802. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  11803. </para>
  11804. <para>
  11805. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  11806. decimating <i>data</i> in half along both dimensions until size 1×1 is
  11807. reached. At each level, each texel in the halved mipmap level is an average
  11808. of the corresponding four texels in the larger mipmap level. (In the case of
  11809. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  11810. configuration. Here, two texels are averaged instead.)
  11811. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  11812. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  11813. level for the texture of the specified size, then a GLU error code is
  11814. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  11815. </para>
  11816. <para>
  11817. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  11818. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  11819. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  11820. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  11821. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  11822. since <i>max</i> is larger than the highest mipmap level which is, in this
  11823. case, 6.
  11824. </para>
  11825. <para>
  11826. The highest mipmap level can be derived from the formula
  11827. <c>log2(max(width,height)*(2^level))</c>.
  11828. </para>
  11829. <para>
  11830. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  11831. the acceptable values for <i>format</i> parameter. See the
  11832. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  11833. acceptable values for <i>type</i> parameter.
  11834. </para>
  11835. <para>
  11836. <b>NOTES</b>
  11837. </para>
  11838. <para>
  11839. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  11840. greater.
  11841. </para>
  11842. <para>
  11843. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  11844. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11845. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11846. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11847. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11848. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11849. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11850. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11851. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11852. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11853. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11854. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  11855. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  11856. version is 1.2 or greater.
  11857. </para>
  11858. <para>
  11859. <b>ERRORS</b>
  11860. </para>
  11861. <para>
  11862. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  11863. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  11864. highest mipmap level for <i>data</i>.
  11865. </para>
  11866. <para>
  11867. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  11868. is &lt; 1.
  11869. </para>
  11870. <para>
  11871. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  11872. <i>format</i>, or <i>type</i> is not legal.
  11873. </para>
  11874. <para>
  11875. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11876. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  11877. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  11878. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11879. </para>
  11880. <para>
  11881. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11882. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  11883. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  11884. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  11885. </para>
  11886. <para>
  11887. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11888. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  11889. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  11890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11891. </para>
  11892. <para>
  11893. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11894. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  11895. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  11896. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11897. </para>
  11898. <para>
  11899. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11900. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  11901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  11902. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11903. </para>
  11904. <para>
  11905. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  11906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  11908. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  11909. </para>
  11910. </remarks>
  11911. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11912. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11913. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  11914. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11915. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11916. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  11917. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11918. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11919. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11920. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11921. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  11922. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  11923. </member>
  11924. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:,0:])">
  11925. <summary>
  11926. Builds a subset of two-dimensional mipmap levels.
  11927. </summary>
  11928. <param name="target">
  11929. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  11930. </param>
  11931. <param name="internalFormat">
  11932. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  11933. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11934. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  11935. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  11936. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  11937. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  11938. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  11939. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  11940. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  11941. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  11942. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  11943. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  11944. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  11945. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  11946. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  11947. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  11948. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  11949. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  11950. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  11951. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11952. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  11953. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  11954. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  11955. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  11956. </param>
  11957. <param name="width">
  11958. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  11959. </param>
  11960. <param name="height">
  11961. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  11962. </param>
  11963. <param name="format">
  11964. Specifies the format of the pixel data. Must be one of
  11965. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  11966. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  11967. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  11968. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  11969. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  11970. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  11971. </param>
  11972. <param name="type">
  11973. Specifies the data type for <i>data</i>. Must be one of
  11974. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  11975. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  11976. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  11977. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  11978. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  11979. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  11980. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  11981. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  11982. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  11983. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  11984. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  11985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  11986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  11987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  11988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  11989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  11990. </param>
  11991. <param name="level">
  11992. Specifies the mipmap level of the image data.
  11993. </param>
  11994. <param name="min">
  11995. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11996. </param>
  11997. <param name="max">
  11998. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  11999. </param>
  12000. <param name="data">
  12001. Specifies a pointer to the image data in memory.
  12002. </param>
  12003. <returns>
  12004. A return value of zero indicates success, otherwise a GLU error code is
  12005. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12006. </returns>
  12007. <remarks>
  12008. <para>
  12009. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  12010. texture maps of decreasing resolutions called a mipmap. This is used for the
  12011. antialiasing of texture mapped primitives.
  12012. </para>
  12013. <para>
  12014. A return value of zero indicates success, otherwise a GLU error code is
  12015. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12016. </para>
  12017. <para>
  12018. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  12019. decimating <i>data</i> in half along both dimensions until size 1×1 is
  12020. reached. At each level, each texel in the halved mipmap level is an average
  12021. of the corresponding four texels in the larger mipmap level. (In the case of
  12022. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  12023. configuration. Here, two texels are averaged instead.)
  12024. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  12025. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  12026. level for the texture of the specified size, then a GLU error code is
  12027. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  12028. </para>
  12029. <para>
  12030. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  12031. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  12032. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  12033. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  12034. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  12035. since <i>max</i> is larger than the highest mipmap level which is, in this
  12036. case, 6.
  12037. </para>
  12038. <para>
  12039. The highest mipmap level can be derived from the formula
  12040. <c>log2(max(width,height)*(2^level))</c>.
  12041. </para>
  12042. <para>
  12043. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  12044. the acceptable values for <i>format</i> parameter. See the
  12045. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  12046. acceptable values for <i>type</i> parameter.
  12047. </para>
  12048. <para>
  12049. <b>NOTES</b>
  12050. </para>
  12051. <para>
  12052. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  12053. greater.
  12054. </para>
  12055. <para>
  12056. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  12057. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12058. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12059. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12060. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12061. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12062. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12063. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12064. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12065. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12066. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12067. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  12068. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  12069. version is 1.2 or greater.
  12070. </para>
  12071. <para>
  12072. <b>ERRORS</b>
  12073. </para>
  12074. <para>
  12075. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  12076. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  12077. highest mipmap level for <i>data</i>.
  12078. </para>
  12079. <para>
  12080. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  12081. is &lt; 1.
  12082. </para>
  12083. <para>
  12084. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  12085. <i>format</i>, or <i>type</i> is not legal.
  12086. </para>
  12087. <para>
  12088. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12089. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  12090. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  12091. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12092. </para>
  12093. <para>
  12094. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12095. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  12096. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  12097. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12098. </para>
  12099. <para>
  12100. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12101. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  12102. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  12103. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12104. </para>
  12105. <para>
  12106. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12107. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  12108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  12109. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12110. </para>
  12111. <para>
  12112. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  12114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  12115. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12116. </para>
  12117. <para>
  12118. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  12121. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12122. </para>
  12123. </remarks>
  12124. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12125. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12126. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  12127. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12128. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12129. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12130. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12131. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12132. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12133. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12134. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12135. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  12136. </member>
  12137. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[])">
  12138. <summary>
  12139. Builds a subset of two-dimensional mipmap levels.
  12140. </summary>
  12141. <param name="target">
  12142. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  12143. </param>
  12144. <param name="internalFormat">
  12145. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  12146. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12147. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  12148. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  12149. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  12150. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  12151. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  12152. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  12153. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  12154. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  12155. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  12156. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  12157. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  12158. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  12159. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  12160. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  12161. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  12162. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  12163. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  12164. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12165. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  12166. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  12167. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  12168. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  12169. </param>
  12170. <param name="width">
  12171. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  12172. </param>
  12173. <param name="height">
  12174. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  12175. </param>
  12176. <param name="format">
  12177. Specifies the format of the pixel data. Must be one of
  12178. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  12179. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  12180. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12181. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12182. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  12183. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  12184. </param>
  12185. <param name="type">
  12186. Specifies the data type for <i>data</i>. Must be one of
  12187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  12188. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  12189. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  12190. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  12191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12194. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12197. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12198. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12199. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12200. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12201. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12202. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  12203. </param>
  12204. <param name="level">
  12205. Specifies the mipmap level of the image data.
  12206. </param>
  12207. <param name="min">
  12208. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12209. </param>
  12210. <param name="max">
  12211. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12212. </param>
  12213. <param name="data">
  12214. Specifies a pointer to the image data in memory.
  12215. </param>
  12216. <returns>
  12217. A return value of zero indicates success, otherwise a GLU error code is
  12218. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12219. </returns>
  12220. <remarks>
  12221. <para>
  12222. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  12223. texture maps of decreasing resolutions called a mipmap. This is used for the
  12224. antialiasing of texture mapped primitives.
  12225. </para>
  12226. <para>
  12227. A return value of zero indicates success, otherwise a GLU error code is
  12228. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12229. </para>
  12230. <para>
  12231. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  12232. decimating <i>data</i> in half along both dimensions until size 1×1 is
  12233. reached. At each level, each texel in the halved mipmap level is an average
  12234. of the corresponding four texels in the larger mipmap level. (In the case of
  12235. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  12236. configuration. Here, two texels are averaged instead.)
  12237. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  12238. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  12239. level for the texture of the specified size, then a GLU error code is
  12240. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  12241. </para>
  12242. <para>
  12243. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  12244. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  12245. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  12246. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  12247. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  12248. since <i>max</i> is larger than the highest mipmap level which is, in this
  12249. case, 6.
  12250. </para>
  12251. <para>
  12252. The highest mipmap level can be derived from the formula
  12253. <c>log2(max(width,height)*(2^level))</c>.
  12254. </para>
  12255. <para>
  12256. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  12257. the acceptable values for <i>format</i> parameter. See the
  12258. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  12259. acceptable values for <i>type</i> parameter.
  12260. </para>
  12261. <para>
  12262. <b>NOTES</b>
  12263. </para>
  12264. <para>
  12265. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  12266. greater.
  12267. </para>
  12268. <para>
  12269. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  12270. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12271. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12272. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12273. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12274. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12275. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12276. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12277. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12278. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12279. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12280. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  12281. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  12282. version is 1.2 or greater.
  12283. </para>
  12284. <para>
  12285. <b>ERRORS</b>
  12286. </para>
  12287. <para>
  12288. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  12289. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  12290. highest mipmap level for <i>data</i>.
  12291. </para>
  12292. <para>
  12293. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  12294. is &lt; 1.
  12295. </para>
  12296. <para>
  12297. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  12298. <i>format</i>, or <i>type</i> is not legal.
  12299. </para>
  12300. <para>
  12301. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12302. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  12303. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  12304. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12305. </para>
  12306. <para>
  12307. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12308. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  12309. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  12310. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12311. </para>
  12312. <para>
  12313. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  12315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  12316. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12317. </para>
  12318. <para>
  12319. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  12321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  12322. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12323. </para>
  12324. <para>
  12325. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12326. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  12327. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  12328. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12329. </para>
  12330. <para>
  12331. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12332. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12333. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  12334. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12335. </para>
  12336. </remarks>
  12337. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12338. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12339. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  12340. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12341. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12342. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12343. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12344. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12345. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12346. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12347. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12348. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  12349. </member>
  12350. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:])">
  12351. <summary>
  12352. Builds a subset of two-dimensional mipmap levels.
  12353. </summary>
  12354. <param name="target">
  12355. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  12356. </param>
  12357. <param name="internalFormat">
  12358. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  12359. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12360. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  12361. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  12362. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  12363. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  12364. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  12365. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  12366. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  12367. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  12368. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  12369. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  12370. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  12371. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  12372. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  12373. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  12374. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  12375. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  12376. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  12377. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12378. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  12379. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  12380. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  12381. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  12382. </param>
  12383. <param name="width">
  12384. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  12385. </param>
  12386. <param name="height">
  12387. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  12388. </param>
  12389. <param name="format">
  12390. Specifies the format of the pixel data. Must be one of
  12391. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  12392. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  12393. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12394. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12395. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  12396. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  12397. </param>
  12398. <param name="type">
  12399. Specifies the data type for <i>data</i>. Must be one of
  12400. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  12401. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  12402. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  12403. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  12404. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12405. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12406. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12407. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12408. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12409. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12410. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12413. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12414. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12415. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  12416. </param>
  12417. <param name="level">
  12418. Specifies the mipmap level of the image data.
  12419. </param>
  12420. <param name="min">
  12421. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12422. </param>
  12423. <param name="max">
  12424. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12425. </param>
  12426. <param name="data">
  12427. Specifies a pointer to the image data in memory.
  12428. </param>
  12429. <returns>
  12430. A return value of zero indicates success, otherwise a GLU error code is
  12431. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12432. </returns>
  12433. <remarks>
  12434. <para>
  12435. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  12436. texture maps of decreasing resolutions called a mipmap. This is used for the
  12437. antialiasing of texture mapped primitives.
  12438. </para>
  12439. <para>
  12440. A return value of zero indicates success, otherwise a GLU error code is
  12441. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12442. </para>
  12443. <para>
  12444. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  12445. decimating <i>data</i> in half along both dimensions until size 1×1 is
  12446. reached. At each level, each texel in the halved mipmap level is an average
  12447. of the corresponding four texels in the larger mipmap level. (In the case of
  12448. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  12449. configuration. Here, two texels are averaged instead.)
  12450. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  12451. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  12452. level for the texture of the specified size, then a GLU error code is
  12453. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  12454. </para>
  12455. <para>
  12456. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  12457. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  12458. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  12459. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  12460. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  12461. since <i>max</i> is larger than the highest mipmap level which is, in this
  12462. case, 6.
  12463. </para>
  12464. <para>
  12465. The highest mipmap level can be derived from the formula
  12466. <c>log2(max(width,height)*(2^level))</c>.
  12467. </para>
  12468. <para>
  12469. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  12470. the acceptable values for <i>format</i> parameter. See the
  12471. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  12472. acceptable values for <i>type</i> parameter.
  12473. </para>
  12474. <para>
  12475. <b>NOTES</b>
  12476. </para>
  12477. <para>
  12478. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  12479. greater.
  12480. </para>
  12481. <para>
  12482. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  12483. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12484. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12485. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12486. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12487. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12488. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12489. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12490. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12491. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12492. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12493. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  12494. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  12495. version is 1.2 or greater.
  12496. </para>
  12497. <para>
  12498. <b>ERRORS</b>
  12499. </para>
  12500. <para>
  12501. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  12502. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  12503. highest mipmap level for <i>data</i>.
  12504. </para>
  12505. <para>
  12506. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  12507. is &lt; 1.
  12508. </para>
  12509. <para>
  12510. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  12511. <i>format</i>, or <i>type</i> is not legal.
  12512. </para>
  12513. <para>
  12514. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  12516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  12517. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12518. </para>
  12519. <para>
  12520. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  12522. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  12523. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12524. </para>
  12525. <para>
  12526. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12527. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  12528. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  12529. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12530. </para>
  12531. <para>
  12532. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12533. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  12534. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  12535. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12536. </para>
  12537. <para>
  12538. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12539. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  12540. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  12541. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12542. </para>
  12543. <para>
  12544. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12546. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  12547. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12548. </para>
  12549. </remarks>
  12550. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12551. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12552. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  12553. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12554. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12555. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12556. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12557. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12558. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12559. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12560. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12561. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  12562. </member>
  12563. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:,0:])">
  12564. <summary>
  12565. Builds a subset of two-dimensional mipmap levels.
  12566. </summary>
  12567. <param name="target">
  12568. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  12569. </param>
  12570. <param name="internalFormat">
  12571. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  12572. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12573. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  12574. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  12575. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  12576. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  12577. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  12578. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  12579. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  12580. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  12581. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  12582. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  12583. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  12584. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  12585. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  12586. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  12587. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  12588. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  12589. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  12590. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12591. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  12592. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  12593. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  12594. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  12595. </param>
  12596. <param name="width">
  12597. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  12598. </param>
  12599. <param name="height">
  12600. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  12601. </param>
  12602. <param name="format">
  12603. Specifies the format of the pixel data. Must be one of
  12604. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  12605. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  12606. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12607. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12608. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  12609. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  12610. </param>
  12611. <param name="type">
  12612. Specifies the data type for <i>data</i>. Must be one of
  12613. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  12614. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  12615. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  12616. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  12617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12619. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12620. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12621. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12622. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12625. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12626. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12627. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12628. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  12629. </param>
  12630. <param name="level">
  12631. Specifies the mipmap level of the image data.
  12632. </param>
  12633. <param name="min">
  12634. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12635. </param>
  12636. <param name="max">
  12637. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12638. </param>
  12639. <param name="data">
  12640. Specifies a pointer to the image data in memory.
  12641. </param>
  12642. <returns>
  12643. A return value of zero indicates success, otherwise a GLU error code is
  12644. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12645. </returns>
  12646. <remarks>
  12647. <para>
  12648. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  12649. texture maps of decreasing resolutions called a mipmap. This is used for the
  12650. antialiasing of texture mapped primitives.
  12651. </para>
  12652. <para>
  12653. A return value of zero indicates success, otherwise a GLU error code is
  12654. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12655. </para>
  12656. <para>
  12657. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  12658. decimating <i>data</i> in half along both dimensions until size 1×1 is
  12659. reached. At each level, each texel in the halved mipmap level is an average
  12660. of the corresponding four texels in the larger mipmap level. (In the case of
  12661. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  12662. configuration. Here, two texels are averaged instead.)
  12663. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  12664. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  12665. level for the texture of the specified size, then a GLU error code is
  12666. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  12667. </para>
  12668. <para>
  12669. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  12670. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  12671. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  12672. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  12673. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  12674. since <i>max</i> is larger than the highest mipmap level which is, in this
  12675. case, 6.
  12676. </para>
  12677. <para>
  12678. The highest mipmap level can be derived from the formula
  12679. <c>log2(max(width,height)*(2^level))</c>.
  12680. </para>
  12681. <para>
  12682. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  12683. the acceptable values for <i>format</i> parameter. See the
  12684. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  12685. acceptable values for <i>type</i> parameter.
  12686. </para>
  12687. <para>
  12688. <b>NOTES</b>
  12689. </para>
  12690. <para>
  12691. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  12692. greater.
  12693. </para>
  12694. <para>
  12695. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  12696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12697. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12698. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12699. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12700. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12701. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12702. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12703. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12704. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12705. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  12707. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  12708. version is 1.2 or greater.
  12709. </para>
  12710. <para>
  12711. <b>ERRORS</b>
  12712. </para>
  12713. <para>
  12714. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  12715. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  12716. highest mipmap level for <i>data</i>.
  12717. </para>
  12718. <para>
  12719. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  12720. is &lt; 1.
  12721. </para>
  12722. <para>
  12723. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  12724. <i>format</i>, or <i>type</i> is not legal.
  12725. </para>
  12726. <para>
  12727. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12728. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  12729. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  12730. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12731. </para>
  12732. <para>
  12733. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12734. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  12735. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  12736. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12737. </para>
  12738. <para>
  12739. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12740. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  12741. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  12742. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12743. </para>
  12744. <para>
  12745. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12746. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  12747. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  12748. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12749. </para>
  12750. <para>
  12751. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12752. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  12753. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  12754. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12755. </para>
  12756. <para>
  12757. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12758. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12759. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  12760. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12761. </para>
  12762. </remarks>
  12763. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12764. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12765. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  12766. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12767. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12768. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12769. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12770. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12771. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12772. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12773. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12774. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  12775. </member>
  12776. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[])">
  12777. <summary>
  12778. Builds a subset of two-dimensional mipmap levels.
  12779. </summary>
  12780. <param name="target">
  12781. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  12782. </param>
  12783. <param name="internalFormat">
  12784. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  12785. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12786. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  12787. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  12788. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  12789. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  12790. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  12791. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  12792. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  12793. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  12794. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  12795. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  12796. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  12797. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  12798. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  12799. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  12800. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  12801. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  12802. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  12803. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12804. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  12805. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  12806. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  12807. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  12808. </param>
  12809. <param name="width">
  12810. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  12811. </param>
  12812. <param name="height">
  12813. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  12814. </param>
  12815. <param name="format">
  12816. Specifies the format of the pixel data. Must be one of
  12817. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  12818. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  12819. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12820. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  12821. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  12822. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  12823. </param>
  12824. <param name="type">
  12825. Specifies the data type for <i>data</i>. Must be one of
  12826. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  12827. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  12828. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  12829. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  12830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12831. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12832. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12833. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12834. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12837. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12838. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12839. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12840. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  12842. </param>
  12843. <param name="level">
  12844. Specifies the mipmap level of the image data.
  12845. </param>
  12846. <param name="min">
  12847. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12848. </param>
  12849. <param name="max">
  12850. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  12851. </param>
  12852. <param name="data">
  12853. Specifies a pointer to the image data in memory.
  12854. </param>
  12855. <returns>
  12856. A return value of zero indicates success, otherwise a GLU error code is
  12857. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12858. </returns>
  12859. <remarks>
  12860. <para>
  12861. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  12862. texture maps of decreasing resolutions called a mipmap. This is used for the
  12863. antialiasing of texture mapped primitives.
  12864. </para>
  12865. <para>
  12866. A return value of zero indicates success, otherwise a GLU error code is
  12867. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  12868. </para>
  12869. <para>
  12870. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  12871. decimating <i>data</i> in half along both dimensions until size 1×1 is
  12872. reached. At each level, each texel in the halved mipmap level is an average
  12873. of the corresponding four texels in the larger mipmap level. (In the case of
  12874. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  12875. configuration. Here, two texels are averaged instead.)
  12876. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  12877. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  12878. level for the texture of the specified size, then a GLU error code is
  12879. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  12880. </para>
  12881. <para>
  12882. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  12883. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  12884. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  12885. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  12886. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  12887. since <i>max</i> is larger than the highest mipmap level which is, in this
  12888. case, 6.
  12889. </para>
  12890. <para>
  12891. The highest mipmap level can be derived from the formula
  12892. <c>log2(max(width,height)*(2^level))</c>.
  12893. </para>
  12894. <para>
  12895. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  12896. the acceptable values for <i>format</i> parameter. See the
  12897. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  12898. acceptable values for <i>type</i> parameter.
  12899. </para>
  12900. <para>
  12901. <b>NOTES</b>
  12902. </para>
  12903. <para>
  12904. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  12905. greater.
  12906. </para>
  12907. <para>
  12908. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  12909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  12910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  12911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  12912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  12913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  12914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  12915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  12916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  12917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  12918. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  12919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  12920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  12921. version is 1.2 or greater.
  12922. </para>
  12923. <para>
  12924. <b>ERRORS</b>
  12925. </para>
  12926. <para>
  12927. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  12928. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  12929. highest mipmap level for <i>data</i>.
  12930. </para>
  12931. <para>
  12932. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  12933. is &lt; 1.
  12934. </para>
  12935. <para>
  12936. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  12937. <i>format</i>, or <i>type</i> is not legal.
  12938. </para>
  12939. <para>
  12940. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12941. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  12942. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  12943. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12944. </para>
  12945. <para>
  12946. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12947. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  12948. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  12949. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  12950. </para>
  12951. <para>
  12952. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12953. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  12954. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  12955. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12956. </para>
  12957. <para>
  12958. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12959. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  12960. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  12961. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12962. </para>
  12963. <para>
  12964. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12965. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  12966. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  12967. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12968. </para>
  12969. <para>
  12970. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  12971. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  12972. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  12973. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  12974. </para>
  12975. </remarks>
  12976. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12977. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12978. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  12979. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12980. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12981. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  12982. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12983. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12984. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12985. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12986. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  12987. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  12988. </member>
  12989. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:])">
  12990. <summary>
  12991. Builds a subset of two-dimensional mipmap levels.
  12992. </summary>
  12993. <param name="target">
  12994. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  12995. </param>
  12996. <param name="internalFormat">
  12997. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  12998. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  12999. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  13000. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  13001. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  13002. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  13003. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  13004. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  13005. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  13006. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  13007. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  13008. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  13009. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  13010. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  13011. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  13012. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  13013. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  13014. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  13015. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  13016. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13017. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  13018. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  13019. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  13020. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  13021. </param>
  13022. <param name="width">
  13023. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  13024. </param>
  13025. <param name="height">
  13026. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  13027. </param>
  13028. <param name="format">
  13029. Specifies the format of the pixel data. Must be one of
  13030. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  13031. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  13032. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13033. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13034. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  13035. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  13036. </param>
  13037. <param name="type">
  13038. Specifies the data type for <i>data</i>. Must be one of
  13039. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  13040. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  13041. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  13042. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  13043. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13044. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13045. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13046. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13047. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13048. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13049. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13050. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13051. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13052. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13053. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13054. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  13055. </param>
  13056. <param name="level">
  13057. Specifies the mipmap level of the image data.
  13058. </param>
  13059. <param name="min">
  13060. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13061. </param>
  13062. <param name="max">
  13063. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13064. </param>
  13065. <param name="data">
  13066. Specifies a pointer to the image data in memory.
  13067. </param>
  13068. <returns>
  13069. A return value of zero indicates success, otherwise a GLU error code is
  13070. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13071. </returns>
  13072. <remarks>
  13073. <para>
  13074. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  13075. texture maps of decreasing resolutions called a mipmap. This is used for the
  13076. antialiasing of texture mapped primitives.
  13077. </para>
  13078. <para>
  13079. A return value of zero indicates success, otherwise a GLU error code is
  13080. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13081. </para>
  13082. <para>
  13083. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  13084. decimating <i>data</i> in half along both dimensions until size 1×1 is
  13085. reached. At each level, each texel in the halved mipmap level is an average
  13086. of the corresponding four texels in the larger mipmap level. (In the case of
  13087. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  13088. configuration. Here, two texels are averaged instead.)
  13089. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  13090. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  13091. level for the texture of the specified size, then a GLU error code is
  13092. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  13093. </para>
  13094. <para>
  13095. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  13096. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  13097. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  13098. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  13099. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  13100. since <i>max</i> is larger than the highest mipmap level which is, in this
  13101. case, 6.
  13102. </para>
  13103. <para>
  13104. The highest mipmap level can be derived from the formula
  13105. <c>log2(max(width,height)*(2^level))</c>.
  13106. </para>
  13107. <para>
  13108. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  13109. the acceptable values for <i>format</i> parameter. See the
  13110. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  13111. acceptable values for <i>type</i> parameter.
  13112. </para>
  13113. <para>
  13114. <b>NOTES</b>
  13115. </para>
  13116. <para>
  13117. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  13118. greater.
  13119. </para>
  13120. <para>
  13121. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  13122. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13123. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13124. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13125. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13127. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13128. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13129. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13130. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  13133. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  13134. version is 1.2 or greater.
  13135. </para>
  13136. <para>
  13137. <b>ERRORS</b>
  13138. </para>
  13139. <para>
  13140. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  13141. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  13142. highest mipmap level for <i>data</i>.
  13143. </para>
  13144. <para>
  13145. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  13146. is &lt; 1.
  13147. </para>
  13148. <para>
  13149. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  13150. <i>format</i>, or <i>type</i> is not legal.
  13151. </para>
  13152. <para>
  13153. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13154. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  13155. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  13156. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13157. </para>
  13158. <para>
  13159. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13160. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  13161. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  13162. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13163. </para>
  13164. <para>
  13165. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  13167. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  13168. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13169. </para>
  13170. <para>
  13171. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13172. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  13173. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  13174. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13175. </para>
  13176. <para>
  13177. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13178. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  13179. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  13180. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13181. </para>
  13182. <para>
  13183. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13184. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  13186. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13187. </para>
  13188. </remarks>
  13189. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13190. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13191. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  13192. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13193. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13194. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13195. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13196. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13197. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13198. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13199. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13200. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  13201. </member>
  13202. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:,0:])">
  13203. <summary>
  13204. Builds a subset of two-dimensional mipmap levels.
  13205. </summary>
  13206. <param name="target">
  13207. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  13208. </param>
  13209. <param name="internalFormat">
  13210. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  13211. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13212. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  13213. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  13214. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  13215. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  13216. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  13217. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  13218. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  13219. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  13220. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  13221. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  13222. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  13223. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  13224. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  13225. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  13226. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  13227. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  13228. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  13229. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13230. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  13231. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  13232. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  13233. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  13234. </param>
  13235. <param name="width">
  13236. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  13237. </param>
  13238. <param name="height">
  13239. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  13240. </param>
  13241. <param name="format">
  13242. Specifies the format of the pixel data. Must be one of
  13243. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  13244. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  13245. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13246. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13247. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  13248. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  13249. </param>
  13250. <param name="type">
  13251. Specifies the data type for <i>data</i>. Must be one of
  13252. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  13253. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  13254. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  13255. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  13256. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13257. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13258. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13259. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13260. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13262. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13263. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13264. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13265. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13266. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13267. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  13268. </param>
  13269. <param name="level">
  13270. Specifies the mipmap level of the image data.
  13271. </param>
  13272. <param name="min">
  13273. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13274. </param>
  13275. <param name="max">
  13276. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13277. </param>
  13278. <param name="data">
  13279. Specifies a pointer to the image data in memory.
  13280. </param>
  13281. <returns>
  13282. A return value of zero indicates success, otherwise a GLU error code is
  13283. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13284. </returns>
  13285. <remarks>
  13286. <para>
  13287. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  13288. texture maps of decreasing resolutions called a mipmap. This is used for the
  13289. antialiasing of texture mapped primitives.
  13290. </para>
  13291. <para>
  13292. A return value of zero indicates success, otherwise a GLU error code is
  13293. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13294. </para>
  13295. <para>
  13296. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  13297. decimating <i>data</i> in half along both dimensions until size 1×1 is
  13298. reached. At each level, each texel in the halved mipmap level is an average
  13299. of the corresponding four texels in the larger mipmap level. (In the case of
  13300. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  13301. configuration. Here, two texels are averaged instead.)
  13302. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  13303. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  13304. level for the texture of the specified size, then a GLU error code is
  13305. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  13306. </para>
  13307. <para>
  13308. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  13309. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  13310. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  13311. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  13312. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  13313. since <i>max</i> is larger than the highest mipmap level which is, in this
  13314. case, 6.
  13315. </para>
  13316. <para>
  13317. The highest mipmap level can be derived from the formula
  13318. <c>log2(max(width,height)*(2^level))</c>.
  13319. </para>
  13320. <para>
  13321. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  13322. the acceptable values for <i>format</i> parameter. See the
  13323. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  13324. acceptable values for <i>type</i> parameter.
  13325. </para>
  13326. <para>
  13327. <b>NOTES</b>
  13328. </para>
  13329. <para>
  13330. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  13331. greater.
  13332. </para>
  13333. <para>
  13334. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  13335. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13336. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13337. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13338. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13339. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13342. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13343. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  13346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  13347. version is 1.2 or greater.
  13348. </para>
  13349. <para>
  13350. <b>ERRORS</b>
  13351. </para>
  13352. <para>
  13353. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  13354. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  13355. highest mipmap level for <i>data</i>.
  13356. </para>
  13357. <para>
  13358. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  13359. is &lt; 1.
  13360. </para>
  13361. <para>
  13362. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  13363. <i>format</i>, or <i>type</i> is not legal.
  13364. </para>
  13365. <para>
  13366. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13367. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  13368. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  13369. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13370. </para>
  13371. <para>
  13372. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13373. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  13374. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  13375. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13376. </para>
  13377. <para>
  13378. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13379. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  13380. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  13381. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13382. </para>
  13383. <para>
  13384. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  13386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  13387. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13388. </para>
  13389. <para>
  13390. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  13392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  13393. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13394. </para>
  13395. <para>
  13396. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13397. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13398. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  13399. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13400. </para>
  13401. </remarks>
  13402. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13403. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13404. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  13405. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13406. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13407. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13408. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13409. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13410. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13411. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13412. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13413. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  13414. </member>
  13415. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[])">
  13416. <summary>
  13417. Builds a subset of two-dimensional mipmap levels.
  13418. </summary>
  13419. <param name="target">
  13420. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  13421. </param>
  13422. <param name="internalFormat">
  13423. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  13424. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13425. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  13426. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  13427. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  13428. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  13429. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  13430. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  13431. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  13432. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  13433. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  13434. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  13435. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  13436. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  13437. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  13438. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  13439. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  13440. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  13441. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  13442. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  13444. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  13445. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  13446. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  13447. </param>
  13448. <param name="width">
  13449. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  13450. </param>
  13451. <param name="height">
  13452. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  13453. </param>
  13454. <param name="format">
  13455. Specifies the format of the pixel data. Must be one of
  13456. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  13457. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  13458. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13459. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13460. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  13461. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  13462. </param>
  13463. <param name="type">
  13464. Specifies the data type for <i>data</i>. Must be one of
  13465. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  13466. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  13467. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  13468. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  13469. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13470. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13471. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13472. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13473. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13475. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13476. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13477. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13478. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13479. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13480. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  13481. </param>
  13482. <param name="level">
  13483. Specifies the mipmap level of the image data.
  13484. </param>
  13485. <param name="min">
  13486. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13487. </param>
  13488. <param name="max">
  13489. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13490. </param>
  13491. <param name="data">
  13492. Specifies a pointer to the image data in memory.
  13493. </param>
  13494. <returns>
  13495. A return value of zero indicates success, otherwise a GLU error code is
  13496. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13497. </returns>
  13498. <remarks>
  13499. <para>
  13500. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  13501. texture maps of decreasing resolutions called a mipmap. This is used for the
  13502. antialiasing of texture mapped primitives.
  13503. </para>
  13504. <para>
  13505. A return value of zero indicates success, otherwise a GLU error code is
  13506. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13507. </para>
  13508. <para>
  13509. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  13510. decimating <i>data</i> in half along both dimensions until size 1×1 is
  13511. reached. At each level, each texel in the halved mipmap level is an average
  13512. of the corresponding four texels in the larger mipmap level. (In the case of
  13513. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  13514. configuration. Here, two texels are averaged instead.)
  13515. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  13516. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  13517. level for the texture of the specified size, then a GLU error code is
  13518. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  13519. </para>
  13520. <para>
  13521. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  13522. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  13523. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  13524. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  13525. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  13526. since <i>max</i> is larger than the highest mipmap level which is, in this
  13527. case, 6.
  13528. </para>
  13529. <para>
  13530. The highest mipmap level can be derived from the formula
  13531. <c>log2(max(width,height)*(2^level))</c>.
  13532. </para>
  13533. <para>
  13534. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  13535. the acceptable values for <i>format</i> parameter. See the
  13536. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  13537. acceptable values for <i>type</i> parameter.
  13538. </para>
  13539. <para>
  13540. <b>NOTES</b>
  13541. </para>
  13542. <para>
  13543. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  13544. greater.
  13545. </para>
  13546. <para>
  13547. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  13548. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13549. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13550. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13551. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13552. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13553. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13554. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13555. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13557. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13558. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  13559. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  13560. version is 1.2 or greater.
  13561. </para>
  13562. <para>
  13563. <b>ERRORS</b>
  13564. </para>
  13565. <para>
  13566. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  13567. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  13568. highest mipmap level for <i>data</i>.
  13569. </para>
  13570. <para>
  13571. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  13572. is &lt; 1.
  13573. </para>
  13574. <para>
  13575. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  13576. <i>format</i>, or <i>type</i> is not legal.
  13577. </para>
  13578. <para>
  13579. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13580. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  13581. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  13582. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13583. </para>
  13584. <para>
  13585. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13586. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  13587. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  13588. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13589. </para>
  13590. <para>
  13591. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  13593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  13594. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13595. </para>
  13596. <para>
  13597. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13598. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  13599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  13600. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13601. </para>
  13602. <para>
  13603. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13604. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  13605. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  13606. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13607. </para>
  13608. <para>
  13609. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13610. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13611. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  13612. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13613. </para>
  13614. </remarks>
  13615. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13616. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13617. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  13618. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13619. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13620. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13621. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13622. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13623. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13624. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13625. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13626. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  13627. </member>
  13628. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:])">
  13629. <summary>
  13630. Builds a subset of two-dimensional mipmap levels.
  13631. </summary>
  13632. <param name="target">
  13633. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  13634. </param>
  13635. <param name="internalFormat">
  13636. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  13637. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13638. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  13639. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  13640. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  13641. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  13642. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  13643. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  13644. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  13645. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  13646. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  13647. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  13648. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  13649. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  13650. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  13651. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  13652. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  13653. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  13654. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  13655. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13656. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  13657. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  13658. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  13659. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  13660. </param>
  13661. <param name="width">
  13662. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  13663. </param>
  13664. <param name="height">
  13665. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  13666. </param>
  13667. <param name="format">
  13668. Specifies the format of the pixel data. Must be one of
  13669. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  13670. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  13671. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13672. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13673. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  13674. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  13675. </param>
  13676. <param name="type">
  13677. Specifies the data type for <i>data</i>. Must be one of
  13678. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  13679. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  13680. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  13681. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  13682. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13683. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13684. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13685. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13686. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13687. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13688. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13689. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13690. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13691. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13692. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13693. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  13694. </param>
  13695. <param name="level">
  13696. Specifies the mipmap level of the image data.
  13697. </param>
  13698. <param name="min">
  13699. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13700. </param>
  13701. <param name="max">
  13702. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13703. </param>
  13704. <param name="data">
  13705. Specifies a pointer to the image data in memory.
  13706. </param>
  13707. <returns>
  13708. A return value of zero indicates success, otherwise a GLU error code is
  13709. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13710. </returns>
  13711. <remarks>
  13712. <para>
  13713. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  13714. texture maps of decreasing resolutions called a mipmap. This is used for the
  13715. antialiasing of texture mapped primitives.
  13716. </para>
  13717. <para>
  13718. A return value of zero indicates success, otherwise a GLU error code is
  13719. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13720. </para>
  13721. <para>
  13722. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  13723. decimating <i>data</i> in half along both dimensions until size 1×1 is
  13724. reached. At each level, each texel in the halved mipmap level is an average
  13725. of the corresponding four texels in the larger mipmap level. (In the case of
  13726. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  13727. configuration. Here, two texels are averaged instead.)
  13728. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  13729. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  13730. level for the texture of the specified size, then a GLU error code is
  13731. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  13732. </para>
  13733. <para>
  13734. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  13735. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  13736. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  13737. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  13738. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  13739. since <i>max</i> is larger than the highest mipmap level which is, in this
  13740. case, 6.
  13741. </para>
  13742. <para>
  13743. The highest mipmap level can be derived from the formula
  13744. <c>log2(max(width,height)*(2^level))</c>.
  13745. </para>
  13746. <para>
  13747. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  13748. the acceptable values for <i>format</i> parameter. See the
  13749. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  13750. acceptable values for <i>type</i> parameter.
  13751. </para>
  13752. <para>
  13753. <b>NOTES</b>
  13754. </para>
  13755. <para>
  13756. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  13757. greater.
  13758. </para>
  13759. <para>
  13760. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  13761. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13762. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13763. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13764. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13765. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13766. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13767. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13768. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13769. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13770. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13771. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  13772. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  13773. version is 1.2 or greater.
  13774. </para>
  13775. <para>
  13776. <b>ERRORS</b>
  13777. </para>
  13778. <para>
  13779. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  13780. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  13781. highest mipmap level for <i>data</i>.
  13782. </para>
  13783. <para>
  13784. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  13785. is &lt; 1.
  13786. </para>
  13787. <para>
  13788. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  13789. <i>format</i>, or <i>type</i> is not legal.
  13790. </para>
  13791. <para>
  13792. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13793. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  13794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  13795. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13796. </para>
  13797. <para>
  13798. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13799. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  13800. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  13801. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  13802. </para>
  13803. <para>
  13804. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13805. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  13806. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  13807. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13808. </para>
  13809. <para>
  13810. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  13812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  13813. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13814. </para>
  13815. <para>
  13816. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  13818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  13819. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13820. </para>
  13821. <para>
  13822. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  13823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  13825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  13826. </para>
  13827. </remarks>
  13828. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13829. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13830. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  13831. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13832. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13833. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  13834. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13835. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13836. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13837. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13838. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  13839. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  13840. </member>
  13841. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:,0:])">
  13842. <summary>
  13843. Builds a subset of two-dimensional mipmap levels.
  13844. </summary>
  13845. <param name="target">
  13846. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  13847. </param>
  13848. <param name="internalFormat">
  13849. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  13850. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13851. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  13852. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  13853. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  13854. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  13855. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  13856. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  13857. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  13858. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  13859. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  13860. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  13861. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  13862. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  13863. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  13864. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  13865. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  13866. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  13867. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  13868. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13869. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  13870. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  13871. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  13872. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  13873. </param>
  13874. <param name="width">
  13875. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  13876. </param>
  13877. <param name="height">
  13878. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  13879. </param>
  13880. <param name="format">
  13881. Specifies the format of the pixel data. Must be one of
  13882. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  13883. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  13884. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  13885. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  13886. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  13887. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  13888. </param>
  13889. <param name="type">
  13890. Specifies the data type for <i>data</i>. Must be one of
  13891. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  13892. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  13893. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  13894. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  13895. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13896. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13897. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13898. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13899. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13900. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13902. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13903. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13904. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  13906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  13907. </param>
  13908. <param name="level">
  13909. Specifies the mipmap level of the image data.
  13910. </param>
  13911. <param name="min">
  13912. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13913. </param>
  13914. <param name="max">
  13915. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  13916. </param>
  13917. <param name="data">
  13918. Specifies a pointer to the image data in memory.
  13919. </param>
  13920. <returns>
  13921. A return value of zero indicates success, otherwise a GLU error code is
  13922. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13923. </returns>
  13924. <remarks>
  13925. <para>
  13926. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  13927. texture maps of decreasing resolutions called a mipmap. This is used for the
  13928. antialiasing of texture mapped primitives.
  13929. </para>
  13930. <para>
  13931. A return value of zero indicates success, otherwise a GLU error code is
  13932. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  13933. </para>
  13934. <para>
  13935. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  13936. decimating <i>data</i> in half along both dimensions until size 1×1 is
  13937. reached. At each level, each texel in the halved mipmap level is an average
  13938. of the corresponding four texels in the larger mipmap level. (In the case of
  13939. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  13940. configuration. Here, two texels are averaged instead.)
  13941. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  13942. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  13943. level for the texture of the specified size, then a GLU error code is
  13944. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  13945. </para>
  13946. <para>
  13947. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  13948. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  13949. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  13950. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  13951. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  13952. since <i>max</i> is larger than the highest mipmap level which is, in this
  13953. case, 6.
  13954. </para>
  13955. <para>
  13956. The highest mipmap level can be derived from the formula
  13957. <c>log2(max(width,height)*(2^level))</c>.
  13958. </para>
  13959. <para>
  13960. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  13961. the acceptable values for <i>format</i> parameter. See the
  13962. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  13963. acceptable values for <i>type</i> parameter.
  13964. </para>
  13965. <para>
  13966. <b>NOTES</b>
  13967. </para>
  13968. <para>
  13969. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  13970. greater.
  13971. </para>
  13972. <para>
  13973. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  13974. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  13975. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  13976. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  13977. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  13978. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  13979. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  13980. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  13981. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  13982. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  13983. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  13984. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  13985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  13986. version is 1.2 or greater.
  13987. </para>
  13988. <para>
  13989. <b>ERRORS</b>
  13990. </para>
  13991. <para>
  13992. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  13993. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  13994. highest mipmap level for <i>data</i>.
  13995. </para>
  13996. <para>
  13997. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  13998. is &lt; 1.
  13999. </para>
  14000. <para>
  14001. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  14002. <i>format</i>, or <i>type</i> is not legal.
  14003. </para>
  14004. <para>
  14005. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14006. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  14007. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  14008. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14009. </para>
  14010. <para>
  14011. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  14013. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  14014. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14015. </para>
  14016. <para>
  14017. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14018. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  14019. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  14020. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14021. </para>
  14022. <para>
  14023. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  14025. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  14026. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14027. </para>
  14028. <para>
  14029. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  14031. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  14032. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14033. </para>
  14034. <para>
  14035. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14037. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  14038. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14039. </para>
  14040. </remarks>
  14041. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14042. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14043. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  14044. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14045. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14046. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14047. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14048. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14049. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14050. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14051. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14052. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  14053. </member>
  14054. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[])">
  14055. <summary>
  14056. Builds a subset of two-dimensional mipmap levels.
  14057. </summary>
  14058. <param name="target">
  14059. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  14060. </param>
  14061. <param name="internalFormat">
  14062. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  14063. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14064. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  14065. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  14066. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  14067. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  14068. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  14069. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  14070. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  14071. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  14072. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  14073. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  14074. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  14075. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  14076. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  14077. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  14078. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  14079. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  14080. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  14081. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14082. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  14083. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  14084. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  14085. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  14086. </param>
  14087. <param name="width">
  14088. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  14089. </param>
  14090. <param name="height">
  14091. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  14092. </param>
  14093. <param name="format">
  14094. Specifies the format of the pixel data. Must be one of
  14095. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  14096. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  14097. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14098. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14099. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  14100. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  14101. </param>
  14102. <param name="type">
  14103. Specifies the data type for <i>data</i>. Must be one of
  14104. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  14105. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  14106. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  14107. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  14108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14109. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14117. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14118. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  14120. </param>
  14121. <param name="level">
  14122. Specifies the mipmap level of the image data.
  14123. </param>
  14124. <param name="min">
  14125. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14126. </param>
  14127. <param name="max">
  14128. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14129. </param>
  14130. <param name="data">
  14131. Specifies a pointer to the image data in memory.
  14132. </param>
  14133. <returns>
  14134. A return value of zero indicates success, otherwise a GLU error code is
  14135. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14136. </returns>
  14137. <remarks>
  14138. <para>
  14139. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  14140. texture maps of decreasing resolutions called a mipmap. This is used for the
  14141. antialiasing of texture mapped primitives.
  14142. </para>
  14143. <para>
  14144. A return value of zero indicates success, otherwise a GLU error code is
  14145. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14146. </para>
  14147. <para>
  14148. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  14149. decimating <i>data</i> in half along both dimensions until size 1×1 is
  14150. reached. At each level, each texel in the halved mipmap level is an average
  14151. of the corresponding four texels in the larger mipmap level. (In the case of
  14152. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  14153. configuration. Here, two texels are averaged instead.)
  14154. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  14155. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  14156. level for the texture of the specified size, then a GLU error code is
  14157. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  14158. </para>
  14159. <para>
  14160. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  14161. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  14162. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  14163. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  14164. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  14165. since <i>max</i> is larger than the highest mipmap level which is, in this
  14166. case, 6.
  14167. </para>
  14168. <para>
  14169. The highest mipmap level can be derived from the formula
  14170. <c>log2(max(width,height)*(2^level))</c>.
  14171. </para>
  14172. <para>
  14173. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  14174. the acceptable values for <i>format</i> parameter. See the
  14175. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  14176. acceptable values for <i>type</i> parameter.
  14177. </para>
  14178. <para>
  14179. <b>NOTES</b>
  14180. </para>
  14181. <para>
  14182. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  14183. greater.
  14184. </para>
  14185. <para>
  14186. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  14187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14188. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14189. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14194. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14197. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  14198. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  14199. version is 1.2 or greater.
  14200. </para>
  14201. <para>
  14202. <b>ERRORS</b>
  14203. </para>
  14204. <para>
  14205. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  14206. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  14207. highest mipmap level for <i>data</i>.
  14208. </para>
  14209. <para>
  14210. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  14211. is &lt; 1.
  14212. </para>
  14213. <para>
  14214. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  14215. <i>format</i>, or <i>type</i> is not legal.
  14216. </para>
  14217. <para>
  14218. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14219. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  14220. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  14221. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14222. </para>
  14223. <para>
  14224. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14225. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  14226. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  14227. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14228. </para>
  14229. <para>
  14230. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14231. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  14232. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  14233. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14234. </para>
  14235. <para>
  14236. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14237. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  14238. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  14239. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14240. </para>
  14241. <para>
  14242. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14243. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  14244. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  14245. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14246. </para>
  14247. <para>
  14248. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14249. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14250. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  14251. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14252. </para>
  14253. </remarks>
  14254. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14255. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14256. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  14257. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14258. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14259. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14260. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14261. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14262. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14263. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14264. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14265. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  14266. </member>
  14267. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:])">
  14268. <summary>
  14269. Builds a subset of two-dimensional mipmap levels.
  14270. </summary>
  14271. <param name="target">
  14272. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  14273. </param>
  14274. <param name="internalFormat">
  14275. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  14276. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14277. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  14278. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  14279. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  14280. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  14281. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  14282. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  14283. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  14284. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  14285. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  14286. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  14287. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  14288. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  14289. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  14290. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  14291. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  14292. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  14293. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  14294. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14295. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  14296. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  14297. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  14298. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  14299. </param>
  14300. <param name="width">
  14301. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  14302. </param>
  14303. <param name="height">
  14304. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  14305. </param>
  14306. <param name="format">
  14307. Specifies the format of the pixel data. Must be one of
  14308. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  14309. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  14310. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14311. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14312. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  14313. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  14314. </param>
  14315. <param name="type">
  14316. Specifies the data type for <i>data</i>. Must be one of
  14317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  14318. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  14319. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  14320. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  14321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14322. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14323. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14324. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14325. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14326. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14327. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14328. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14329. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14330. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14331. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14332. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  14333. </param>
  14334. <param name="level">
  14335. Specifies the mipmap level of the image data.
  14336. </param>
  14337. <param name="min">
  14338. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14339. </param>
  14340. <param name="max">
  14341. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14342. </param>
  14343. <param name="data">
  14344. Specifies a pointer to the image data in memory.
  14345. </param>
  14346. <returns>
  14347. A return value of zero indicates success, otherwise a GLU error code is
  14348. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14349. </returns>
  14350. <remarks>
  14351. <para>
  14352. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  14353. texture maps of decreasing resolutions called a mipmap. This is used for the
  14354. antialiasing of texture mapped primitives.
  14355. </para>
  14356. <para>
  14357. A return value of zero indicates success, otherwise a GLU error code is
  14358. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14359. </para>
  14360. <para>
  14361. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  14362. decimating <i>data</i> in half along both dimensions until size 1×1 is
  14363. reached. At each level, each texel in the halved mipmap level is an average
  14364. of the corresponding four texels in the larger mipmap level. (In the case of
  14365. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  14366. configuration. Here, two texels are averaged instead.)
  14367. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  14368. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  14369. level for the texture of the specified size, then a GLU error code is
  14370. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  14371. </para>
  14372. <para>
  14373. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  14374. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  14375. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  14376. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  14377. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  14378. since <i>max</i> is larger than the highest mipmap level which is, in this
  14379. case, 6.
  14380. </para>
  14381. <para>
  14382. The highest mipmap level can be derived from the formula
  14383. <c>log2(max(width,height)*(2^level))</c>.
  14384. </para>
  14385. <para>
  14386. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  14387. the acceptable values for <i>format</i> parameter. See the
  14388. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  14389. acceptable values for <i>type</i> parameter.
  14390. </para>
  14391. <para>
  14392. <b>NOTES</b>
  14393. </para>
  14394. <para>
  14395. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  14396. greater.
  14397. </para>
  14398. <para>
  14399. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  14400. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14401. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14402. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14403. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14404. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14405. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14406. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14407. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14408. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14409. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14410. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  14411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  14412. version is 1.2 or greater.
  14413. </para>
  14414. <para>
  14415. <b>ERRORS</b>
  14416. </para>
  14417. <para>
  14418. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  14419. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  14420. highest mipmap level for <i>data</i>.
  14421. </para>
  14422. <para>
  14423. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  14424. is &lt; 1.
  14425. </para>
  14426. <para>
  14427. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  14428. <i>format</i>, or <i>type</i> is not legal.
  14429. </para>
  14430. <para>
  14431. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14432. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  14433. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  14434. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14435. </para>
  14436. <para>
  14437. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14438. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  14439. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  14440. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14441. </para>
  14442. <para>
  14443. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14444. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  14445. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  14446. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14447. </para>
  14448. <para>
  14449. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14450. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  14451. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  14452. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14453. </para>
  14454. <para>
  14455. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14456. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  14457. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  14458. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14459. </para>
  14460. <para>
  14461. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14462. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14463. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  14464. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14465. </para>
  14466. </remarks>
  14467. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14468. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14469. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  14470. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14471. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14472. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14473. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14474. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14475. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14476. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14477. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14478. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  14479. </member>
  14480. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:,0:])">
  14481. <summary>
  14482. Builds a subset of two-dimensional mipmap levels.
  14483. </summary>
  14484. <param name="target">
  14485. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  14486. </param>
  14487. <param name="internalFormat">
  14488. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  14489. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14490. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  14491. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  14492. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  14493. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  14494. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  14495. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  14496. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  14497. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  14498. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  14499. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  14500. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  14501. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  14502. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  14503. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  14504. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  14505. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  14506. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  14507. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14508. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  14509. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  14510. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  14511. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  14512. </param>
  14513. <param name="width">
  14514. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  14515. </param>
  14516. <param name="height">
  14517. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  14518. </param>
  14519. <param name="format">
  14520. Specifies the format of the pixel data. Must be one of
  14521. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  14522. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  14523. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14524. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14525. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  14526. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  14527. </param>
  14528. <param name="type">
  14529. Specifies the data type for <i>data</i>. Must be one of
  14530. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  14531. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  14532. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  14533. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  14534. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14535. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14536. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14537. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14538. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14539. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14540. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14541. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14542. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14543. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14544. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  14546. </param>
  14547. <param name="level">
  14548. Specifies the mipmap level of the image data.
  14549. </param>
  14550. <param name="min">
  14551. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14552. </param>
  14553. <param name="max">
  14554. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14555. </param>
  14556. <param name="data">
  14557. Specifies a pointer to the image data in memory.
  14558. </param>
  14559. <returns>
  14560. A return value of zero indicates success, otherwise a GLU error code is
  14561. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14562. </returns>
  14563. <remarks>
  14564. <para>
  14565. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  14566. texture maps of decreasing resolutions called a mipmap. This is used for the
  14567. antialiasing of texture mapped primitives.
  14568. </para>
  14569. <para>
  14570. A return value of zero indicates success, otherwise a GLU error code is
  14571. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14572. </para>
  14573. <para>
  14574. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  14575. decimating <i>data</i> in half along both dimensions until size 1×1 is
  14576. reached. At each level, each texel in the halved mipmap level is an average
  14577. of the corresponding four texels in the larger mipmap level. (In the case of
  14578. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  14579. configuration. Here, two texels are averaged instead.)
  14580. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  14581. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  14582. level for the texture of the specified size, then a GLU error code is
  14583. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  14584. </para>
  14585. <para>
  14586. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  14587. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  14588. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  14589. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  14590. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  14591. since <i>max</i> is larger than the highest mipmap level which is, in this
  14592. case, 6.
  14593. </para>
  14594. <para>
  14595. The highest mipmap level can be derived from the formula
  14596. <c>log2(max(width,height)*(2^level))</c>.
  14597. </para>
  14598. <para>
  14599. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  14600. the acceptable values for <i>format</i> parameter. See the
  14601. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  14602. acceptable values for <i>type</i> parameter.
  14603. </para>
  14604. <para>
  14605. <b>NOTES</b>
  14606. </para>
  14607. <para>
  14608. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  14609. greater.
  14610. </para>
  14611. <para>
  14612. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  14613. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14614. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14615. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14616. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14619. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14620. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14621. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14622. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14623. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  14624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  14625. version is 1.2 or greater.
  14626. </para>
  14627. <para>
  14628. <b>ERRORS</b>
  14629. </para>
  14630. <para>
  14631. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  14632. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  14633. highest mipmap level for <i>data</i>.
  14634. </para>
  14635. <para>
  14636. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  14637. is &lt; 1.
  14638. </para>
  14639. <para>
  14640. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  14641. <i>format</i>, or <i>type</i> is not legal.
  14642. </para>
  14643. <para>
  14644. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14645. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  14646. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  14647. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14648. </para>
  14649. <para>
  14650. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14651. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  14652. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  14653. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14654. </para>
  14655. <para>
  14656. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14657. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  14658. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  14659. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14660. </para>
  14661. <para>
  14662. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14663. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  14664. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  14665. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14666. </para>
  14667. <para>
  14668. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14669. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  14670. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  14671. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14672. </para>
  14673. <para>
  14674. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14675. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14676. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  14677. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14678. </para>
  14679. </remarks>
  14680. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14681. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14682. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  14683. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14684. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14685. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14686. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14687. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14688. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14689. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14690. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14691. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  14692. </member>
  14693. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[])">
  14694. <summary>
  14695. Builds a subset of two-dimensional mipmap levels.
  14696. </summary>
  14697. <param name="target">
  14698. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  14699. </param>
  14700. <param name="internalFormat">
  14701. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  14702. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14703. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  14704. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  14705. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  14706. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  14707. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  14708. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  14709. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  14710. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  14711. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  14712. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  14713. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  14714. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  14715. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  14716. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  14717. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  14718. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  14719. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  14720. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14721. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  14722. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  14723. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  14724. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  14725. </param>
  14726. <param name="width">
  14727. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  14728. </param>
  14729. <param name="height">
  14730. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  14731. </param>
  14732. <param name="format">
  14733. Specifies the format of the pixel data. Must be one of
  14734. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  14735. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  14736. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14737. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14738. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  14739. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  14740. </param>
  14741. <param name="type">
  14742. Specifies the data type for <i>data</i>. Must be one of
  14743. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  14744. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  14745. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  14746. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  14747. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14748. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14749. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14750. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14751. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14752. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14753. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14754. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14755. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14756. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14757. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14758. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  14759. </param>
  14760. <param name="level">
  14761. Specifies the mipmap level of the image data.
  14762. </param>
  14763. <param name="min">
  14764. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14765. </param>
  14766. <param name="max">
  14767. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14768. </param>
  14769. <param name="data">
  14770. Specifies a pointer to the image data in memory.
  14771. </param>
  14772. <returns>
  14773. A return value of zero indicates success, otherwise a GLU error code is
  14774. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14775. </returns>
  14776. <remarks>
  14777. <para>
  14778. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  14779. texture maps of decreasing resolutions called a mipmap. This is used for the
  14780. antialiasing of texture mapped primitives.
  14781. </para>
  14782. <para>
  14783. A return value of zero indicates success, otherwise a GLU error code is
  14784. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14785. </para>
  14786. <para>
  14787. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  14788. decimating <i>data</i> in half along both dimensions until size 1×1 is
  14789. reached. At each level, each texel in the halved mipmap level is an average
  14790. of the corresponding four texels in the larger mipmap level. (In the case of
  14791. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  14792. configuration. Here, two texels are averaged instead.)
  14793. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  14794. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  14795. level for the texture of the specified size, then a GLU error code is
  14796. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  14797. </para>
  14798. <para>
  14799. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  14800. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  14801. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  14802. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  14803. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  14804. since <i>max</i> is larger than the highest mipmap level which is, in this
  14805. case, 6.
  14806. </para>
  14807. <para>
  14808. The highest mipmap level can be derived from the formula
  14809. <c>log2(max(width,height)*(2^level))</c>.
  14810. </para>
  14811. <para>
  14812. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  14813. the acceptable values for <i>format</i> parameter. See the
  14814. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  14815. acceptable values for <i>type</i> parameter.
  14816. </para>
  14817. <para>
  14818. <b>NOTES</b>
  14819. </para>
  14820. <para>
  14821. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  14822. greater.
  14823. </para>
  14824. <para>
  14825. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  14826. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14827. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14828. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14831. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14832. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14833. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14834. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  14837. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  14838. version is 1.2 or greater.
  14839. </para>
  14840. <para>
  14841. <b>ERRORS</b>
  14842. </para>
  14843. <para>
  14844. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  14845. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  14846. highest mipmap level for <i>data</i>.
  14847. </para>
  14848. <para>
  14849. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  14850. is &lt; 1.
  14851. </para>
  14852. <para>
  14853. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  14854. <i>format</i>, or <i>type</i> is not legal.
  14855. </para>
  14856. <para>
  14857. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14858. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  14859. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  14860. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14861. </para>
  14862. <para>
  14863. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14864. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  14865. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  14866. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  14867. </para>
  14868. <para>
  14869. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14870. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  14871. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  14872. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14873. </para>
  14874. <para>
  14875. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14876. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  14877. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  14878. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14879. </para>
  14880. <para>
  14881. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14882. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  14883. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  14884. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14885. </para>
  14886. <para>
  14887. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  14888. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14889. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  14890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  14891. </para>
  14892. </remarks>
  14893. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14894. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14895. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  14896. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14897. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14898. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  14899. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14900. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14901. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14902. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14903. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  14904. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  14905. </member>
  14906. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:])">
  14907. <summary>
  14908. Builds a subset of two-dimensional mipmap levels.
  14909. </summary>
  14910. <param name="target">
  14911. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  14912. </param>
  14913. <param name="internalFormat">
  14914. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  14915. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14916. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  14917. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  14918. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  14919. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  14920. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  14921. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  14922. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  14923. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  14924. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  14925. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  14926. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  14927. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  14928. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  14929. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  14930. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  14931. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  14932. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  14933. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14934. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  14935. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  14936. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  14937. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  14938. </param>
  14939. <param name="width">
  14940. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  14941. </param>
  14942. <param name="height">
  14943. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  14944. </param>
  14945. <param name="format">
  14946. Specifies the format of the pixel data. Must be one of
  14947. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  14948. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  14949. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  14950. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  14951. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  14952. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  14953. </param>
  14954. <param name="type">
  14955. Specifies the data type for <i>data</i>. Must be one of
  14956. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  14957. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  14958. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  14959. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  14960. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  14961. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  14962. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  14963. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  14964. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  14965. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  14966. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  14967. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  14968. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  14969. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  14970. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  14971. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  14972. </param>
  14973. <param name="level">
  14974. Specifies the mipmap level of the image data.
  14975. </param>
  14976. <param name="min">
  14977. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14978. </param>
  14979. <param name="max">
  14980. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  14981. </param>
  14982. <param name="data">
  14983. Specifies a pointer to the image data in memory.
  14984. </param>
  14985. <returns>
  14986. A return value of zero indicates success, otherwise a GLU error code is
  14987. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14988. </returns>
  14989. <remarks>
  14990. <para>
  14991. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  14992. texture maps of decreasing resolutions called a mipmap. This is used for the
  14993. antialiasing of texture mapped primitives.
  14994. </para>
  14995. <para>
  14996. A return value of zero indicates success, otherwise a GLU error code is
  14997. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  14998. </para>
  14999. <para>
  15000. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  15001. decimating <i>data</i> in half along both dimensions until size 1×1 is
  15002. reached. At each level, each texel in the halved mipmap level is an average
  15003. of the corresponding four texels in the larger mipmap level. (In the case of
  15004. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  15005. configuration. Here, two texels are averaged instead.)
  15006. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  15007. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  15008. level for the texture of the specified size, then a GLU error code is
  15009. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  15010. </para>
  15011. <para>
  15012. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  15013. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  15014. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  15015. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  15016. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  15017. since <i>max</i> is larger than the highest mipmap level which is, in this
  15018. case, 6.
  15019. </para>
  15020. <para>
  15021. The highest mipmap level can be derived from the formula
  15022. <c>log2(max(width,height)*(2^level))</c>.
  15023. </para>
  15024. <para>
  15025. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  15026. the acceptable values for <i>format</i> parameter. See the
  15027. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  15028. acceptable values for <i>type</i> parameter.
  15029. </para>
  15030. <para>
  15031. <b>NOTES</b>
  15032. </para>
  15033. <para>
  15034. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  15035. greater.
  15036. </para>
  15037. <para>
  15038. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  15039. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15040. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15043. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15044. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15045. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15046. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15047. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15048. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15049. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  15050. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  15051. version is 1.2 or greater.
  15052. </para>
  15053. <para>
  15054. <b>ERRORS</b>
  15055. </para>
  15056. <para>
  15057. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  15058. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  15059. highest mipmap level for <i>data</i>.
  15060. </para>
  15061. <para>
  15062. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  15063. is &lt; 1.
  15064. </para>
  15065. <para>
  15066. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  15067. <i>format</i>, or <i>type</i> is not legal.
  15068. </para>
  15069. <para>
  15070. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15071. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  15072. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  15073. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15074. </para>
  15075. <para>
  15076. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15077. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  15078. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  15079. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15080. </para>
  15081. <para>
  15082. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15083. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  15084. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  15085. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15086. </para>
  15087. <para>
  15088. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15089. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  15090. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  15091. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15092. </para>
  15093. <para>
  15094. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15095. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  15096. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  15097. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15098. </para>
  15099. <para>
  15100. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15101. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15102. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  15103. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15104. </para>
  15105. </remarks>
  15106. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15107. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15108. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  15109. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15110. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15111. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15112. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15113. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15114. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15115. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15116. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15117. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  15118. </member>
  15119. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:,0:])">
  15120. <summary>
  15121. Builds a subset of two-dimensional mipmap levels.
  15122. </summary>
  15123. <param name="target">
  15124. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  15125. </param>
  15126. <param name="internalFormat">
  15127. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  15128. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15129. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  15130. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  15131. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  15132. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  15133. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  15134. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  15135. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  15136. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  15137. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  15138. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  15139. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  15140. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  15141. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  15142. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  15143. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  15144. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  15145. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  15146. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15147. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  15148. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  15149. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  15150. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  15151. </param>
  15152. <param name="width">
  15153. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  15154. </param>
  15155. <param name="height">
  15156. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  15157. </param>
  15158. <param name="format">
  15159. Specifies the format of the pixel data. Must be one of
  15160. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  15161. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  15162. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15163. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15164. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  15165. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  15166. </param>
  15167. <param name="type">
  15168. Specifies the data type for <i>data</i>. Must be one of
  15169. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  15170. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  15171. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  15172. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  15173. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15174. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15175. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15176. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15177. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15178. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15179. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15180. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15181. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15182. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15183. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15184. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  15185. </param>
  15186. <param name="level">
  15187. Specifies the mipmap level of the image data.
  15188. </param>
  15189. <param name="min">
  15190. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  15191. </param>
  15192. <param name="max">
  15193. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  15194. </param>
  15195. <param name="data">
  15196. Specifies a pointer to the image data in memory.
  15197. </param>
  15198. <returns>
  15199. A return value of zero indicates success, otherwise a GLU error code is
  15200. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15201. </returns>
  15202. <remarks>
  15203. <para>
  15204. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  15205. texture maps of decreasing resolutions called a mipmap. This is used for the
  15206. antialiasing of texture mapped primitives.
  15207. </para>
  15208. <para>
  15209. A return value of zero indicates success, otherwise a GLU error code is
  15210. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15211. </para>
  15212. <para>
  15213. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  15214. decimating <i>data</i> in half along both dimensions until size 1×1 is
  15215. reached. At each level, each texel in the halved mipmap level is an average
  15216. of the corresponding four texels in the larger mipmap level. (In the case of
  15217. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  15218. configuration. Here, two texels are averaged instead.)
  15219. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  15220. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  15221. level for the texture of the specified size, then a GLU error code is
  15222. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  15223. </para>
  15224. <para>
  15225. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  15226. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  15227. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  15228. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  15229. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  15230. since <i>max</i> is larger than the highest mipmap level which is, in this
  15231. case, 6.
  15232. </para>
  15233. <para>
  15234. The highest mipmap level can be derived from the formula
  15235. <c>log2(max(width,height)*(2^level))</c>.
  15236. </para>
  15237. <para>
  15238. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  15239. the acceptable values for <i>format</i> parameter. See the
  15240. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  15241. acceptable values for <i>type</i> parameter.
  15242. </para>
  15243. <para>
  15244. <b>NOTES</b>
  15245. </para>
  15246. <para>
  15247. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  15248. greater.
  15249. </para>
  15250. <para>
  15251. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  15252. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15253. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15254. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15255. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15256. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15257. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15258. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15259. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15260. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15262. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  15263. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  15264. version is 1.2 or greater.
  15265. </para>
  15266. <para>
  15267. <b>ERRORS</b>
  15268. </para>
  15269. <para>
  15270. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  15271. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  15272. highest mipmap level for <i>data</i>.
  15273. </para>
  15274. <para>
  15275. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  15276. is &lt; 1.
  15277. </para>
  15278. <para>
  15279. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  15280. <i>format</i>, or <i>type</i> is not legal.
  15281. </para>
  15282. <para>
  15283. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15284. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  15285. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  15286. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15287. </para>
  15288. <para>
  15289. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15290. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  15291. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  15292. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15293. </para>
  15294. <para>
  15295. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15296. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  15297. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  15298. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15299. </para>
  15300. <para>
  15301. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15302. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  15303. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  15304. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15305. </para>
  15306. <para>
  15307. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15308. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  15309. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  15310. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15311. </para>
  15312. <para>
  15313. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  15316. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15317. </para>
  15318. </remarks>
  15319. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15320. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15321. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  15322. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15323. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15324. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15325. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15326. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15327. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15328. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15329. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15330. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  15331. </member>
  15332. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
  15333. <summary>
  15334. Builds a subset of two-dimensional mipmap levels.
  15335. </summary>
  15336. <param name="target">
  15337. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  15338. </param>
  15339. <param name="internalFormat">
  15340. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  15341. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15342. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  15343. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  15344. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  15345. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  15346. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  15347. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  15348. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  15349. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  15350. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  15351. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  15352. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  15353. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  15354. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  15355. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  15356. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  15357. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  15358. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  15359. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15360. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  15361. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  15362. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  15363. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  15364. </param>
  15365. <param name="width">
  15366. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  15367. </param>
  15368. <param name="height">
  15369. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  15370. </param>
  15371. <param name="format">
  15372. Specifies the format of the pixel data. Must be one of
  15373. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  15374. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  15375. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15376. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15377. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  15378. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  15379. </param>
  15380. <param name="type">
  15381. Specifies the data type for <i>data</i>. Must be one of
  15382. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  15383. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  15384. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  15385. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  15386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15391. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15394. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15397. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  15398. </param>
  15399. <param name="level">
  15400. Specifies the mipmap level of the image data.
  15401. </param>
  15402. <param name="min">
  15403. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  15404. </param>
  15405. <param name="max">
  15406. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  15407. </param>
  15408. <param name="data">
  15409. Specifies a pointer to the image data in memory.
  15410. </param>
  15411. <returns>
  15412. A return value of zero indicates success, otherwise a GLU error code is
  15413. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15414. </returns>
  15415. <remarks>
  15416. <para>
  15417. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  15418. texture maps of decreasing resolutions called a mipmap. This is used for the
  15419. antialiasing of texture mapped primitives.
  15420. </para>
  15421. <para>
  15422. A return value of zero indicates success, otherwise a GLU error code is
  15423. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15424. </para>
  15425. <para>
  15426. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  15427. decimating <i>data</i> in half along both dimensions until size 1×1 is
  15428. reached. At each level, each texel in the halved mipmap level is an average
  15429. of the corresponding four texels in the larger mipmap level. (In the case of
  15430. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  15431. configuration. Here, two texels are averaged instead.)
  15432. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  15433. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  15434. level for the texture of the specified size, then a GLU error code is
  15435. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  15436. </para>
  15437. <para>
  15438. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  15439. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  15440. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  15441. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  15442. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  15443. since <i>max</i> is larger than the highest mipmap level which is, in this
  15444. case, 6.
  15445. </para>
  15446. <para>
  15447. The highest mipmap level can be derived from the formula
  15448. <c>log2(max(width,height)*(2^level))</c>.
  15449. </para>
  15450. <para>
  15451. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  15452. the acceptable values for <i>format</i> parameter. See the
  15453. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  15454. acceptable values for <i>type</i> parameter.
  15455. </para>
  15456. <para>
  15457. <b>NOTES</b>
  15458. </para>
  15459. <para>
  15460. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  15461. greater.
  15462. </para>
  15463. <para>
  15464. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  15465. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15466. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15467. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15468. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15469. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15470. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15471. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15472. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15473. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15475. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  15476. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  15477. version is 1.2 or greater.
  15478. </para>
  15479. <para>
  15480. <b>ERRORS</b>
  15481. </para>
  15482. <para>
  15483. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  15484. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  15485. highest mipmap level for <i>data</i>.
  15486. </para>
  15487. <para>
  15488. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  15489. is &lt; 1.
  15490. </para>
  15491. <para>
  15492. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  15493. <i>format</i>, or <i>type</i> is not legal.
  15494. </para>
  15495. <para>
  15496. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15497. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  15498. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  15499. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15500. </para>
  15501. <para>
  15502. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15503. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  15504. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  15505. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15506. </para>
  15507. <para>
  15508. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15509. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  15510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  15511. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15512. </para>
  15513. <para>
  15514. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  15516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  15517. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15518. </para>
  15519. <para>
  15520. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  15522. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  15523. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15524. </para>
  15525. <para>
  15526. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15527. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15528. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  15529. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15530. </para>
  15531. </remarks>
  15532. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15533. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15534. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  15535. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15536. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15537. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15538. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15539. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15540. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15541. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15542. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15543. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  15544. </member>
  15545. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Void*)">
  15546. <summary>
  15547. Builds a subset of two-dimensional mipmap levels.
  15548. </summary>
  15549. <param name="target">
  15550. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  15551. </param>
  15552. <param name="internalFormat">
  15553. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  15554. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15555. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  15556. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  15557. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  15558. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  15559. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  15560. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  15561. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  15562. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  15563. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  15564. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  15565. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  15566. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  15567. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  15568. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  15569. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  15570. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  15571. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  15572. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15573. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  15574. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  15575. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  15576. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  15577. </param>
  15578. <param name="width">
  15579. Specifies the width, in pixels, of the texture image. Should be a power of 2.
  15580. </param>
  15581. <param name="height">
  15582. Specifies the height, in pixels, of the texture image. Should be a power of 2.
  15583. </param>
  15584. <param name="format">
  15585. Specifies the format of the pixel data. Must be one of
  15586. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  15587. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  15588. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15589. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15590. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  15591. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  15592. </param>
  15593. <param name="type">
  15594. Specifies the data type for <i>data</i>. Must be one of
  15595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  15596. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  15597. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  15598. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  15599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15600. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15601. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15603. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15604. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15605. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15606. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15607. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15608. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15609. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15610. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  15611. </param>
  15612. <param name="level">
  15613. Specifies the mipmap level of the image data.
  15614. </param>
  15615. <param name="min">
  15616. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  15617. </param>
  15618. <param name="max">
  15619. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  15620. </param>
  15621. <param name="data">
  15622. Specifies a pointer to the image data in memory.
  15623. </param>
  15624. <returns>
  15625. A return value of zero indicates success, otherwise a GLU error code is
  15626. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15627. </returns>
  15628. <remarks>
  15629. <para>
  15630. <b>gluBuild2DMipmapLevels</b> builds a subset of prefiltered two-dimensional
  15631. texture maps of decreasing resolutions called a mipmap. This is used for the
  15632. antialiasing of texture mapped primitives.
  15633. </para>
  15634. <para>
  15635. A return value of zero indicates success, otherwise a GLU error code is
  15636. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15637. </para>
  15638. <para>
  15639. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  15640. decimating <i>data</i> in half along both dimensions until size 1×1 is
  15641. reached. At each level, each texel in the halved mipmap level is an average
  15642. of the corresponding four texels in the larger mipmap level. (In the case of
  15643. rectangular images, the decimation will ultimately reach an N×1 or 1×N
  15644. configuration. Here, two texels are averaged instead.)
  15645. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load these mipmap levels from
  15646. <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
  15647. level for the texture of the specified size, then a GLU error code is
  15648. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  15649. </para>
  15650. <para>
  15651. For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
  15652. 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
  15653. correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
  15654. <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
  15655. However, if <i>max</i> is 7 then an error is returned and nothing is loaded
  15656. since <i>max</i> is larger than the highest mipmap level which is, in this
  15657. case, 6.
  15658. </para>
  15659. <para>
  15660. The highest mipmap level can be derived from the formula
  15661. <c>log2(max(width,height)*(2^level))</c>.
  15662. </para>
  15663. <para>
  15664. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  15665. the acceptable values for <i>format</i> parameter. See the
  15666. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  15667. acceptable values for <i>type</i> parameter.
  15668. </para>
  15669. <para>
  15670. <b>NOTES</b>
  15671. </para>
  15672. <para>
  15673. <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
  15674. greater.
  15675. </para>
  15676. <para>
  15677. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  15678. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15679. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15680. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15681. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15682. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15683. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15684. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15685. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15686. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15687. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15688. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  15689. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  15690. version is 1.2 or greater.
  15691. </para>
  15692. <para>
  15693. <b>ERRORS</b>
  15694. </para>
  15695. <para>
  15696. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  15697. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  15698. highest mipmap level for <i>data</i>.
  15699. </para>
  15700. <para>
  15701. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  15702. is &lt; 1.
  15703. </para>
  15704. <para>
  15705. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  15706. <i>format</i>, or <i>type</i> is not legal.
  15707. </para>
  15708. <para>
  15709. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  15711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  15712. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15713. </para>
  15714. <para>
  15715. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  15717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  15718. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15719. </para>
  15720. <para>
  15721. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15722. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  15723. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  15724. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15725. </para>
  15726. <para>
  15727. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15728. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  15729. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  15730. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15731. </para>
  15732. <para>
  15733. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15734. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  15735. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  15736. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15737. </para>
  15738. <para>
  15739. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15740. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15741. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  15742. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15743. </para>
  15744. </remarks>
  15745. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15746. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15747. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  15748. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15749. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15750. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15751. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15752. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15753. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15754. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15755. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15756. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  15757. </member>
  15758. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])">
  15759. <summary>
  15760. Builds a two-dimensional mipmap.
  15761. </summary>
  15762. <param name="target">
  15763. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  15764. </param>
  15765. <param name="internalFormat">
  15766. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  15767. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15768. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  15769. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  15770. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  15771. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  15772. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  15773. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  15774. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  15775. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  15776. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  15777. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  15778. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  15779. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  15780. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  15781. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  15782. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  15783. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  15784. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  15785. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15786. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  15787. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  15788. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  15789. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  15790. </param>
  15791. <param name="width">
  15792. Specifies, in pixels, the width of the texture image.
  15793. </param>
  15794. <param name="height">
  15795. Specifies, in pixels, the height of the texture image.
  15796. </param>
  15797. <param name="format">
  15798. Specifies the format of the pixel data. Must be one of
  15799. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  15800. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  15801. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15802. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15803. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  15804. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  15805. </param>
  15806. <param name="type">
  15807. Specifies the data type for <i>data</i>. Must be one of
  15808. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  15809. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  15810. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  15811. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  15812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15813. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15814. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15815. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15816. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15819. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15820. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15821. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15822. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  15823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  15824. </param>
  15825. <param name="data">
  15826. Specifies a pointer to the image data in memory.
  15827. </param>
  15828. <returns>
  15829. A return value of zero indicates success, otherwise a GLU error code is
  15830. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15831. </returns>
  15832. <remarks>
  15833. <para>
  15834. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  15835. texture maps of decreasing resolutions called a mipmap. This is used for
  15836. the antialiasing of texture-mapped primitives.
  15837. </para>
  15838. <para>
  15839. A return value of zero indicates success, otherwise a GLU error code is
  15840. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  15841. </para>
  15842. <para>
  15843. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  15844. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  15845. itself), is scaled up or down to the nearest power of 2. This copy will be
  15846. used for subsequent mipmapping operations described below. (If <i>width</i>
  15847. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  15848. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  15849. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  15850. 16 in depth, before mipmapping takes place.
  15851. </para>
  15852. <para>
  15853. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  15854. determine if the implementation can fit the requested texture. If not, both
  15855. dimensions are continually halved until it fits. (If the OpenGL version is
  15856. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  15857. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  15858. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  15859. </para>
  15860. <para>
  15861. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  15862. in half along both dimensions until size 1×1 is reached. At each level, each
  15863. texel in the halved mipmap level is an average of the corresponding four
  15864. texels in the larger mipmap level. (In the case of rectangular images, the
  15865. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  15866. texels are averaged instead.)
  15867. </para>
  15868. <para>
  15869. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  15870. Level 0 is a copy of <i>data</i>. The highest level is
  15871. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  15872. <i>height</i> is 16 and the implementation can store a texture of this size,
  15873. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  15874. 1×1. These correspond to levels 0 through 6, respectively.
  15875. </para>
  15876. <para>
  15877. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  15878. the acceptable values for <i>format</i> parameter. See the
  15879. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  15880. acceptable values for <i>type</i> parameter.
  15881. </para>
  15882. <para>
  15883. <b>NOTES</b>
  15884. </para>
  15885. <para>
  15886. There is no direct way of querying the maximum level. This can be derived
  15887. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  15888. the width and height actually used at level 0. (The width and height may not
  15889. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  15890. might have scaled them to fit the implementation.) Then the maximum level
  15891. can be derived from the formula <c>log2(max(width,height))</c>.
  15892. </para>
  15893. <para>
  15894. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  15895. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  15896. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  15897. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  15898. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  15899. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  15900. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  15901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  15902. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  15903. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  15904. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  15905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  15906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  15907. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  15908. </para>
  15909. <para>
  15910. <b>ERRORS</b>
  15911. </para>
  15912. <para>
  15913. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  15914. is &lt; 1.
  15915. </para>
  15916. <para>
  15917. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  15918. <i>format</i>, or <i>type</i> is not legal.
  15919. </para>
  15920. <para>
  15921. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15922. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  15923. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  15924. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15925. </para>
  15926. <para>
  15927. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15928. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  15929. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  15930. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  15931. </para>
  15932. <para>
  15933. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15934. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  15935. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  15936. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15937. </para>
  15938. <para>
  15939. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15940. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  15941. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  15942. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15943. </para>
  15944. <para>
  15945. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15946. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  15947. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  15948. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15949. </para>
  15950. <para>
  15951. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  15952. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  15953. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  15954. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  15955. </para>
  15956. </remarks>
  15957. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15958. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15959. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  15960. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15961. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15962. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  15963. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15964. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15965. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15966. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15967. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  15968. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  15969. </member>
  15970. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:])">
  15971. <summary>
  15972. Builds a two-dimensional mipmap.
  15973. </summary>
  15974. <param name="target">
  15975. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  15976. </param>
  15977. <param name="internalFormat">
  15978. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  15979. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  15980. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  15981. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  15982. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  15983. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  15984. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  15985. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  15986. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  15987. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  15988. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  15989. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  15990. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  15991. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  15992. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  15993. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  15994. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  15995. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  15996. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  15997. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  15998. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  15999. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  16000. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  16001. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  16002. </param>
  16003. <param name="width">
  16004. Specifies, in pixels, the width of the texture image.
  16005. </param>
  16006. <param name="height">
  16007. Specifies, in pixels, the height of the texture image.
  16008. </param>
  16009. <param name="format">
  16010. Specifies the format of the pixel data. Must be one of
  16011. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  16012. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  16013. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16014. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16015. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  16016. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  16017. </param>
  16018. <param name="type">
  16019. Specifies the data type for <i>data</i>. Must be one of
  16020. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  16021. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  16022. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  16023. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  16024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16025. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16026. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16027. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16028. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16031. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16032. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16033. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16034. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  16035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  16036. </param>
  16037. <param name="data">
  16038. Specifies a pointer to the image data in memory.
  16039. </param>
  16040. <returns>
  16041. A return value of zero indicates success, otherwise a GLU error code is
  16042. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16043. </returns>
  16044. <remarks>
  16045. <para>
  16046. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  16047. texture maps of decreasing resolutions called a mipmap. This is used for
  16048. the antialiasing of texture-mapped primitives.
  16049. </para>
  16050. <para>
  16051. A return value of zero indicates success, otherwise a GLU error code is
  16052. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16053. </para>
  16054. <para>
  16055. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  16056. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  16057. itself), is scaled up or down to the nearest power of 2. This copy will be
  16058. used for subsequent mipmapping operations described below. (If <i>width</i>
  16059. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  16060. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  16061. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  16062. 16 in depth, before mipmapping takes place.
  16063. </para>
  16064. <para>
  16065. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  16066. determine if the implementation can fit the requested texture. If not, both
  16067. dimensions are continually halved until it fits. (If the OpenGL version is
  16068. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  16069. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  16070. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  16071. </para>
  16072. <para>
  16073. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  16074. in half along both dimensions until size 1×1 is reached. At each level, each
  16075. texel in the halved mipmap level is an average of the corresponding four
  16076. texels in the larger mipmap level. (In the case of rectangular images, the
  16077. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  16078. texels are averaged instead.)
  16079. </para>
  16080. <para>
  16081. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  16082. Level 0 is a copy of <i>data</i>. The highest level is
  16083. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  16084. <i>height</i> is 16 and the implementation can store a texture of this size,
  16085. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  16086. 1×1. These correspond to levels 0 through 6, respectively.
  16087. </para>
  16088. <para>
  16089. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  16090. the acceptable values for <i>format</i> parameter. See the
  16091. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  16092. acceptable values for <i>type</i> parameter.
  16093. </para>
  16094. <para>
  16095. <b>NOTES</b>
  16096. </para>
  16097. <para>
  16098. There is no direct way of querying the maximum level. This can be derived
  16099. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  16100. the width and height actually used at level 0. (The width and height may not
  16101. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  16102. might have scaled them to fit the implementation.) Then the maximum level
  16103. can be derived from the formula <c>log2(max(width,height))</c>.
  16104. </para>
  16105. <para>
  16106. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  16107. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16109. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16111. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16112. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16117. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  16118. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  16119. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  16120. </para>
  16121. <para>
  16122. <b>ERRORS</b>
  16123. </para>
  16124. <para>
  16125. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  16126. is &lt; 1.
  16127. </para>
  16128. <para>
  16129. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  16130. <i>format</i>, or <i>type</i> is not legal.
  16131. </para>
  16132. <para>
  16133. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16134. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  16135. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  16136. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16137. </para>
  16138. <para>
  16139. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16140. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  16141. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  16142. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16143. </para>
  16144. <para>
  16145. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16146. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  16147. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  16148. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16149. </para>
  16150. <para>
  16151. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16152. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  16153. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  16154. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16155. </para>
  16156. <para>
  16157. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16158. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  16159. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  16160. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16161. </para>
  16162. <para>
  16163. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16164. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  16165. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  16166. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16167. </para>
  16168. </remarks>
  16169. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16170. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16171. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  16172. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16173. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16174. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16175. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16176. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16177. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16178. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16179. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16180. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  16181. </member>
  16182. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:,0:])">
  16183. <summary>
  16184. Builds a two-dimensional mipmap.
  16185. </summary>
  16186. <param name="target">
  16187. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  16188. </param>
  16189. <param name="internalFormat">
  16190. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  16191. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16192. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  16193. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  16194. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  16195. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  16196. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  16197. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  16198. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  16199. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  16200. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  16201. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  16202. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  16203. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  16204. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  16205. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  16206. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  16207. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  16208. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  16209. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16210. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  16211. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  16212. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  16213. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  16214. </param>
  16215. <param name="width">
  16216. Specifies, in pixels, the width of the texture image.
  16217. </param>
  16218. <param name="height">
  16219. Specifies, in pixels, the height of the texture image.
  16220. </param>
  16221. <param name="format">
  16222. Specifies the format of the pixel data. Must be one of
  16223. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  16224. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  16225. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16226. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16227. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  16228. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  16229. </param>
  16230. <param name="type">
  16231. Specifies the data type for <i>data</i>. Must be one of
  16232. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  16233. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  16234. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  16235. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  16236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16237. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16238. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16239. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16240. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16243. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16244. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16245. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16246. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  16247. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  16248. </param>
  16249. <param name="data">
  16250. Specifies a pointer to the image data in memory.
  16251. </param>
  16252. <returns>
  16253. A return value of zero indicates success, otherwise a GLU error code is
  16254. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16255. </returns>
  16256. <remarks>
  16257. <para>
  16258. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  16259. texture maps of decreasing resolutions called a mipmap. This is used for
  16260. the antialiasing of texture-mapped primitives.
  16261. </para>
  16262. <para>
  16263. A return value of zero indicates success, otherwise a GLU error code is
  16264. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16265. </para>
  16266. <para>
  16267. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  16268. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  16269. itself), is scaled up or down to the nearest power of 2. This copy will be
  16270. used for subsequent mipmapping operations described below. (If <i>width</i>
  16271. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  16272. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  16273. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  16274. 16 in depth, before mipmapping takes place.
  16275. </para>
  16276. <para>
  16277. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  16278. determine if the implementation can fit the requested texture. If not, both
  16279. dimensions are continually halved until it fits. (If the OpenGL version is
  16280. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  16281. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  16282. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  16283. </para>
  16284. <para>
  16285. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  16286. in half along both dimensions until size 1×1 is reached. At each level, each
  16287. texel in the halved mipmap level is an average of the corresponding four
  16288. texels in the larger mipmap level. (In the case of rectangular images, the
  16289. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  16290. texels are averaged instead.)
  16291. </para>
  16292. <para>
  16293. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  16294. Level 0 is a copy of <i>data</i>. The highest level is
  16295. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  16296. <i>height</i> is 16 and the implementation can store a texture of this size,
  16297. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  16298. 1×1. These correspond to levels 0 through 6, respectively.
  16299. </para>
  16300. <para>
  16301. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  16302. the acceptable values for <i>format</i> parameter. See the
  16303. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  16304. acceptable values for <i>type</i> parameter.
  16305. </para>
  16306. <para>
  16307. <b>NOTES</b>
  16308. </para>
  16309. <para>
  16310. There is no direct way of querying the maximum level. This can be derived
  16311. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  16312. the width and height actually used at level 0. (The width and height may not
  16313. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  16314. might have scaled them to fit the implementation.) Then the maximum level
  16315. can be derived from the formula <c>log2(max(width,height))</c>.
  16316. </para>
  16317. <para>
  16318. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  16319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16322. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16323. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16324. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16325. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16326. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16327. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16328. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16329. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  16330. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  16331. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  16332. </para>
  16333. <para>
  16334. <b>ERRORS</b>
  16335. </para>
  16336. <para>
  16337. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  16338. is &lt; 1.
  16339. </para>
  16340. <para>
  16341. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  16342. <i>format</i>, or <i>type</i> is not legal.
  16343. </para>
  16344. <para>
  16345. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  16347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  16348. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16349. </para>
  16350. <para>
  16351. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  16353. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  16354. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16355. </para>
  16356. <para>
  16357. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16358. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  16359. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  16360. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16361. </para>
  16362. <para>
  16363. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16364. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  16365. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  16366. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16367. </para>
  16368. <para>
  16369. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16370. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  16371. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  16372. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16373. </para>
  16374. <para>
  16375. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16376. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  16377. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  16378. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16379. </para>
  16380. </remarks>
  16381. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16382. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16383. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  16384. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16385. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16386. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16387. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16388. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16389. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16390. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16391. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16392. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  16393. </member>
  16394. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[])">
  16395. <summary>
  16396. Builds a two-dimensional mipmap.
  16397. </summary>
  16398. <param name="target">
  16399. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  16400. </param>
  16401. <param name="internalFormat">
  16402. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  16403. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16404. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  16405. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  16406. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  16407. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  16408. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  16409. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  16410. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  16411. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  16412. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  16413. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  16414. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  16415. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  16416. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  16417. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  16418. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  16419. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  16420. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  16421. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16422. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  16423. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  16424. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  16425. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  16426. </param>
  16427. <param name="width">
  16428. Specifies, in pixels, the width of the texture image.
  16429. </param>
  16430. <param name="height">
  16431. Specifies, in pixels, the height of the texture image.
  16432. </param>
  16433. <param name="format">
  16434. Specifies the format of the pixel data. Must be one of
  16435. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  16436. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  16437. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16438. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16439. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  16440. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  16441. </param>
  16442. <param name="type">
  16443. Specifies the data type for <i>data</i>. Must be one of
  16444. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  16445. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  16446. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  16447. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  16448. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16449. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16450. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16451. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16452. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16453. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16454. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16455. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16456. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16457. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16458. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  16459. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  16460. </param>
  16461. <param name="data">
  16462. Specifies a pointer to the image data in memory.
  16463. </param>
  16464. <returns>
  16465. A return value of zero indicates success, otherwise a GLU error code is
  16466. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16467. </returns>
  16468. <remarks>
  16469. <para>
  16470. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  16471. texture maps of decreasing resolutions called a mipmap. This is used for
  16472. the antialiasing of texture-mapped primitives.
  16473. </para>
  16474. <para>
  16475. A return value of zero indicates success, otherwise a GLU error code is
  16476. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16477. </para>
  16478. <para>
  16479. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  16480. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  16481. itself), is scaled up or down to the nearest power of 2. This copy will be
  16482. used for subsequent mipmapping operations described below. (If <i>width</i>
  16483. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  16484. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  16485. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  16486. 16 in depth, before mipmapping takes place.
  16487. </para>
  16488. <para>
  16489. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  16490. determine if the implementation can fit the requested texture. If not, both
  16491. dimensions are continually halved until it fits. (If the OpenGL version is
  16492. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  16493. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  16494. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  16495. </para>
  16496. <para>
  16497. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  16498. in half along both dimensions until size 1×1 is reached. At each level, each
  16499. texel in the halved mipmap level is an average of the corresponding four
  16500. texels in the larger mipmap level. (In the case of rectangular images, the
  16501. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  16502. texels are averaged instead.)
  16503. </para>
  16504. <para>
  16505. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  16506. Level 0 is a copy of <i>data</i>. The highest level is
  16507. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  16508. <i>height</i> is 16 and the implementation can store a texture of this size,
  16509. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  16510. 1×1. These correspond to levels 0 through 6, respectively.
  16511. </para>
  16512. <para>
  16513. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  16514. the acceptable values for <i>format</i> parameter. See the
  16515. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  16516. acceptable values for <i>type</i> parameter.
  16517. </para>
  16518. <para>
  16519. <b>NOTES</b>
  16520. </para>
  16521. <para>
  16522. There is no direct way of querying the maximum level. This can be derived
  16523. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  16524. the width and height actually used at level 0. (The width and height may not
  16525. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  16526. might have scaled them to fit the implementation.) Then the maximum level
  16527. can be derived from the formula <c>log2(max(width,height))</c>.
  16528. </para>
  16529. <para>
  16530. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  16531. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16532. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16533. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16534. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16535. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16536. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16537. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16538. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16539. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16540. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16541. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  16542. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  16543. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  16544. </para>
  16545. <para>
  16546. <b>ERRORS</b>
  16547. </para>
  16548. <para>
  16549. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  16550. is &lt; 1.
  16551. </para>
  16552. <para>
  16553. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  16554. <i>format</i>, or <i>type</i> is not legal.
  16555. </para>
  16556. <para>
  16557. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16558. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  16559. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  16560. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16561. </para>
  16562. <para>
  16563. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  16565. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  16566. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16567. </para>
  16568. <para>
  16569. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  16571. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  16572. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16573. </para>
  16574. <para>
  16575. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16576. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  16577. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  16578. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16579. </para>
  16580. <para>
  16581. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16582. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  16583. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  16584. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16585. </para>
  16586. <para>
  16587. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16588. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  16589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  16590. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16591. </para>
  16592. </remarks>
  16593. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16594. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16595. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  16596. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16597. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16598. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16599. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16600. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16601. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16602. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16603. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16604. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  16605. </member>
  16606. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:])">
  16607. <summary>
  16608. Builds a two-dimensional mipmap.
  16609. </summary>
  16610. <param name="target">
  16611. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  16612. </param>
  16613. <param name="internalFormat">
  16614. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  16615. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16616. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  16617. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  16618. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  16619. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  16620. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  16621. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  16622. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  16623. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  16624. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  16625. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  16626. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  16627. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  16628. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  16629. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  16630. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  16631. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  16632. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  16633. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16634. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  16635. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  16636. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  16637. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  16638. </param>
  16639. <param name="width">
  16640. Specifies, in pixels, the width of the texture image.
  16641. </param>
  16642. <param name="height">
  16643. Specifies, in pixels, the height of the texture image.
  16644. </param>
  16645. <param name="format">
  16646. Specifies the format of the pixel data. Must be one of
  16647. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  16648. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  16649. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16650. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16651. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  16652. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  16653. </param>
  16654. <param name="type">
  16655. Specifies the data type for <i>data</i>. Must be one of
  16656. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  16657. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  16658. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  16659. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  16660. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16661. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16662. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16663. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16664. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16665. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16666. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16667. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16668. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16669. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16670. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  16671. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  16672. </param>
  16673. <param name="data">
  16674. Specifies a pointer to the image data in memory.
  16675. </param>
  16676. <returns>
  16677. A return value of zero indicates success, otherwise a GLU error code is
  16678. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16679. </returns>
  16680. <remarks>
  16681. <para>
  16682. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  16683. texture maps of decreasing resolutions called a mipmap. This is used for
  16684. the antialiasing of texture-mapped primitives.
  16685. </para>
  16686. <para>
  16687. A return value of zero indicates success, otherwise a GLU error code is
  16688. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16689. </para>
  16690. <para>
  16691. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  16692. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  16693. itself), is scaled up or down to the nearest power of 2. This copy will be
  16694. used for subsequent mipmapping operations described below. (If <i>width</i>
  16695. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  16696. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  16697. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  16698. 16 in depth, before mipmapping takes place.
  16699. </para>
  16700. <para>
  16701. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  16702. determine if the implementation can fit the requested texture. If not, both
  16703. dimensions are continually halved until it fits. (If the OpenGL version is
  16704. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  16705. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  16706. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  16707. </para>
  16708. <para>
  16709. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  16710. in half along both dimensions until size 1×1 is reached. At each level, each
  16711. texel in the halved mipmap level is an average of the corresponding four
  16712. texels in the larger mipmap level. (In the case of rectangular images, the
  16713. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  16714. texels are averaged instead.)
  16715. </para>
  16716. <para>
  16717. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  16718. Level 0 is a copy of <i>data</i>. The highest level is
  16719. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  16720. <i>height</i> is 16 and the implementation can store a texture of this size,
  16721. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  16722. 1×1. These correspond to levels 0 through 6, respectively.
  16723. </para>
  16724. <para>
  16725. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  16726. the acceptable values for <i>format</i> parameter. See the
  16727. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  16728. acceptable values for <i>type</i> parameter.
  16729. </para>
  16730. <para>
  16731. <b>NOTES</b>
  16732. </para>
  16733. <para>
  16734. There is no direct way of querying the maximum level. This can be derived
  16735. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  16736. the width and height actually used at level 0. (The width and height may not
  16737. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  16738. might have scaled them to fit the implementation.) Then the maximum level
  16739. can be derived from the formula <c>log2(max(width,height))</c>.
  16740. </para>
  16741. <para>
  16742. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  16743. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16744. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16745. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16746. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16747. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16748. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16749. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16750. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16751. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16752. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16753. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  16754. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  16755. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  16756. </para>
  16757. <para>
  16758. <b>ERRORS</b>
  16759. </para>
  16760. <para>
  16761. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  16762. is &lt; 1.
  16763. </para>
  16764. <para>
  16765. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  16766. <i>format</i>, or <i>type</i> is not legal.
  16767. </para>
  16768. <para>
  16769. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16770. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  16771. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  16772. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16773. </para>
  16774. <para>
  16775. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  16777. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  16778. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16779. </para>
  16780. <para>
  16781. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16782. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  16783. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  16784. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16785. </para>
  16786. <para>
  16787. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  16789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  16790. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16791. </para>
  16792. <para>
  16793. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16794. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  16795. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  16796. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16797. </para>
  16798. <para>
  16799. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16800. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  16801. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  16802. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16803. </para>
  16804. </remarks>
  16805. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16806. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16807. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  16808. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16809. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16810. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  16811. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16812. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16813. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16814. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16815. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  16816. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  16817. </member>
  16818. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:,0:])">
  16819. <summary>
  16820. Builds a two-dimensional mipmap.
  16821. </summary>
  16822. <param name="target">
  16823. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  16824. </param>
  16825. <param name="internalFormat">
  16826. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  16827. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16828. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  16829. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  16830. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  16831. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  16832. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  16833. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  16834. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  16835. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  16836. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  16837. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  16838. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  16839. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  16840. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  16841. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  16842. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  16843. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  16844. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  16845. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16846. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  16847. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  16848. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  16849. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  16850. </param>
  16851. <param name="width">
  16852. Specifies, in pixels, the width of the texture image.
  16853. </param>
  16854. <param name="height">
  16855. Specifies, in pixels, the height of the texture image.
  16856. </param>
  16857. <param name="format">
  16858. Specifies the format of the pixel data. Must be one of
  16859. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  16860. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  16861. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  16862. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  16863. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  16864. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  16865. </param>
  16866. <param name="type">
  16867. Specifies the data type for <i>data</i>. Must be one of
  16868. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  16869. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  16870. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  16871. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  16872. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16873. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16874. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16875. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16876. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16877. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16878. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16879. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16880. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16881. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16882. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  16883. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  16884. </param>
  16885. <param name="data">
  16886. Specifies a pointer to the image data in memory.
  16887. </param>
  16888. <returns>
  16889. A return value of zero indicates success, otherwise a GLU error code is
  16890. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16891. </returns>
  16892. <remarks>
  16893. <para>
  16894. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  16895. texture maps of decreasing resolutions called a mipmap. This is used for
  16896. the antialiasing of texture-mapped primitives.
  16897. </para>
  16898. <para>
  16899. A return value of zero indicates success, otherwise a GLU error code is
  16900. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  16901. </para>
  16902. <para>
  16903. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  16904. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  16905. itself), is scaled up or down to the nearest power of 2. This copy will be
  16906. used for subsequent mipmapping operations described below. (If <i>width</i>
  16907. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  16908. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  16909. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  16910. 16 in depth, before mipmapping takes place.
  16911. </para>
  16912. <para>
  16913. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  16914. determine if the implementation can fit the requested texture. If not, both
  16915. dimensions are continually halved until it fits. (If the OpenGL version is
  16916. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  16917. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  16918. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  16919. </para>
  16920. <para>
  16921. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  16922. in half along both dimensions until size 1×1 is reached. At each level, each
  16923. texel in the halved mipmap level is an average of the corresponding four
  16924. texels in the larger mipmap level. (In the case of rectangular images, the
  16925. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  16926. texels are averaged instead.)
  16927. </para>
  16928. <para>
  16929. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  16930. Level 0 is a copy of <i>data</i>. The highest level is
  16931. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  16932. <i>height</i> is 16 and the implementation can store a texture of this size,
  16933. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  16934. 1×1. These correspond to levels 0 through 6, respectively.
  16935. </para>
  16936. <para>
  16937. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  16938. the acceptable values for <i>format</i> parameter. See the
  16939. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  16940. acceptable values for <i>type</i> parameter.
  16941. </para>
  16942. <para>
  16943. <b>NOTES</b>
  16944. </para>
  16945. <para>
  16946. There is no direct way of querying the maximum level. This can be derived
  16947. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  16948. the width and height actually used at level 0. (The width and height may not
  16949. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  16950. might have scaled them to fit the implementation.) Then the maximum level
  16951. can be derived from the formula <c>log2(max(width,height))</c>.
  16952. </para>
  16953. <para>
  16954. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  16955. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  16956. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  16957. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  16958. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  16959. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  16960. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  16961. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  16962. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  16963. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  16964. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  16965. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  16966. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  16967. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  16968. </para>
  16969. <para>
  16970. <b>ERRORS</b>
  16971. </para>
  16972. <para>
  16973. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  16974. is &lt; 1.
  16975. </para>
  16976. <para>
  16977. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  16978. <i>format</i>, or <i>type</i> is not legal.
  16979. </para>
  16980. <para>
  16981. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16982. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  16983. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  16984. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16985. </para>
  16986. <para>
  16987. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  16989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  16990. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  16991. </para>
  16992. <para>
  16993. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  16994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  16995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  16996. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  16997. </para>
  16998. <para>
  16999. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  17001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  17002. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17003. </para>
  17004. <para>
  17005. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17006. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  17007. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  17008. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17009. </para>
  17010. <para>
  17011. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17012. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  17013. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  17014. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17015. </para>
  17016. </remarks>
  17017. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17018. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17019. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  17020. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17021. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17022. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17023. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17024. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17025. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17026. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17027. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17028. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  17029. </member>
  17030. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[])">
  17031. <summary>
  17032. Builds a two-dimensional mipmap.
  17033. </summary>
  17034. <param name="target">
  17035. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  17036. </param>
  17037. <param name="internalFormat">
  17038. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  17039. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17040. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  17041. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  17042. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  17043. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  17044. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  17045. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  17046. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  17047. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  17048. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  17049. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  17050. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  17051. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  17052. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  17053. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  17054. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  17055. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  17056. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  17057. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17058. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  17059. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  17060. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  17061. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  17062. </param>
  17063. <param name="width">
  17064. Specifies, in pixels, the width of the texture image.
  17065. </param>
  17066. <param name="height">
  17067. Specifies, in pixels, the height of the texture image.
  17068. </param>
  17069. <param name="format">
  17070. Specifies the format of the pixel data. Must be one of
  17071. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  17072. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  17073. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17074. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17075. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  17076. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  17077. </param>
  17078. <param name="type">
  17079. Specifies the data type for <i>data</i>. Must be one of
  17080. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  17081. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  17082. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  17083. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  17084. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17085. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17086. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17087. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17088. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17089. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17090. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17091. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17092. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17093. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17094. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  17095. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  17096. </param>
  17097. <param name="data">
  17098. Specifies a pointer to the image data in memory.
  17099. </param>
  17100. <returns>
  17101. A return value of zero indicates success, otherwise a GLU error code is
  17102. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17103. </returns>
  17104. <remarks>
  17105. <para>
  17106. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  17107. texture maps of decreasing resolutions called a mipmap. This is used for
  17108. the antialiasing of texture-mapped primitives.
  17109. </para>
  17110. <para>
  17111. A return value of zero indicates success, otherwise a GLU error code is
  17112. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17113. </para>
  17114. <para>
  17115. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  17116. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  17117. itself), is scaled up or down to the nearest power of 2. This copy will be
  17118. used for subsequent mipmapping operations described below. (If <i>width</i>
  17119. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  17120. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  17121. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  17122. 16 in depth, before mipmapping takes place.
  17123. </para>
  17124. <para>
  17125. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  17126. determine if the implementation can fit the requested texture. If not, both
  17127. dimensions are continually halved until it fits. (If the OpenGL version is
  17128. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  17129. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  17130. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  17131. </para>
  17132. <para>
  17133. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  17134. in half along both dimensions until size 1×1 is reached. At each level, each
  17135. texel in the halved mipmap level is an average of the corresponding four
  17136. texels in the larger mipmap level. (In the case of rectangular images, the
  17137. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  17138. texels are averaged instead.)
  17139. </para>
  17140. <para>
  17141. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  17142. Level 0 is a copy of <i>data</i>. The highest level is
  17143. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  17144. <i>height</i> is 16 and the implementation can store a texture of this size,
  17145. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  17146. 1×1. These correspond to levels 0 through 6, respectively.
  17147. </para>
  17148. <para>
  17149. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  17150. the acceptable values for <i>format</i> parameter. See the
  17151. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  17152. acceptable values for <i>type</i> parameter.
  17153. </para>
  17154. <para>
  17155. <b>NOTES</b>
  17156. </para>
  17157. <para>
  17158. There is no direct way of querying the maximum level. This can be derived
  17159. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  17160. the width and height actually used at level 0. (The width and height may not
  17161. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  17162. might have scaled them to fit the implementation.) Then the maximum level
  17163. can be derived from the formula <c>log2(max(width,height))</c>.
  17164. </para>
  17165. <para>
  17166. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  17167. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17168. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17169. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17170. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17171. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17172. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17173. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17174. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17175. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17176. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17177. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  17178. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  17179. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  17180. </para>
  17181. <para>
  17182. <b>ERRORS</b>
  17183. </para>
  17184. <para>
  17185. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  17186. is &lt; 1.
  17187. </para>
  17188. <para>
  17189. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  17190. <i>format</i>, or <i>type</i> is not legal.
  17191. </para>
  17192. <para>
  17193. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17194. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  17195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  17196. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17197. </para>
  17198. <para>
  17199. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17200. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  17201. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  17202. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17203. </para>
  17204. <para>
  17205. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17206. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  17207. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  17208. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17209. </para>
  17210. <para>
  17211. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  17213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  17214. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17215. </para>
  17216. <para>
  17217. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  17219. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  17220. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17221. </para>
  17222. <para>
  17223. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17224. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  17225. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  17226. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17227. </para>
  17228. </remarks>
  17229. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17230. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17231. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  17232. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17233. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17234. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17235. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17236. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17237. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17238. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17239. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17240. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  17241. </member>
  17242. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:])">
  17243. <summary>
  17244. Builds a two-dimensional mipmap.
  17245. </summary>
  17246. <param name="target">
  17247. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  17248. </param>
  17249. <param name="internalFormat">
  17250. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  17251. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17252. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  17253. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  17254. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  17255. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  17256. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  17257. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  17258. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  17259. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  17260. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  17261. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  17262. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  17263. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  17264. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  17265. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  17266. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  17267. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  17268. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  17269. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17270. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  17271. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  17272. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  17273. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  17274. </param>
  17275. <param name="width">
  17276. Specifies, in pixels, the width of the texture image.
  17277. </param>
  17278. <param name="height">
  17279. Specifies, in pixels, the height of the texture image.
  17280. </param>
  17281. <param name="format">
  17282. Specifies the format of the pixel data. Must be one of
  17283. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  17284. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  17285. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17286. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17287. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  17288. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  17289. </param>
  17290. <param name="type">
  17291. Specifies the data type for <i>data</i>. Must be one of
  17292. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  17293. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  17294. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  17295. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  17296. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17297. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17298. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17299. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17300. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17301. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17302. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17303. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17304. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17305. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  17307. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  17308. </param>
  17309. <param name="data">
  17310. Specifies a pointer to the image data in memory.
  17311. </param>
  17312. <returns>
  17313. A return value of zero indicates success, otherwise a GLU error code is
  17314. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17315. </returns>
  17316. <remarks>
  17317. <para>
  17318. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  17319. texture maps of decreasing resolutions called a mipmap. This is used for
  17320. the antialiasing of texture-mapped primitives.
  17321. </para>
  17322. <para>
  17323. A return value of zero indicates success, otherwise a GLU error code is
  17324. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17325. </para>
  17326. <para>
  17327. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  17328. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  17329. itself), is scaled up or down to the nearest power of 2. This copy will be
  17330. used for subsequent mipmapping operations described below. (If <i>width</i>
  17331. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  17332. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  17333. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  17334. 16 in depth, before mipmapping takes place.
  17335. </para>
  17336. <para>
  17337. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  17338. determine if the implementation can fit the requested texture. If not, both
  17339. dimensions are continually halved until it fits. (If the OpenGL version is
  17340. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  17341. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  17342. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  17343. </para>
  17344. <para>
  17345. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  17346. in half along both dimensions until size 1×1 is reached. At each level, each
  17347. texel in the halved mipmap level is an average of the corresponding four
  17348. texels in the larger mipmap level. (In the case of rectangular images, the
  17349. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  17350. texels are averaged instead.)
  17351. </para>
  17352. <para>
  17353. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  17354. Level 0 is a copy of <i>data</i>. The highest level is
  17355. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  17356. <i>height</i> is 16 and the implementation can store a texture of this size,
  17357. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  17358. 1×1. These correspond to levels 0 through 6, respectively.
  17359. </para>
  17360. <para>
  17361. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  17362. the acceptable values for <i>format</i> parameter. See the
  17363. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  17364. acceptable values for <i>type</i> parameter.
  17365. </para>
  17366. <para>
  17367. <b>NOTES</b>
  17368. </para>
  17369. <para>
  17370. There is no direct way of querying the maximum level. This can be derived
  17371. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  17372. the width and height actually used at level 0. (The width and height may not
  17373. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  17374. might have scaled them to fit the implementation.) Then the maximum level
  17375. can be derived from the formula <c>log2(max(width,height))</c>.
  17376. </para>
  17377. <para>
  17378. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  17379. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17380. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17381. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17382. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17383. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17384. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  17390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  17391. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  17392. </para>
  17393. <para>
  17394. <b>ERRORS</b>
  17395. </para>
  17396. <para>
  17397. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  17398. is &lt; 1.
  17399. </para>
  17400. <para>
  17401. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  17402. <i>format</i>, or <i>type</i> is not legal.
  17403. </para>
  17404. <para>
  17405. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17406. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  17407. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  17408. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17409. </para>
  17410. <para>
  17411. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  17413. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  17414. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17415. </para>
  17416. <para>
  17417. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  17419. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  17420. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17421. </para>
  17422. <para>
  17423. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  17425. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  17426. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17427. </para>
  17428. <para>
  17429. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  17431. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  17432. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17433. </para>
  17434. <para>
  17435. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  17437. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  17438. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17439. </para>
  17440. </remarks>
  17441. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17442. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17443. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  17444. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17445. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17446. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17447. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17448. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17449. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17450. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17451. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17452. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  17453. </member>
  17454. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:,0:])">
  17455. <summary>
  17456. Builds a two-dimensional mipmap.
  17457. </summary>
  17458. <param name="target">
  17459. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  17460. </param>
  17461. <param name="internalFormat">
  17462. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  17463. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17464. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  17465. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  17466. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  17467. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  17468. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  17469. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  17470. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  17471. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  17472. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  17473. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  17474. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  17475. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  17476. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  17477. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  17478. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  17479. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  17480. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  17481. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17482. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  17483. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  17484. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  17485. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  17486. </param>
  17487. <param name="width">
  17488. Specifies, in pixels, the width of the texture image.
  17489. </param>
  17490. <param name="height">
  17491. Specifies, in pixels, the height of the texture image.
  17492. </param>
  17493. <param name="format">
  17494. Specifies the format of the pixel data. Must be one of
  17495. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  17496. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  17497. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17498. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17499. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  17500. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  17501. </param>
  17502. <param name="type">
  17503. Specifies the data type for <i>data</i>. Must be one of
  17504. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  17505. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  17506. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  17507. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  17508. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17509. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  17519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  17520. </param>
  17521. <param name="data">
  17522. Specifies a pointer to the image data in memory.
  17523. </param>
  17524. <returns>
  17525. A return value of zero indicates success, otherwise a GLU error code is
  17526. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17527. </returns>
  17528. <remarks>
  17529. <para>
  17530. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  17531. texture maps of decreasing resolutions called a mipmap. This is used for
  17532. the antialiasing of texture-mapped primitives.
  17533. </para>
  17534. <para>
  17535. A return value of zero indicates success, otherwise a GLU error code is
  17536. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17537. </para>
  17538. <para>
  17539. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  17540. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  17541. itself), is scaled up or down to the nearest power of 2. This copy will be
  17542. used for subsequent mipmapping operations described below. (If <i>width</i>
  17543. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  17544. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  17545. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  17546. 16 in depth, before mipmapping takes place.
  17547. </para>
  17548. <para>
  17549. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  17550. determine if the implementation can fit the requested texture. If not, both
  17551. dimensions are continually halved until it fits. (If the OpenGL version is
  17552. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  17553. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  17554. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  17555. </para>
  17556. <para>
  17557. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  17558. in half along both dimensions until size 1×1 is reached. At each level, each
  17559. texel in the halved mipmap level is an average of the corresponding four
  17560. texels in the larger mipmap level. (In the case of rectangular images, the
  17561. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  17562. texels are averaged instead.)
  17563. </para>
  17564. <para>
  17565. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  17566. Level 0 is a copy of <i>data</i>. The highest level is
  17567. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  17568. <i>height</i> is 16 and the implementation can store a texture of this size,
  17569. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  17570. 1×1. These correspond to levels 0 through 6, respectively.
  17571. </para>
  17572. <para>
  17573. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  17574. the acceptable values for <i>format</i> parameter. See the
  17575. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  17576. acceptable values for <i>type</i> parameter.
  17577. </para>
  17578. <para>
  17579. <b>NOTES</b>
  17580. </para>
  17581. <para>
  17582. There is no direct way of querying the maximum level. This can be derived
  17583. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  17584. the width and height actually used at level 0. (The width and height may not
  17585. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  17586. might have scaled them to fit the implementation.) Then the maximum level
  17587. can be derived from the formula <c>log2(max(width,height))</c>.
  17588. </para>
  17589. <para>
  17590. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  17591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17597. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17598. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17600. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17601. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  17602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  17603. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  17604. </para>
  17605. <para>
  17606. <b>ERRORS</b>
  17607. </para>
  17608. <para>
  17609. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  17610. is &lt; 1.
  17611. </para>
  17612. <para>
  17613. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  17614. <i>format</i>, or <i>type</i> is not legal.
  17615. </para>
  17616. <para>
  17617. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17618. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  17619. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  17620. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17621. </para>
  17622. <para>
  17623. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  17625. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  17626. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17627. </para>
  17628. <para>
  17629. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  17631. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  17632. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17633. </para>
  17634. <para>
  17635. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  17637. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  17638. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17639. </para>
  17640. <para>
  17641. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  17643. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  17644. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17645. </para>
  17646. <para>
  17647. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17648. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  17649. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  17650. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17651. </para>
  17652. </remarks>
  17653. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17654. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17655. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  17656. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17657. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17658. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17659. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17660. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17661. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17662. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17663. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17664. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  17665. </member>
  17666. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[])">
  17667. <summary>
  17668. Builds a two-dimensional mipmap.
  17669. </summary>
  17670. <param name="target">
  17671. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  17672. </param>
  17673. <param name="internalFormat">
  17674. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  17675. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17676. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  17677. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  17678. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  17679. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  17680. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  17681. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  17682. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  17683. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  17684. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  17685. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  17686. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  17687. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  17688. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  17689. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  17690. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  17691. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  17692. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  17693. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17694. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  17695. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  17696. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  17697. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  17698. </param>
  17699. <param name="width">
  17700. Specifies, in pixels, the width of the texture image.
  17701. </param>
  17702. <param name="height">
  17703. Specifies, in pixels, the height of the texture image.
  17704. </param>
  17705. <param name="format">
  17706. Specifies the format of the pixel data. Must be one of
  17707. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  17708. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  17709. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17710. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17711. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  17712. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  17713. </param>
  17714. <param name="type">
  17715. Specifies the data type for <i>data</i>. Must be one of
  17716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  17717. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  17718. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  17719. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  17720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17722. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17723. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17724. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17725. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17726. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17727. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17728. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17729. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17730. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  17731. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  17732. </param>
  17733. <param name="data">
  17734. Specifies a pointer to the image data in memory.
  17735. </param>
  17736. <returns>
  17737. A return value of zero indicates success, otherwise a GLU error code is
  17738. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17739. </returns>
  17740. <remarks>
  17741. <para>
  17742. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  17743. texture maps of decreasing resolutions called a mipmap. This is used for
  17744. the antialiasing of texture-mapped primitives.
  17745. </para>
  17746. <para>
  17747. A return value of zero indicates success, otherwise a GLU error code is
  17748. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17749. </para>
  17750. <para>
  17751. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  17752. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  17753. itself), is scaled up or down to the nearest power of 2. This copy will be
  17754. used for subsequent mipmapping operations described below. (If <i>width</i>
  17755. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  17756. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  17757. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  17758. 16 in depth, before mipmapping takes place.
  17759. </para>
  17760. <para>
  17761. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  17762. determine if the implementation can fit the requested texture. If not, both
  17763. dimensions are continually halved until it fits. (If the OpenGL version is
  17764. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  17765. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  17766. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  17767. </para>
  17768. <para>
  17769. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  17770. in half along both dimensions until size 1×1 is reached. At each level, each
  17771. texel in the halved mipmap level is an average of the corresponding four
  17772. texels in the larger mipmap level. (In the case of rectangular images, the
  17773. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  17774. texels are averaged instead.)
  17775. </para>
  17776. <para>
  17777. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  17778. Level 0 is a copy of <i>data</i>. The highest level is
  17779. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  17780. <i>height</i> is 16 and the implementation can store a texture of this size,
  17781. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  17782. 1×1. These correspond to levels 0 through 6, respectively.
  17783. </para>
  17784. <para>
  17785. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  17786. the acceptable values for <i>format</i> parameter. See the
  17787. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  17788. acceptable values for <i>type</i> parameter.
  17789. </para>
  17790. <para>
  17791. <b>NOTES</b>
  17792. </para>
  17793. <para>
  17794. There is no direct way of querying the maximum level. This can be derived
  17795. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  17796. the width and height actually used at level 0. (The width and height may not
  17797. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  17798. might have scaled them to fit the implementation.) Then the maximum level
  17799. can be derived from the formula <c>log2(max(width,height))</c>.
  17800. </para>
  17801. <para>
  17802. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  17803. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17804. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17805. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17806. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17807. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17808. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17809. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17810. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17813. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  17814. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  17815. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  17816. </para>
  17817. <para>
  17818. <b>ERRORS</b>
  17819. </para>
  17820. <para>
  17821. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  17822. is &lt; 1.
  17823. </para>
  17824. <para>
  17825. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  17826. <i>format</i>, or <i>type</i> is not legal.
  17827. </para>
  17828. <para>
  17829. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  17831. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  17832. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17833. </para>
  17834. <para>
  17835. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  17837. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  17838. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  17839. </para>
  17840. <para>
  17841. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  17843. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  17844. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17845. </para>
  17846. <para>
  17847. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17848. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  17849. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  17850. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17851. </para>
  17852. <para>
  17853. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17854. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  17855. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  17856. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17857. </para>
  17858. <para>
  17859. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  17860. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  17861. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  17862. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  17863. </para>
  17864. </remarks>
  17865. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17866. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17867. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  17868. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17869. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17870. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  17871. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17872. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17873. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17874. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17875. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  17876. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  17877. </member>
  17878. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:])">
  17879. <summary>
  17880. Builds a two-dimensional mipmap.
  17881. </summary>
  17882. <param name="target">
  17883. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  17884. </param>
  17885. <param name="internalFormat">
  17886. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  17887. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17888. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  17889. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  17890. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  17891. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  17892. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  17893. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  17894. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  17895. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  17896. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  17897. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  17898. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  17899. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  17900. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  17901. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  17902. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  17903. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  17904. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  17905. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17906. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  17907. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  17908. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  17909. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  17910. </param>
  17911. <param name="width">
  17912. Specifies, in pixels, the width of the texture image.
  17913. </param>
  17914. <param name="height">
  17915. Specifies, in pixels, the height of the texture image.
  17916. </param>
  17917. <param name="format">
  17918. Specifies the format of the pixel data. Must be one of
  17919. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  17920. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  17921. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  17922. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  17923. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  17924. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  17925. </param>
  17926. <param name="type">
  17927. Specifies the data type for <i>data</i>. Must be one of
  17928. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  17929. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  17930. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  17931. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  17932. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  17933. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  17934. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  17935. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  17936. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  17937. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  17938. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  17939. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  17940. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  17941. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  17942. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  17943. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  17944. </param>
  17945. <param name="data">
  17946. Specifies a pointer to the image data in memory.
  17947. </param>
  17948. <returns>
  17949. A return value of zero indicates success, otherwise a GLU error code is
  17950. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17951. </returns>
  17952. <remarks>
  17953. <para>
  17954. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  17955. texture maps of decreasing resolutions called a mipmap. This is used for
  17956. the antialiasing of texture-mapped primitives.
  17957. </para>
  17958. <para>
  17959. A return value of zero indicates success, otherwise a GLU error code is
  17960. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  17961. </para>
  17962. <para>
  17963. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  17964. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  17965. itself), is scaled up or down to the nearest power of 2. This copy will be
  17966. used for subsequent mipmapping operations described below. (If <i>width</i>
  17967. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  17968. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  17969. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  17970. 16 in depth, before mipmapping takes place.
  17971. </para>
  17972. <para>
  17973. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  17974. determine if the implementation can fit the requested texture. If not, both
  17975. dimensions are continually halved until it fits. (If the OpenGL version is
  17976. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  17977. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  17978. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  17979. </para>
  17980. <para>
  17981. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  17982. in half along both dimensions until size 1×1 is reached. At each level, each
  17983. texel in the halved mipmap level is an average of the corresponding four
  17984. texels in the larger mipmap level. (In the case of rectangular images, the
  17985. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  17986. texels are averaged instead.)
  17987. </para>
  17988. <para>
  17989. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  17990. Level 0 is a copy of <i>data</i>. The highest level is
  17991. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  17992. <i>height</i> is 16 and the implementation can store a texture of this size,
  17993. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  17994. 1×1. These correspond to levels 0 through 6, respectively.
  17995. </para>
  17996. <para>
  17997. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  17998. the acceptable values for <i>format</i> parameter. See the
  17999. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  18000. acceptable values for <i>type</i> parameter.
  18001. </para>
  18002. <para>
  18003. <b>NOTES</b>
  18004. </para>
  18005. <para>
  18006. There is no direct way of querying the maximum level. This can be derived
  18007. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  18008. the width and height actually used at level 0. (The width and height may not
  18009. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  18010. might have scaled them to fit the implementation.) Then the maximum level
  18011. can be derived from the formula <c>log2(max(width,height))</c>.
  18012. </para>
  18013. <para>
  18014. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  18015. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18016. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18017. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18018. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18019. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18020. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18021. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18022. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18023. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18024. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18025. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  18026. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  18027. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  18028. </para>
  18029. <para>
  18030. <b>ERRORS</b>
  18031. </para>
  18032. <para>
  18033. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  18034. is &lt; 1.
  18035. </para>
  18036. <para>
  18037. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  18038. <i>format</i>, or <i>type</i> is not legal.
  18039. </para>
  18040. <para>
  18041. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  18043. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  18044. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18045. </para>
  18046. <para>
  18047. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18048. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  18049. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  18050. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18051. </para>
  18052. <para>
  18053. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18054. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  18055. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  18056. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18057. </para>
  18058. <para>
  18059. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18060. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  18061. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  18062. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18063. </para>
  18064. <para>
  18065. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18066. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  18067. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  18068. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18069. </para>
  18070. <para>
  18071. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18072. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  18073. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  18074. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18075. </para>
  18076. </remarks>
  18077. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18078. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18079. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  18080. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18081. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18082. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18083. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18084. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18085. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18086. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18087. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18088. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  18089. </member>
  18090. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:,0:])">
  18091. <summary>
  18092. Builds a two-dimensional mipmap.
  18093. </summary>
  18094. <param name="target">
  18095. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  18096. </param>
  18097. <param name="internalFormat">
  18098. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  18099. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18100. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  18101. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  18102. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  18103. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  18104. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  18105. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  18106. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  18107. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  18108. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  18109. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  18110. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  18111. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  18112. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  18113. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  18114. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  18115. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  18116. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  18117. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18118. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  18119. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  18120. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  18121. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  18122. </param>
  18123. <param name="width">
  18124. Specifies, in pixels, the width of the texture image.
  18125. </param>
  18126. <param name="height">
  18127. Specifies, in pixels, the height of the texture image.
  18128. </param>
  18129. <param name="format">
  18130. Specifies the format of the pixel data. Must be one of
  18131. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  18132. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  18133. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18134. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18135. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  18136. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  18137. </param>
  18138. <param name="type">
  18139. Specifies the data type for <i>data</i>. Must be one of
  18140. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  18141. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  18142. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  18143. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  18144. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18145. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18146. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18147. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18148. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18149. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18150. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18151. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18152. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18153. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18154. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  18155. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  18156. </param>
  18157. <param name="data">
  18158. Specifies a pointer to the image data in memory.
  18159. </param>
  18160. <returns>
  18161. A return value of zero indicates success, otherwise a GLU error code is
  18162. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18163. </returns>
  18164. <remarks>
  18165. <para>
  18166. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  18167. texture maps of decreasing resolutions called a mipmap. This is used for
  18168. the antialiasing of texture-mapped primitives.
  18169. </para>
  18170. <para>
  18171. A return value of zero indicates success, otherwise a GLU error code is
  18172. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18173. </para>
  18174. <para>
  18175. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  18176. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  18177. itself), is scaled up or down to the nearest power of 2. This copy will be
  18178. used for subsequent mipmapping operations described below. (If <i>width</i>
  18179. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  18180. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  18181. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  18182. 16 in depth, before mipmapping takes place.
  18183. </para>
  18184. <para>
  18185. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  18186. determine if the implementation can fit the requested texture. If not, both
  18187. dimensions are continually halved until it fits. (If the OpenGL version is
  18188. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  18189. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  18190. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  18191. </para>
  18192. <para>
  18193. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  18194. in half along both dimensions until size 1×1 is reached. At each level, each
  18195. texel in the halved mipmap level is an average of the corresponding four
  18196. texels in the larger mipmap level. (In the case of rectangular images, the
  18197. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  18198. texels are averaged instead.)
  18199. </para>
  18200. <para>
  18201. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  18202. Level 0 is a copy of <i>data</i>. The highest level is
  18203. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  18204. <i>height</i> is 16 and the implementation can store a texture of this size,
  18205. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  18206. 1×1. These correspond to levels 0 through 6, respectively.
  18207. </para>
  18208. <para>
  18209. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  18210. the acceptable values for <i>format</i> parameter. See the
  18211. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  18212. acceptable values for <i>type</i> parameter.
  18213. </para>
  18214. <para>
  18215. <b>NOTES</b>
  18216. </para>
  18217. <para>
  18218. There is no direct way of querying the maximum level. This can be derived
  18219. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  18220. the width and height actually used at level 0. (The width and height may not
  18221. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  18222. might have scaled them to fit the implementation.) Then the maximum level
  18223. can be derived from the formula <c>log2(max(width,height))</c>.
  18224. </para>
  18225. <para>
  18226. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  18227. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18228. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18229. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18230. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18231. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18232. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18233. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18234. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18235. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18236. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18237. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  18238. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  18239. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  18240. </para>
  18241. <para>
  18242. <b>ERRORS</b>
  18243. </para>
  18244. <para>
  18245. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  18246. is &lt; 1.
  18247. </para>
  18248. <para>
  18249. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  18250. <i>format</i>, or <i>type</i> is not legal.
  18251. </para>
  18252. <para>
  18253. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18254. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  18255. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  18256. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18257. </para>
  18258. <para>
  18259. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18260. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  18261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  18262. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18263. </para>
  18264. <para>
  18265. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18266. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  18267. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  18268. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18269. </para>
  18270. <para>
  18271. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18272. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  18273. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  18274. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18275. </para>
  18276. <para>
  18277. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18278. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  18279. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  18280. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18281. </para>
  18282. <para>
  18283. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18284. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  18285. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  18286. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18287. </para>
  18288. </remarks>
  18289. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18290. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18291. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  18292. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18293. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18294. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18295. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18296. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18297. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18298. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18299. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18300. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  18301. </member>
  18302. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[])">
  18303. <summary>
  18304. Builds a two-dimensional mipmap.
  18305. </summary>
  18306. <param name="target">
  18307. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  18308. </param>
  18309. <param name="internalFormat">
  18310. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  18311. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18312. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  18313. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  18314. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  18315. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  18316. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  18317. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  18318. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  18319. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  18320. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  18321. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  18322. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  18323. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  18324. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  18325. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  18326. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  18327. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  18328. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  18329. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18330. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  18331. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  18332. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  18333. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  18334. </param>
  18335. <param name="width">
  18336. Specifies, in pixels, the width of the texture image.
  18337. </param>
  18338. <param name="height">
  18339. Specifies, in pixels, the height of the texture image.
  18340. </param>
  18341. <param name="format">
  18342. Specifies the format of the pixel data. Must be one of
  18343. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  18344. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  18345. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18346. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18347. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  18348. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  18349. </param>
  18350. <param name="type">
  18351. Specifies the data type for <i>data</i>. Must be one of
  18352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  18353. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  18354. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  18355. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  18356. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18357. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18358. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18359. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18360. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18361. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18362. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18363. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18364. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18365. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18366. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  18367. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  18368. </param>
  18369. <param name="data">
  18370. Specifies a pointer to the image data in memory.
  18371. </param>
  18372. <returns>
  18373. A return value of zero indicates success, otherwise a GLU error code is
  18374. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18375. </returns>
  18376. <remarks>
  18377. <para>
  18378. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  18379. texture maps of decreasing resolutions called a mipmap. This is used for
  18380. the antialiasing of texture-mapped primitives.
  18381. </para>
  18382. <para>
  18383. A return value of zero indicates success, otherwise a GLU error code is
  18384. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18385. </para>
  18386. <para>
  18387. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  18388. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  18389. itself), is scaled up or down to the nearest power of 2. This copy will be
  18390. used for subsequent mipmapping operations described below. (If <i>width</i>
  18391. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  18392. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  18393. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  18394. 16 in depth, before mipmapping takes place.
  18395. </para>
  18396. <para>
  18397. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  18398. determine if the implementation can fit the requested texture. If not, both
  18399. dimensions are continually halved until it fits. (If the OpenGL version is
  18400. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  18401. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  18402. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  18403. </para>
  18404. <para>
  18405. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  18406. in half along both dimensions until size 1×1 is reached. At each level, each
  18407. texel in the halved mipmap level is an average of the corresponding four
  18408. texels in the larger mipmap level. (In the case of rectangular images, the
  18409. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  18410. texels are averaged instead.)
  18411. </para>
  18412. <para>
  18413. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  18414. Level 0 is a copy of <i>data</i>. The highest level is
  18415. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  18416. <i>height</i> is 16 and the implementation can store a texture of this size,
  18417. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  18418. 1×1. These correspond to levels 0 through 6, respectively.
  18419. </para>
  18420. <para>
  18421. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  18422. the acceptable values for <i>format</i> parameter. See the
  18423. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  18424. acceptable values for <i>type</i> parameter.
  18425. </para>
  18426. <para>
  18427. <b>NOTES</b>
  18428. </para>
  18429. <para>
  18430. There is no direct way of querying the maximum level. This can be derived
  18431. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  18432. the width and height actually used at level 0. (The width and height may not
  18433. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  18434. might have scaled them to fit the implementation.) Then the maximum level
  18435. can be derived from the formula <c>log2(max(width,height))</c>.
  18436. </para>
  18437. <para>
  18438. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  18439. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18440. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18443. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18444. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18445. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18446. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18447. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18448. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18449. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  18450. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  18451. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  18452. </para>
  18453. <para>
  18454. <b>ERRORS</b>
  18455. </para>
  18456. <para>
  18457. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  18458. is &lt; 1.
  18459. </para>
  18460. <para>
  18461. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  18462. <i>format</i>, or <i>type</i> is not legal.
  18463. </para>
  18464. <para>
  18465. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18466. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  18467. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  18468. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18469. </para>
  18470. <para>
  18471. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18472. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  18473. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  18474. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18475. </para>
  18476. <para>
  18477. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18478. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  18479. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  18480. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18481. </para>
  18482. <para>
  18483. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18484. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  18485. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  18486. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18487. </para>
  18488. <para>
  18489. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18490. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  18491. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  18492. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18493. </para>
  18494. <para>
  18495. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18496. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  18497. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  18498. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18499. </para>
  18500. </remarks>
  18501. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18502. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18503. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  18504. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18505. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18506. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18507. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18508. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18509. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18510. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18511. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18512. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  18513. </member>
  18514. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:])">
  18515. <summary>
  18516. Builds a two-dimensional mipmap.
  18517. </summary>
  18518. <param name="target">
  18519. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  18520. </param>
  18521. <param name="internalFormat">
  18522. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  18523. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18524. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  18525. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  18526. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  18527. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  18528. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  18529. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  18530. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  18531. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  18532. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  18533. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  18534. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  18535. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  18536. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  18537. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  18538. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  18539. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  18540. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  18541. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18542. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  18543. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  18544. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  18545. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  18546. </param>
  18547. <param name="width">
  18548. Specifies, in pixels, the width of the texture image.
  18549. </param>
  18550. <param name="height">
  18551. Specifies, in pixels, the height of the texture image.
  18552. </param>
  18553. <param name="format">
  18554. Specifies the format of the pixel data. Must be one of
  18555. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  18556. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  18557. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18558. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18559. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  18560. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  18561. </param>
  18562. <param name="type">
  18563. Specifies the data type for <i>data</i>. Must be one of
  18564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  18565. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  18566. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  18567. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  18568. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18571. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18572. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18573. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18574. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18575. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18576. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18577. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18578. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  18579. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  18580. </param>
  18581. <param name="data">
  18582. Specifies a pointer to the image data in memory.
  18583. </param>
  18584. <returns>
  18585. A return value of zero indicates success, otherwise a GLU error code is
  18586. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18587. </returns>
  18588. <remarks>
  18589. <para>
  18590. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  18591. texture maps of decreasing resolutions called a mipmap. This is used for
  18592. the antialiasing of texture-mapped primitives.
  18593. </para>
  18594. <para>
  18595. A return value of zero indicates success, otherwise a GLU error code is
  18596. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18597. </para>
  18598. <para>
  18599. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  18600. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  18601. itself), is scaled up or down to the nearest power of 2. This copy will be
  18602. used for subsequent mipmapping operations described below. (If <i>width</i>
  18603. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  18604. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  18605. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  18606. 16 in depth, before mipmapping takes place.
  18607. </para>
  18608. <para>
  18609. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  18610. determine if the implementation can fit the requested texture. If not, both
  18611. dimensions are continually halved until it fits. (If the OpenGL version is
  18612. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  18613. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  18614. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  18615. </para>
  18616. <para>
  18617. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  18618. in half along both dimensions until size 1×1 is reached. At each level, each
  18619. texel in the halved mipmap level is an average of the corresponding four
  18620. texels in the larger mipmap level. (In the case of rectangular images, the
  18621. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  18622. texels are averaged instead.)
  18623. </para>
  18624. <para>
  18625. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  18626. Level 0 is a copy of <i>data</i>. The highest level is
  18627. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  18628. <i>height</i> is 16 and the implementation can store a texture of this size,
  18629. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  18630. 1×1. These correspond to levels 0 through 6, respectively.
  18631. </para>
  18632. <para>
  18633. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  18634. the acceptable values for <i>format</i> parameter. See the
  18635. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  18636. acceptable values for <i>type</i> parameter.
  18637. </para>
  18638. <para>
  18639. <b>NOTES</b>
  18640. </para>
  18641. <para>
  18642. There is no direct way of querying the maximum level. This can be derived
  18643. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  18644. the width and height actually used at level 0. (The width and height may not
  18645. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  18646. might have scaled them to fit the implementation.) Then the maximum level
  18647. can be derived from the formula <c>log2(max(width,height))</c>.
  18648. </para>
  18649. <para>
  18650. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  18651. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18652. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18653. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18654. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18655. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18656. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18657. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18658. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18659. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18660. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18661. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  18662. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  18663. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  18664. </para>
  18665. <para>
  18666. <b>ERRORS</b>
  18667. </para>
  18668. <para>
  18669. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  18670. is &lt; 1.
  18671. </para>
  18672. <para>
  18673. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  18674. <i>format</i>, or <i>type</i> is not legal.
  18675. </para>
  18676. <para>
  18677. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18678. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  18679. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  18680. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18681. </para>
  18682. <para>
  18683. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18684. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  18685. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  18686. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18687. </para>
  18688. <para>
  18689. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18690. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  18691. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  18692. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18693. </para>
  18694. <para>
  18695. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  18697. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  18698. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18699. </para>
  18700. <para>
  18701. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18702. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  18703. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  18704. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18705. </para>
  18706. <para>
  18707. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18708. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  18709. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  18710. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18711. </para>
  18712. </remarks>
  18713. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18714. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18715. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  18716. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18717. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18718. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18719. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18720. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18721. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18722. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18723. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18724. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  18725. </member>
  18726. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:,0:])">
  18727. <summary>
  18728. Builds a two-dimensional mipmap.
  18729. </summary>
  18730. <param name="target">
  18731. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  18732. </param>
  18733. <param name="internalFormat">
  18734. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  18735. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18736. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  18737. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  18738. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  18739. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  18740. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  18741. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  18742. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  18743. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  18744. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  18745. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  18746. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  18747. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  18748. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  18749. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  18750. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  18751. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  18752. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  18753. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18754. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  18755. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  18756. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  18757. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  18758. </param>
  18759. <param name="width">
  18760. Specifies, in pixels, the width of the texture image.
  18761. </param>
  18762. <param name="height">
  18763. Specifies, in pixels, the height of the texture image.
  18764. </param>
  18765. <param name="format">
  18766. Specifies the format of the pixel data. Must be one of
  18767. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  18768. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  18769. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18770. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18771. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  18772. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  18773. </param>
  18774. <param name="type">
  18775. Specifies the data type for <i>data</i>. Must be one of
  18776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  18777. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  18778. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  18779. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  18780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18781. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18782. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18783. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18784. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  18791. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  18792. </param>
  18793. <param name="data">
  18794. Specifies a pointer to the image data in memory.
  18795. </param>
  18796. <returns>
  18797. A return value of zero indicates success, otherwise a GLU error code is
  18798. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18799. </returns>
  18800. <remarks>
  18801. <para>
  18802. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  18803. texture maps of decreasing resolutions called a mipmap. This is used for
  18804. the antialiasing of texture-mapped primitives.
  18805. </para>
  18806. <para>
  18807. A return value of zero indicates success, otherwise a GLU error code is
  18808. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  18809. </para>
  18810. <para>
  18811. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  18812. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  18813. itself), is scaled up or down to the nearest power of 2. This copy will be
  18814. used for subsequent mipmapping operations described below. (If <i>width</i>
  18815. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  18816. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  18817. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  18818. 16 in depth, before mipmapping takes place.
  18819. </para>
  18820. <para>
  18821. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  18822. determine if the implementation can fit the requested texture. If not, both
  18823. dimensions are continually halved until it fits. (If the OpenGL version is
  18824. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  18825. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  18826. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  18827. </para>
  18828. <para>
  18829. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  18830. in half along both dimensions until size 1×1 is reached. At each level, each
  18831. texel in the halved mipmap level is an average of the corresponding four
  18832. texels in the larger mipmap level. (In the case of rectangular images, the
  18833. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  18834. texels are averaged instead.)
  18835. </para>
  18836. <para>
  18837. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  18838. Level 0 is a copy of <i>data</i>. The highest level is
  18839. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  18840. <i>height</i> is 16 and the implementation can store a texture of this size,
  18841. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  18842. 1×1. These correspond to levels 0 through 6, respectively.
  18843. </para>
  18844. <para>
  18845. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  18846. the acceptable values for <i>format</i> parameter. See the
  18847. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  18848. acceptable values for <i>type</i> parameter.
  18849. </para>
  18850. <para>
  18851. <b>NOTES</b>
  18852. </para>
  18853. <para>
  18854. There is no direct way of querying the maximum level. This can be derived
  18855. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  18856. the width and height actually used at level 0. (The width and height may not
  18857. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  18858. might have scaled them to fit the implementation.) Then the maximum level
  18859. can be derived from the formula <c>log2(max(width,height))</c>.
  18860. </para>
  18861. <para>
  18862. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  18863. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18864. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18865. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18866. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18867. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18868. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18869. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18870. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  18871. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  18872. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  18873. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  18874. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  18875. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  18876. </para>
  18877. <para>
  18878. <b>ERRORS</b>
  18879. </para>
  18880. <para>
  18881. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  18882. is &lt; 1.
  18883. </para>
  18884. <para>
  18885. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  18886. <i>format</i>, or <i>type</i> is not legal.
  18887. </para>
  18888. <para>
  18889. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18890. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  18891. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  18892. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18893. </para>
  18894. <para>
  18895. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18896. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  18897. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  18898. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  18899. </para>
  18900. <para>
  18901. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18902. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  18903. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  18904. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18905. </para>
  18906. <para>
  18907. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18908. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  18909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  18910. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18911. </para>
  18912. <para>
  18913. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  18915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  18916. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18917. </para>
  18918. <para>
  18919. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  18920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  18921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  18922. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  18923. </para>
  18924. </remarks>
  18925. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18926. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18927. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  18928. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18929. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18930. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  18931. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18932. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18933. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18934. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18935. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  18936. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  18937. </member>
  18938. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[])">
  18939. <summary>
  18940. Builds a two-dimensional mipmap.
  18941. </summary>
  18942. <param name="target">
  18943. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  18944. </param>
  18945. <param name="internalFormat">
  18946. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  18947. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18948. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  18949. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  18950. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  18951. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  18952. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  18953. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  18954. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  18955. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  18956. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  18957. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  18958. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  18959. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  18960. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  18961. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  18962. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  18963. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  18964. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  18965. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18966. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  18967. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  18968. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  18969. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  18970. </param>
  18971. <param name="width">
  18972. Specifies, in pixels, the width of the texture image.
  18973. </param>
  18974. <param name="height">
  18975. Specifies, in pixels, the height of the texture image.
  18976. </param>
  18977. <param name="format">
  18978. Specifies the format of the pixel data. Must be one of
  18979. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  18980. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  18981. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  18982. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  18983. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  18984. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  18985. </param>
  18986. <param name="type">
  18987. Specifies the data type for <i>data</i>. Must be one of
  18988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  18989. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  18990. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  18991. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  18992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  18993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  18994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  18995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  18996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  18997. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  18998. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  18999. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19002. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  19003. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  19004. </param>
  19005. <param name="data">
  19006. Specifies a pointer to the image data in memory.
  19007. </param>
  19008. <returns>
  19009. A return value of zero indicates success, otherwise a GLU error code is
  19010. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19011. </returns>
  19012. <remarks>
  19013. <para>
  19014. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  19015. texture maps of decreasing resolutions called a mipmap. This is used for
  19016. the antialiasing of texture-mapped primitives.
  19017. </para>
  19018. <para>
  19019. A return value of zero indicates success, otherwise a GLU error code is
  19020. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19021. </para>
  19022. <para>
  19023. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  19024. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  19025. itself), is scaled up or down to the nearest power of 2. This copy will be
  19026. used for subsequent mipmapping operations described below. (If <i>width</i>
  19027. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  19028. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  19029. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  19030. 16 in depth, before mipmapping takes place.
  19031. </para>
  19032. <para>
  19033. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  19034. determine if the implementation can fit the requested texture. If not, both
  19035. dimensions are continually halved until it fits. (If the OpenGL version is
  19036. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  19037. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  19038. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  19039. </para>
  19040. <para>
  19041. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  19042. in half along both dimensions until size 1×1 is reached. At each level, each
  19043. texel in the halved mipmap level is an average of the corresponding four
  19044. texels in the larger mipmap level. (In the case of rectangular images, the
  19045. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  19046. texels are averaged instead.)
  19047. </para>
  19048. <para>
  19049. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  19050. Level 0 is a copy of <i>data</i>. The highest level is
  19051. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  19052. <i>height</i> is 16 and the implementation can store a texture of this size,
  19053. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  19054. 1×1. These correspond to levels 0 through 6, respectively.
  19055. </para>
  19056. <para>
  19057. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  19058. the acceptable values for <i>format</i> parameter. See the
  19059. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  19060. acceptable values for <i>type</i> parameter.
  19061. </para>
  19062. <para>
  19063. <b>NOTES</b>
  19064. </para>
  19065. <para>
  19066. There is no direct way of querying the maximum level. This can be derived
  19067. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  19068. the width and height actually used at level 0. (The width and height may not
  19069. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  19070. might have scaled them to fit the implementation.) Then the maximum level
  19071. can be derived from the formula <c>log2(max(width,height))</c>.
  19072. </para>
  19073. <para>
  19074. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  19075. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19076. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19077. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19078. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19079. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19080. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19081. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19082. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19083. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19084. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19085. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  19086. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  19087. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  19088. </para>
  19089. <para>
  19090. <b>ERRORS</b>
  19091. </para>
  19092. <para>
  19093. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  19094. is &lt; 1.
  19095. </para>
  19096. <para>
  19097. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  19098. <i>format</i>, or <i>type</i> is not legal.
  19099. </para>
  19100. <para>
  19101. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19102. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  19103. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  19104. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19105. </para>
  19106. <para>
  19107. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  19109. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  19110. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19111. </para>
  19112. <para>
  19113. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  19115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  19116. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19117. </para>
  19118. <para>
  19119. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  19121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  19122. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19123. </para>
  19124. <para>
  19125. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  19127. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  19128. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19129. </para>
  19130. <para>
  19131. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  19133. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  19134. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19135. </para>
  19136. </remarks>
  19137. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19138. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19139. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  19140. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19141. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19142. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19143. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19144. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19145. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19146. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19147. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19148. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  19149. </member>
  19150. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:])">
  19151. <summary>
  19152. Builds a two-dimensional mipmap.
  19153. </summary>
  19154. <param name="target">
  19155. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  19156. </param>
  19157. <param name="internalFormat">
  19158. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  19159. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19160. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  19161. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  19162. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  19163. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  19164. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  19165. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  19166. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  19167. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  19168. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  19169. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  19170. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  19171. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  19172. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  19173. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  19174. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  19175. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  19176. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  19177. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19178. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  19179. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  19180. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  19181. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  19182. </param>
  19183. <param name="width">
  19184. Specifies, in pixels, the width of the texture image.
  19185. </param>
  19186. <param name="height">
  19187. Specifies, in pixels, the height of the texture image.
  19188. </param>
  19189. <param name="format">
  19190. Specifies the format of the pixel data. Must be one of
  19191. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  19192. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  19193. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19194. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19195. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  19196. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  19197. </param>
  19198. <param name="type">
  19199. Specifies the data type for <i>data</i>. Must be one of
  19200. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  19201. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  19202. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  19203. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  19204. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19205. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19206. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19207. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19208. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19214. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  19215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  19216. </param>
  19217. <param name="data">
  19218. Specifies a pointer to the image data in memory.
  19219. </param>
  19220. <returns>
  19221. A return value of zero indicates success, otherwise a GLU error code is
  19222. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19223. </returns>
  19224. <remarks>
  19225. <para>
  19226. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  19227. texture maps of decreasing resolutions called a mipmap. This is used for
  19228. the antialiasing of texture-mapped primitives.
  19229. </para>
  19230. <para>
  19231. A return value of zero indicates success, otherwise a GLU error code is
  19232. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19233. </para>
  19234. <para>
  19235. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  19236. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  19237. itself), is scaled up or down to the nearest power of 2. This copy will be
  19238. used for subsequent mipmapping operations described below. (If <i>width</i>
  19239. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  19240. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  19241. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  19242. 16 in depth, before mipmapping takes place.
  19243. </para>
  19244. <para>
  19245. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  19246. determine if the implementation can fit the requested texture. If not, both
  19247. dimensions are continually halved until it fits. (If the OpenGL version is
  19248. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  19249. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  19250. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  19251. </para>
  19252. <para>
  19253. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  19254. in half along both dimensions until size 1×1 is reached. At each level, each
  19255. texel in the halved mipmap level is an average of the corresponding four
  19256. texels in the larger mipmap level. (In the case of rectangular images, the
  19257. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  19258. texels are averaged instead.)
  19259. </para>
  19260. <para>
  19261. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  19262. Level 0 is a copy of <i>data</i>. The highest level is
  19263. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  19264. <i>height</i> is 16 and the implementation can store a texture of this size,
  19265. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  19266. 1×1. These correspond to levels 0 through 6, respectively.
  19267. </para>
  19268. <para>
  19269. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  19270. the acceptable values for <i>format</i> parameter. See the
  19271. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  19272. acceptable values for <i>type</i> parameter.
  19273. </para>
  19274. <para>
  19275. <b>NOTES</b>
  19276. </para>
  19277. <para>
  19278. There is no direct way of querying the maximum level. This can be derived
  19279. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  19280. the width and height actually used at level 0. (The width and height may not
  19281. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  19282. might have scaled them to fit the implementation.) Then the maximum level
  19283. can be derived from the formula <c>log2(max(width,height))</c>.
  19284. </para>
  19285. <para>
  19286. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  19287. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19288. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19289. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19290. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19291. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19292. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19293. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19294. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19295. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19296. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19297. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  19298. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  19299. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  19300. </para>
  19301. <para>
  19302. <b>ERRORS</b>
  19303. </para>
  19304. <para>
  19305. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  19306. is &lt; 1.
  19307. </para>
  19308. <para>
  19309. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  19310. <i>format</i>, or <i>type</i> is not legal.
  19311. </para>
  19312. <para>
  19313. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19314. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  19315. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  19316. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19317. </para>
  19318. <para>
  19319. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19320. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  19321. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  19322. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19323. </para>
  19324. <para>
  19325. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19326. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  19327. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  19328. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19329. </para>
  19330. <para>
  19331. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19332. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  19333. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  19334. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19335. </para>
  19336. <para>
  19337. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19338. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  19339. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  19340. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19341. </para>
  19342. <para>
  19343. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  19345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  19346. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19347. </para>
  19348. </remarks>
  19349. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19350. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19351. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  19352. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19353. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19354. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19355. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19356. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19357. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19358. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19359. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19360. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  19361. </member>
  19362. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:,0:])">
  19363. <summary>
  19364. Builds a two-dimensional mipmap.
  19365. </summary>
  19366. <param name="target">
  19367. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  19368. </param>
  19369. <param name="internalFormat">
  19370. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  19371. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19372. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  19373. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  19374. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  19375. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  19376. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  19377. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  19378. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  19379. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  19380. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  19381. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  19382. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  19383. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  19384. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  19385. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  19386. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  19387. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  19388. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  19389. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19390. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  19391. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  19392. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  19393. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  19394. </param>
  19395. <param name="width">
  19396. Specifies, in pixels, the width of the texture image.
  19397. </param>
  19398. <param name="height">
  19399. Specifies, in pixels, the height of the texture image.
  19400. </param>
  19401. <param name="format">
  19402. Specifies the format of the pixel data. Must be one of
  19403. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  19404. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  19405. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19406. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19407. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  19408. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  19409. </param>
  19410. <param name="type">
  19411. Specifies the data type for <i>data</i>. Must be one of
  19412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  19413. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  19414. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  19415. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  19416. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19419. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19420. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19425. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19426. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  19427. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  19428. </param>
  19429. <param name="data">
  19430. Specifies a pointer to the image data in memory.
  19431. </param>
  19432. <returns>
  19433. A return value of zero indicates success, otherwise a GLU error code is
  19434. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19435. </returns>
  19436. <remarks>
  19437. <para>
  19438. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  19439. texture maps of decreasing resolutions called a mipmap. This is used for
  19440. the antialiasing of texture-mapped primitives.
  19441. </para>
  19442. <para>
  19443. A return value of zero indicates success, otherwise a GLU error code is
  19444. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19445. </para>
  19446. <para>
  19447. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  19448. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  19449. itself), is scaled up or down to the nearest power of 2. This copy will be
  19450. used for subsequent mipmapping operations described below. (If <i>width</i>
  19451. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  19452. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  19453. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  19454. 16 in depth, before mipmapping takes place.
  19455. </para>
  19456. <para>
  19457. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  19458. determine if the implementation can fit the requested texture. If not, both
  19459. dimensions are continually halved until it fits. (If the OpenGL version is
  19460. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  19461. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  19462. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  19463. </para>
  19464. <para>
  19465. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  19466. in half along both dimensions until size 1×1 is reached. At each level, each
  19467. texel in the halved mipmap level is an average of the corresponding four
  19468. texels in the larger mipmap level. (In the case of rectangular images, the
  19469. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  19470. texels are averaged instead.)
  19471. </para>
  19472. <para>
  19473. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  19474. Level 0 is a copy of <i>data</i>. The highest level is
  19475. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  19476. <i>height</i> is 16 and the implementation can store a texture of this size,
  19477. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  19478. 1×1. These correspond to levels 0 through 6, respectively.
  19479. </para>
  19480. <para>
  19481. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  19482. the acceptable values for <i>format</i> parameter. See the
  19483. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  19484. acceptable values for <i>type</i> parameter.
  19485. </para>
  19486. <para>
  19487. <b>NOTES</b>
  19488. </para>
  19489. <para>
  19490. There is no direct way of querying the maximum level. This can be derived
  19491. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  19492. the width and height actually used at level 0. (The width and height may not
  19493. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  19494. might have scaled them to fit the implementation.) Then the maximum level
  19495. can be derived from the formula <c>log2(max(width,height))</c>.
  19496. </para>
  19497. <para>
  19498. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  19499. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19500. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19501. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19502. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19503. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19504. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19505. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19507. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19508. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19509. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  19510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  19511. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  19512. </para>
  19513. <para>
  19514. <b>ERRORS</b>
  19515. </para>
  19516. <para>
  19517. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  19518. is &lt; 1.
  19519. </para>
  19520. <para>
  19521. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  19522. <i>format</i>, or <i>type</i> is not legal.
  19523. </para>
  19524. <para>
  19525. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19526. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  19527. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  19528. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19529. </para>
  19530. <para>
  19531. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19532. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  19533. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  19534. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19535. </para>
  19536. <para>
  19537. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19538. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  19539. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  19540. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19541. </para>
  19542. <para>
  19543. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19544. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  19545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  19546. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19547. </para>
  19548. <para>
  19549. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19550. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  19551. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  19552. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19553. </para>
  19554. <para>
  19555. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  19557. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  19558. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19559. </para>
  19560. </remarks>
  19561. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19562. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19563. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  19564. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19565. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19566. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19567. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19568. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19569. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19570. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19571. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19572. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  19573. </member>
  19574. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[])">
  19575. <summary>
  19576. Builds a two-dimensional mipmap.
  19577. </summary>
  19578. <param name="target">
  19579. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  19580. </param>
  19581. <param name="internalFormat">
  19582. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  19583. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19584. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  19585. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  19586. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  19587. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  19588. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  19589. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  19590. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  19591. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  19592. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  19593. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  19594. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  19595. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  19596. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  19597. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  19598. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  19599. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  19600. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  19601. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19602. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  19603. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  19604. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  19605. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  19606. </param>
  19607. <param name="width">
  19608. Specifies, in pixels, the width of the texture image.
  19609. </param>
  19610. <param name="height">
  19611. Specifies, in pixels, the height of the texture image.
  19612. </param>
  19613. <param name="format">
  19614. Specifies the format of the pixel data. Must be one of
  19615. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  19616. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  19617. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19618. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19619. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  19620. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  19621. </param>
  19622. <param name="type">
  19623. Specifies the data type for <i>data</i>. Must be one of
  19624. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  19625. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  19626. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  19627. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  19628. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19631. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19632. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19633. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19634. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19637. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19638. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  19639. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  19640. </param>
  19641. <param name="data">
  19642. Specifies a pointer to the image data in memory.
  19643. </param>
  19644. <returns>
  19645. A return value of zero indicates success, otherwise a GLU error code is
  19646. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19647. </returns>
  19648. <remarks>
  19649. <para>
  19650. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  19651. texture maps of decreasing resolutions called a mipmap. This is used for
  19652. the antialiasing of texture-mapped primitives.
  19653. </para>
  19654. <para>
  19655. A return value of zero indicates success, otherwise a GLU error code is
  19656. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19657. </para>
  19658. <para>
  19659. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  19660. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  19661. itself), is scaled up or down to the nearest power of 2. This copy will be
  19662. used for subsequent mipmapping operations described below. (If <i>width</i>
  19663. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  19664. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  19665. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  19666. 16 in depth, before mipmapping takes place.
  19667. </para>
  19668. <para>
  19669. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  19670. determine if the implementation can fit the requested texture. If not, both
  19671. dimensions are continually halved until it fits. (If the OpenGL version is
  19672. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  19673. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  19674. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  19675. </para>
  19676. <para>
  19677. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  19678. in half along both dimensions until size 1×1 is reached. At each level, each
  19679. texel in the halved mipmap level is an average of the corresponding four
  19680. texels in the larger mipmap level. (In the case of rectangular images, the
  19681. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  19682. texels are averaged instead.)
  19683. </para>
  19684. <para>
  19685. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  19686. Level 0 is a copy of <i>data</i>. The highest level is
  19687. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  19688. <i>height</i> is 16 and the implementation can store a texture of this size,
  19689. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  19690. 1×1. These correspond to levels 0 through 6, respectively.
  19691. </para>
  19692. <para>
  19693. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  19694. the acceptable values for <i>format</i> parameter. See the
  19695. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  19696. acceptable values for <i>type</i> parameter.
  19697. </para>
  19698. <para>
  19699. <b>NOTES</b>
  19700. </para>
  19701. <para>
  19702. There is no direct way of querying the maximum level. This can be derived
  19703. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  19704. the width and height actually used at level 0. (The width and height may not
  19705. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  19706. might have scaled them to fit the implementation.) Then the maximum level
  19707. can be derived from the formula <c>log2(max(width,height))</c>.
  19708. </para>
  19709. <para>
  19710. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  19711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19715. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19716. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19718. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19719. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19720. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  19722. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  19723. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  19724. </para>
  19725. <para>
  19726. <b>ERRORS</b>
  19727. </para>
  19728. <para>
  19729. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  19730. is &lt; 1.
  19731. </para>
  19732. <para>
  19733. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  19734. <i>format</i>, or <i>type</i> is not legal.
  19735. </para>
  19736. <para>
  19737. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19738. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  19739. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  19740. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19741. </para>
  19742. <para>
  19743. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19744. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  19745. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  19746. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19747. </para>
  19748. <para>
  19749. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19750. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  19751. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  19752. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19753. </para>
  19754. <para>
  19755. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19756. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  19757. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  19758. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19759. </para>
  19760. <para>
  19761. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19762. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  19763. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  19764. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19765. </para>
  19766. <para>
  19767. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19768. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  19769. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  19770. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19771. </para>
  19772. </remarks>
  19773. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19774. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19775. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  19776. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19777. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19778. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19779. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19780. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19781. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19782. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19783. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19784. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  19785. </member>
  19786. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:])">
  19787. <summary>
  19788. Builds a two-dimensional mipmap.
  19789. </summary>
  19790. <param name="target">
  19791. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  19792. </param>
  19793. <param name="internalFormat">
  19794. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  19795. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19796. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  19797. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  19798. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  19799. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  19800. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  19801. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  19802. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  19803. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  19804. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  19805. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  19806. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  19807. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  19808. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  19809. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  19810. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  19811. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  19812. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  19813. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19814. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  19815. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  19816. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  19817. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  19818. </param>
  19819. <param name="width">
  19820. Specifies, in pixels, the width of the texture image.
  19821. </param>
  19822. <param name="height">
  19823. Specifies, in pixels, the height of the texture image.
  19824. </param>
  19825. <param name="format">
  19826. Specifies the format of the pixel data. Must be one of
  19827. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  19828. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  19829. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  19830. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  19831. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  19832. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  19833. </param>
  19834. <param name="type">
  19835. Specifies the data type for <i>data</i>. Must be one of
  19836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  19837. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  19838. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  19839. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  19840. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19843. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19844. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19845. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19846. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19847. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19848. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19849. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19850. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  19851. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  19852. </param>
  19853. <param name="data">
  19854. Specifies a pointer to the image data in memory.
  19855. </param>
  19856. <returns>
  19857. A return value of zero indicates success, otherwise a GLU error code is
  19858. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19859. </returns>
  19860. <remarks>
  19861. <para>
  19862. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  19863. texture maps of decreasing resolutions called a mipmap. This is used for
  19864. the antialiasing of texture-mapped primitives.
  19865. </para>
  19866. <para>
  19867. A return value of zero indicates success, otherwise a GLU error code is
  19868. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  19869. </para>
  19870. <para>
  19871. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  19872. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  19873. itself), is scaled up or down to the nearest power of 2. This copy will be
  19874. used for subsequent mipmapping operations described below. (If <i>width</i>
  19875. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  19876. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  19877. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  19878. 16 in depth, before mipmapping takes place.
  19879. </para>
  19880. <para>
  19881. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  19882. determine if the implementation can fit the requested texture. If not, both
  19883. dimensions are continually halved until it fits. (If the OpenGL version is
  19884. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  19885. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  19886. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  19887. </para>
  19888. <para>
  19889. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  19890. in half along both dimensions until size 1×1 is reached. At each level, each
  19891. texel in the halved mipmap level is an average of the corresponding four
  19892. texels in the larger mipmap level. (In the case of rectangular images, the
  19893. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  19894. texels are averaged instead.)
  19895. </para>
  19896. <para>
  19897. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  19898. Level 0 is a copy of <i>data</i>. The highest level is
  19899. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  19900. <i>height</i> is 16 and the implementation can store a texture of this size,
  19901. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  19902. 1×1. These correspond to levels 0 through 6, respectively.
  19903. </para>
  19904. <para>
  19905. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  19906. the acceptable values for <i>format</i> parameter. See the
  19907. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  19908. acceptable values for <i>type</i> parameter.
  19909. </para>
  19910. <para>
  19911. <b>NOTES</b>
  19912. </para>
  19913. <para>
  19914. There is no direct way of querying the maximum level. This can be derived
  19915. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  19916. the width and height actually used at level 0. (The width and height may not
  19917. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  19918. might have scaled them to fit the implementation.) Then the maximum level
  19919. can be derived from the formula <c>log2(max(width,height))</c>.
  19920. </para>
  19921. <para>
  19922. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  19923. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  19924. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  19925. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  19926. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  19927. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  19928. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  19929. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  19930. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  19931. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  19932. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  19933. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  19934. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  19935. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  19936. </para>
  19937. <para>
  19938. <b>ERRORS</b>
  19939. </para>
  19940. <para>
  19941. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  19942. is &lt; 1.
  19943. </para>
  19944. <para>
  19945. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  19946. <i>format</i>, or <i>type</i> is not legal.
  19947. </para>
  19948. <para>
  19949. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19950. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  19951. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  19952. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19953. </para>
  19954. <para>
  19955. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19956. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  19957. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  19958. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  19959. </para>
  19960. <para>
  19961. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19962. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  19963. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  19964. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19965. </para>
  19966. <para>
  19967. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19968. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  19969. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  19970. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19971. </para>
  19972. <para>
  19973. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19974. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  19975. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  19976. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19977. </para>
  19978. <para>
  19979. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  19980. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  19981. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  19982. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  19983. </para>
  19984. </remarks>
  19985. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19986. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19987. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  19988. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19989. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19990. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  19991. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19992. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19993. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19994. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19995. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  19996. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  19997. </member>
  19998. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:,0:])">
  19999. <summary>
  20000. Builds a two-dimensional mipmap.
  20001. </summary>
  20002. <param name="target">
  20003. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  20004. </param>
  20005. <param name="internalFormat">
  20006. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  20007. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20008. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  20009. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  20010. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  20011. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  20012. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  20013. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  20014. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  20015. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  20016. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  20017. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  20018. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  20019. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  20020. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  20021. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  20022. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  20023. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  20024. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  20025. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20026. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  20027. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  20028. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  20029. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  20030. </param>
  20031. <param name="width">
  20032. Specifies, in pixels, the width of the texture image.
  20033. </param>
  20034. <param name="height">
  20035. Specifies, in pixels, the height of the texture image.
  20036. </param>
  20037. <param name="format">
  20038. Specifies the format of the pixel data. Must be one of
  20039. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  20040. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  20041. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20042. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20043. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  20044. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  20045. </param>
  20046. <param name="type">
  20047. Specifies the data type for <i>data</i>. Must be one of
  20048. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  20049. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  20050. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  20051. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  20052. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20053. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20054. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20055. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20056. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20057. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20058. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20059. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20060. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20061. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20062. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  20063. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  20064. </param>
  20065. <param name="data">
  20066. Specifies a pointer to the image data in memory.
  20067. </param>
  20068. <returns>
  20069. A return value of zero indicates success, otherwise a GLU error code is
  20070. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20071. </returns>
  20072. <remarks>
  20073. <para>
  20074. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  20075. texture maps of decreasing resolutions called a mipmap. This is used for
  20076. the antialiasing of texture-mapped primitives.
  20077. </para>
  20078. <para>
  20079. A return value of zero indicates success, otherwise a GLU error code is
  20080. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20081. </para>
  20082. <para>
  20083. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  20084. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  20085. itself), is scaled up or down to the nearest power of 2. This copy will be
  20086. used for subsequent mipmapping operations described below. (If <i>width</i>
  20087. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  20088. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  20089. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  20090. 16 in depth, before mipmapping takes place.
  20091. </para>
  20092. <para>
  20093. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  20094. determine if the implementation can fit the requested texture. If not, both
  20095. dimensions are continually halved until it fits. (If the OpenGL version is
  20096. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  20097. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  20098. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  20099. </para>
  20100. <para>
  20101. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  20102. in half along both dimensions until size 1×1 is reached. At each level, each
  20103. texel in the halved mipmap level is an average of the corresponding four
  20104. texels in the larger mipmap level. (In the case of rectangular images, the
  20105. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  20106. texels are averaged instead.)
  20107. </para>
  20108. <para>
  20109. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  20110. Level 0 is a copy of <i>data</i>. The highest level is
  20111. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  20112. <i>height</i> is 16 and the implementation can store a texture of this size,
  20113. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  20114. 1×1. These correspond to levels 0 through 6, respectively.
  20115. </para>
  20116. <para>
  20117. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  20118. the acceptable values for <i>format</i> parameter. See the
  20119. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  20120. acceptable values for <i>type</i> parameter.
  20121. </para>
  20122. <para>
  20123. <b>NOTES</b>
  20124. </para>
  20125. <para>
  20126. There is no direct way of querying the maximum level. This can be derived
  20127. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  20128. the width and height actually used at level 0. (The width and height may not
  20129. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  20130. might have scaled them to fit the implementation.) Then the maximum level
  20131. can be derived from the formula <c>log2(max(width,height))</c>.
  20132. </para>
  20133. <para>
  20134. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  20135. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20136. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20137. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20138. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20139. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20140. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20141. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20142. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20143. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20144. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20145. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  20146. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  20147. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  20148. </para>
  20149. <para>
  20150. <b>ERRORS</b>
  20151. </para>
  20152. <para>
  20153. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  20154. is &lt; 1.
  20155. </para>
  20156. <para>
  20157. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  20158. <i>format</i>, or <i>type</i> is not legal.
  20159. </para>
  20160. <para>
  20161. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20162. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  20163. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  20164. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20165. </para>
  20166. <para>
  20167. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20168. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  20169. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  20170. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20171. </para>
  20172. <para>
  20173. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20174. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  20175. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  20176. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20177. </para>
  20178. <para>
  20179. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20180. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  20181. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  20182. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20183. </para>
  20184. <para>
  20185. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  20187. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  20188. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20189. </para>
  20190. <para>
  20191. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  20193. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  20194. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20195. </para>
  20196. </remarks>
  20197. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20198. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20199. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  20200. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20201. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20202. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20203. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20204. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20205. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20206. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20207. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20208. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  20209. </member>
  20210. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
  20211. <summary>
  20212. Builds a two-dimensional mipmap.
  20213. </summary>
  20214. <param name="target">
  20215. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  20216. </param>
  20217. <param name="internalFormat">
  20218. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  20219. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20220. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  20221. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  20222. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  20223. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  20224. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  20225. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  20226. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  20227. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  20228. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  20229. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  20230. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  20231. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  20232. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  20233. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  20234. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  20235. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  20236. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  20237. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20238. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  20239. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  20240. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  20241. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  20242. </param>
  20243. <param name="width">
  20244. Specifies, in pixels, the width of the texture image.
  20245. </param>
  20246. <param name="height">
  20247. Specifies, in pixels, the height of the texture image.
  20248. </param>
  20249. <param name="format">
  20250. Specifies the format of the pixel data. Must be one of
  20251. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  20252. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  20253. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20254. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20255. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  20256. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  20257. </param>
  20258. <param name="type">
  20259. Specifies the data type for <i>data</i>. Must be one of
  20260. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  20261. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  20262. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  20263. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  20264. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20265. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20266. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20267. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20268. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20269. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20270. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20271. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20272. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20273. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20274. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  20275. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  20276. </param>
  20277. <param name="data">
  20278. Specifies a pointer to the image data in memory.
  20279. </param>
  20280. <returns>
  20281. A return value of zero indicates success, otherwise a GLU error code is
  20282. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20283. </returns>
  20284. <remarks>
  20285. <para>
  20286. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  20287. texture maps of decreasing resolutions called a mipmap. This is used for
  20288. the antialiasing of texture-mapped primitives.
  20289. </para>
  20290. <para>
  20291. A return value of zero indicates success, otherwise a GLU error code is
  20292. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20293. </para>
  20294. <para>
  20295. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  20296. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  20297. itself), is scaled up or down to the nearest power of 2. This copy will be
  20298. used for subsequent mipmapping operations described below. (If <i>width</i>
  20299. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  20300. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  20301. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  20302. 16 in depth, before mipmapping takes place.
  20303. </para>
  20304. <para>
  20305. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  20306. determine if the implementation can fit the requested texture. If not, both
  20307. dimensions are continually halved until it fits. (If the OpenGL version is
  20308. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  20309. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  20310. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  20311. </para>
  20312. <para>
  20313. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  20314. in half along both dimensions until size 1×1 is reached. At each level, each
  20315. texel in the halved mipmap level is an average of the corresponding four
  20316. texels in the larger mipmap level. (In the case of rectangular images, the
  20317. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  20318. texels are averaged instead.)
  20319. </para>
  20320. <para>
  20321. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  20322. Level 0 is a copy of <i>data</i>. The highest level is
  20323. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  20324. <i>height</i> is 16 and the implementation can store a texture of this size,
  20325. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  20326. 1×1. These correspond to levels 0 through 6, respectively.
  20327. </para>
  20328. <para>
  20329. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  20330. the acceptable values for <i>format</i> parameter. See the
  20331. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  20332. acceptable values for <i>type</i> parameter.
  20333. </para>
  20334. <para>
  20335. <b>NOTES</b>
  20336. </para>
  20337. <para>
  20338. There is no direct way of querying the maximum level. This can be derived
  20339. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  20340. the width and height actually used at level 0. (The width and height may not
  20341. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  20342. might have scaled them to fit the implementation.) Then the maximum level
  20343. can be derived from the formula <c>log2(max(width,height))</c>.
  20344. </para>
  20345. <para>
  20346. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  20347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20348. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20349. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20350. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20351. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20353. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20354. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20355. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20356. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20357. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  20358. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  20359. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  20360. </para>
  20361. <para>
  20362. <b>ERRORS</b>
  20363. </para>
  20364. <para>
  20365. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  20366. is &lt; 1.
  20367. </para>
  20368. <para>
  20369. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  20370. <i>format</i>, or <i>type</i> is not legal.
  20371. </para>
  20372. <para>
  20373. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20374. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  20375. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  20376. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20377. </para>
  20378. <para>
  20379. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20380. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  20381. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  20382. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20383. </para>
  20384. <para>
  20385. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  20387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  20388. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20389. </para>
  20390. <para>
  20391. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20392. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  20393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  20394. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20395. </para>
  20396. <para>
  20397. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20398. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  20399. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  20400. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20401. </para>
  20402. <para>
  20403. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20404. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  20405. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  20406. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20407. </para>
  20408. </remarks>
  20409. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20410. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20411. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  20412. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20413. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20414. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20415. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20416. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20417. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20418. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20419. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20420. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  20421. </member>
  20422. <member name="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Void*)">
  20423. <summary>
  20424. Builds a two-dimensional mipmap.
  20425. </summary>
  20426. <param name="target">
  20427. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_2D"/>.
  20428. </param>
  20429. <param name="internalFormat">
  20430. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  20431. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20432. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  20433. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  20434. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  20435. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  20436. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  20437. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  20438. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  20439. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  20440. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  20441. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  20442. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>,
  20443. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>,
  20444. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>,
  20445. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  20446. <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>,
  20447. <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>,
  20448. <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>,
  20449. <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20450. <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>,
  20451. <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>,
  20452. <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/> or
  20453. <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  20454. </param>
  20455. <param name="width">
  20456. Specifies, in pixels, the width of the texture image.
  20457. </param>
  20458. <param name="height">
  20459. Specifies, in pixels, the height of the texture image.
  20460. </param>
  20461. <param name="format">
  20462. Specifies the format of the pixel data. Must be one of
  20463. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  20464. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  20465. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20466. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20467. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  20468. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  20469. </param>
  20470. <param name="type">
  20471. Specifies the data type for <i>data</i>. Must be one of
  20472. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  20473. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  20474. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  20475. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  20476. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20477. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20478. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20479. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20480. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20481. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20482. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20483. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20484. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20485. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20486. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  20487. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  20488. </param>
  20489. <param name="data">
  20490. Specifies a pointer to the image data in memory.
  20491. </param>
  20492. <returns>
  20493. A return value of zero indicates success, otherwise a GLU error code is
  20494. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20495. </returns>
  20496. <remarks>
  20497. <para>
  20498. <b>gluBuild2DMipmaps</b> builds a series of prefiltered two-dimensional
  20499. texture maps of decreasing resolutions called a mipmap. This is used for
  20500. the antialiasing of texture-mapped primitives.
  20501. </para>
  20502. <para>
  20503. A return value of zero indicates success, otherwise a GLU error code is
  20504. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20505. </para>
  20506. <para>
  20507. Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
  20508. see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
  20509. itself), is scaled up or down to the nearest power of 2. This copy will be
  20510. used for subsequent mipmapping operations described below. (If <i>width</i>
  20511. or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
  20512. will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
  20513. 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
  20514. 16 in depth, before mipmapping takes place.
  20515. </para>
  20516. <para>
  20517. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  20518. determine if the implementation can fit the requested texture. If not, both
  20519. dimensions are continually halved until it fits. (If the OpenGL version is
  20520. &lt;= 1.0, both maximum texture dimensions are clamped to the value returned
  20521. by <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> with the argument
  20522. <see cref="F:Tao.OpenGl.Gl.GL_MAX_TEXTURE_SIZE"/>.)
  20523. </para>
  20524. <para>
  20525. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  20526. in half along both dimensions until size 1×1 is reached. At each level, each
  20527. texel in the halved mipmap level is an average of the corresponding four
  20528. texels in the larger mipmap level. (In the case of rectangular images, the
  20529. decimation will ultimately reach an N×1 or 1×N configuration. Here, two
  20530. texels are averaged instead.)
  20531. </para>
  20532. <para>
  20533. <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  20534. Level 0 is a copy of <i>data</i>. The highest level is
  20535. <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
  20536. <i>height</i> is 16 and the implementation can store a texture of this size,
  20537. the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
  20538. 1×1. These correspond to levels 0 through 6, respectively.
  20539. </para>
  20540. <para>
  20541. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  20542. the acceptable values for <i>format</i> parameter. See the
  20543. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  20544. acceptable values for <i>type</i> parameter.
  20545. </para>
  20546. <para>
  20547. <b>NOTES</b>
  20548. </para>
  20549. <para>
  20550. There is no direct way of querying the maximum level. This can be derived
  20551. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  20552. the width and height actually used at level 0. (The width and height may not
  20553. be equal to <i>width</i> and <i>height</i> respectively since proxy textures
  20554. might have scaled them to fit the implementation.) Then the maximum level
  20555. can be derived from the formula <c>log2(max(width,height))</c>.
  20556. </para>
  20557. <para>
  20558. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  20559. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20560. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20561. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20562. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20563. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20565. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20566. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20567. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20568. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  20570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  20571. version is 1.2 or greater and if the GLU version is 1.3 or greater.
  20572. </para>
  20573. <para>
  20574. <b>ERRORS</b>
  20575. </para>
  20576. <para>
  20577. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i> or <i>height</i>
  20578. is &lt; 1.
  20579. </para>
  20580. <para>
  20581. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  20582. <i>format</i>, or <i>type</i> is not legal.
  20583. </para>
  20584. <para>
  20585. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20586. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  20587. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  20588. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20589. </para>
  20590. <para>
  20591. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  20593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  20594. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20595. </para>
  20596. <para>
  20597. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20598. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  20599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  20600. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20601. </para>
  20602. <para>
  20603. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20604. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  20605. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  20606. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20607. </para>
  20608. <para>
  20609. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20610. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  20611. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  20612. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20613. </para>
  20614. <para>
  20615. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20616. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  20617. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  20618. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20619. </para>
  20620. </remarks>
  20621. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20622. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20623. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  20624. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20625. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20626. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20627. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20628. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20629. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20630. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20631. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20632. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  20633. </member>
  20634. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])">
  20635. <summary>
  20636. Builds a subset of three-dimensional mipmap.
  20637. </summary>
  20638. <param name="target">
  20639. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  20640. </param>
  20641. <param name="internalFormat">
  20642. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  20643. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20644. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  20645. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  20646. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  20647. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  20648. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  20649. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  20650. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  20651. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  20652. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  20653. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  20654. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  20655. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  20656. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  20657. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  20658. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  20659. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  20660. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  20661. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  20662. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  20663. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  20664. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  20665. </param>
  20666. <param name="width">
  20667. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  20668. </param>
  20669. <param name="height">
  20670. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  20671. </param>
  20672. <param name="depth">
  20673. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  20674. </param>
  20675. <param name="format">
  20676. Specifies the format of the pixel data. Must be one of
  20677. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  20678. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  20679. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20680. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20681. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  20682. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  20683. </param>
  20684. <param name="type">
  20685. Specifies the data type for <i>data</i>. Must be one of
  20686. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  20687. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  20688. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  20689. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  20690. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20691. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20692. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20693. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20694. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20695. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20697. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20698. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20699. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20700. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  20701. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  20702. </param>
  20703. <param name="level">
  20704. Specifies the mipmap level of the image data.
  20705. </param>
  20706. <param name="min">
  20707. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  20708. </param>
  20709. <param name="max">
  20710. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  20711. </param>
  20712. <param name="data">
  20713. Specifies a pointer to the image data in memory.
  20714. </param>
  20715. <returns>
  20716. A return value of zero indicates success, otherwise a GLU error code is
  20717. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20718. </returns>
  20719. <remarks>
  20720. <para>
  20721. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  20722. three-dimensional texture maps of decreasing resolutions called a mipmap.
  20723. This is used for the antialiasing of texture mapped primitives.
  20724. </para>
  20725. <para>
  20726. A return value of zero indicates success, otherwise a GLU error code is
  20727. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20728. </para>
  20729. <para>
  20730. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  20731. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  20732. reached. At each level, each texel in the halved mipmap level is an average
  20733. of the corresponding eight texels in the larger mipmap level. (If exactly
  20734. one of the dimensions is 1, four texels are averaged. If exactly two of the
  20735. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20736. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  20737. <i>max</i> is larger than the highest mipmap level for the texture of the
  20738. specified size, then a GLU error code is returned (see
  20739. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  20740. </para>
  20741. <para>
  20742. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  20743. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  20744. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  20745. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  20746. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  20747. returned and nothing is loaded since <i>max</i> is larger than the highest
  20748. mipmap level which is, in this case, 6.
  20749. </para>
  20750. <para>
  20751. The highest mipmap level can be derived from the formula
  20752. <c>log2(max(width,height,depth)*(2^level))</c>.
  20753. </para>
  20754. <para>
  20755. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  20756. the acceptable values for <i>format</i> parameter. See the
  20757. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  20758. acceptable values for <i>type</i> parameter.
  20759. </para>
  20760. <para>
  20761. <b>NOTES</b>
  20762. </para>
  20763. <para>
  20764. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  20765. greater.
  20766. </para>
  20767. <para>
  20768. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  20769. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20770. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20771. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20772. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20773. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20774. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20775. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20777. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20778. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20779. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  20780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  20781. version is 1.2 or greater.
  20782. </para>
  20783. <para>
  20784. <b>ERRORS</b>
  20785. </para>
  20786. <para>
  20787. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  20788. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  20789. highest mipmap level for <i>data</i>.
  20790. </para>
  20791. <para>
  20792. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  20793. or <i>depth</i> is &lt; 1.
  20794. </para>
  20795. <para>
  20796. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  20797. <i>format</i>, or <i>type</i> is not legal.
  20798. </para>
  20799. <para>
  20800. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20801. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  20802. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  20803. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20804. </para>
  20805. <para>
  20806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20807. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  20808. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  20809. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  20810. </para>
  20811. <para>
  20812. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20813. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  20814. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  20815. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20816. </para>
  20817. <para>
  20818. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20819. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  20820. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  20821. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20822. </para>
  20823. <para>
  20824. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20825. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  20826. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  20827. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20828. </para>
  20829. <para>
  20830. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  20831. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  20832. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  20833. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  20834. </para>
  20835. </remarks>
  20836. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20837. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20838. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  20839. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20840. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20841. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20842. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20843. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20844. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20845. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20846. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  20847. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  20848. </member>
  20849. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:])">
  20850. <summary>
  20851. Builds a subset of three-dimensional mipmap.
  20852. </summary>
  20853. <param name="target">
  20854. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  20855. </param>
  20856. <param name="internalFormat">
  20857. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  20858. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20859. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  20860. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  20861. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  20862. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  20863. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  20864. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  20865. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  20866. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  20867. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  20868. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  20869. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  20870. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  20871. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  20872. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  20873. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  20874. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  20875. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  20876. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  20877. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  20878. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  20879. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  20880. </param>
  20881. <param name="width">
  20882. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  20883. </param>
  20884. <param name="height">
  20885. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  20886. </param>
  20887. <param name="depth">
  20888. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  20889. </param>
  20890. <param name="format">
  20891. Specifies the format of the pixel data. Must be one of
  20892. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  20893. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  20894. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  20895. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  20896. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  20897. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  20898. </param>
  20899. <param name="type">
  20900. Specifies the data type for <i>data</i>. Must be one of
  20901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  20902. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  20903. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  20904. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  20905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20908. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  20916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  20917. </param>
  20918. <param name="level">
  20919. Specifies the mipmap level of the image data.
  20920. </param>
  20921. <param name="min">
  20922. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  20923. </param>
  20924. <param name="max">
  20925. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  20926. </param>
  20927. <param name="data">
  20928. Specifies a pointer to the image data in memory.
  20929. </param>
  20930. <returns>
  20931. A return value of zero indicates success, otherwise a GLU error code is
  20932. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20933. </returns>
  20934. <remarks>
  20935. <para>
  20936. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  20937. three-dimensional texture maps of decreasing resolutions called a mipmap.
  20938. This is used for the antialiasing of texture mapped primitives.
  20939. </para>
  20940. <para>
  20941. A return value of zero indicates success, otherwise a GLU error code is
  20942. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  20943. </para>
  20944. <para>
  20945. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  20946. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  20947. reached. At each level, each texel in the halved mipmap level is an average
  20948. of the corresponding eight texels in the larger mipmap level. (If exactly
  20949. one of the dimensions is 1, four texels are averaged. If exactly two of the
  20950. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  20951. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  20952. <i>max</i> is larger than the highest mipmap level for the texture of the
  20953. specified size, then a GLU error code is returned (see
  20954. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  20955. </para>
  20956. <para>
  20957. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  20958. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  20959. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  20960. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  20961. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  20962. returned and nothing is loaded since <i>max</i> is larger than the highest
  20963. mipmap level which is, in this case, 6.
  20964. </para>
  20965. <para>
  20966. The highest mipmap level can be derived from the formula
  20967. <c>log2(max(width,height,depth)*(2^level))</c>.
  20968. </para>
  20969. <para>
  20970. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  20971. the acceptable values for <i>format</i> parameter. See the
  20972. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  20973. acceptable values for <i>type</i> parameter.
  20974. </para>
  20975. <para>
  20976. <b>NOTES</b>
  20977. </para>
  20978. <para>
  20979. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  20980. greater.
  20981. </para>
  20982. <para>
  20983. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  20984. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  20985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  20986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  20987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  20988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  20989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  20990. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  20991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  20992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  20993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  20994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  20995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  20996. version is 1.2 or greater.
  20997. </para>
  20998. <para>
  20999. <b>ERRORS</b>
  21000. </para>
  21001. <para>
  21002. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  21003. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  21004. highest mipmap level for <i>data</i>.
  21005. </para>
  21006. <para>
  21007. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  21008. or <i>depth</i> is &lt; 1.
  21009. </para>
  21010. <para>
  21011. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  21012. <i>format</i>, or <i>type</i> is not legal.
  21013. </para>
  21014. <para>
  21015. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21016. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  21017. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  21018. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21019. </para>
  21020. <para>
  21021. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21022. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  21023. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  21024. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21025. </para>
  21026. <para>
  21027. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21028. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  21029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  21030. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21031. </para>
  21032. <para>
  21033. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21034. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  21035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  21036. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21037. </para>
  21038. <para>
  21039. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21040. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  21041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  21042. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21043. </para>
  21044. <para>
  21045. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21046. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  21047. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  21048. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21049. </para>
  21050. </remarks>
  21051. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21052. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21053. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  21054. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21055. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21056. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21057. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21058. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21059. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21060. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21061. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21062. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  21063. </member>
  21064. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:,0:])">
  21065. <summary>
  21066. Builds a subset of three-dimensional mipmap.
  21067. </summary>
  21068. <param name="target">
  21069. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  21070. </param>
  21071. <param name="internalFormat">
  21072. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  21073. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21074. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  21075. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  21076. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  21077. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  21078. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  21079. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  21080. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  21081. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  21082. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  21083. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  21084. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  21085. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  21086. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  21087. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  21088. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  21089. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  21090. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  21091. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  21092. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  21093. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  21094. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  21095. </param>
  21096. <param name="width">
  21097. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  21098. </param>
  21099. <param name="height">
  21100. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  21101. </param>
  21102. <param name="depth">
  21103. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  21104. </param>
  21105. <param name="format">
  21106. Specifies the format of the pixel data. Must be one of
  21107. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  21108. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  21109. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21110. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  21111. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  21112. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  21113. </param>
  21114. <param name="type">
  21115. Specifies the data type for <i>data</i>. Must be one of
  21116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  21117. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  21118. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  21119. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  21120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21122. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21123. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21124. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21125. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21127. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21128. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21129. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21130. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  21131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  21132. </param>
  21133. <param name="level">
  21134. Specifies the mipmap level of the image data.
  21135. </param>
  21136. <param name="min">
  21137. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21138. </param>
  21139. <param name="max">
  21140. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21141. </param>
  21142. <param name="data">
  21143. Specifies a pointer to the image data in memory.
  21144. </param>
  21145. <returns>
  21146. A return value of zero indicates success, otherwise a GLU error code is
  21147. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21148. </returns>
  21149. <remarks>
  21150. <para>
  21151. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  21152. three-dimensional texture maps of decreasing resolutions called a mipmap.
  21153. This is used for the antialiasing of texture mapped primitives.
  21154. </para>
  21155. <para>
  21156. A return value of zero indicates success, otherwise a GLU error code is
  21157. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21158. </para>
  21159. <para>
  21160. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  21161. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  21162. reached. At each level, each texel in the halved mipmap level is an average
  21163. of the corresponding eight texels in the larger mipmap level. (If exactly
  21164. one of the dimensions is 1, four texels are averaged. If exactly two of the
  21165. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21166. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  21167. <i>max</i> is larger than the highest mipmap level for the texture of the
  21168. specified size, then a GLU error code is returned (see
  21169. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  21170. </para>
  21171. <para>
  21172. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  21173. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  21174. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  21175. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  21176. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  21177. returned and nothing is loaded since <i>max</i> is larger than the highest
  21178. mipmap level which is, in this case, 6.
  21179. </para>
  21180. <para>
  21181. The highest mipmap level can be derived from the formula
  21182. <c>log2(max(width,height,depth)*(2^level))</c>.
  21183. </para>
  21184. <para>
  21185. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  21186. the acceptable values for <i>format</i> parameter. See the
  21187. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  21188. acceptable values for <i>type</i> parameter.
  21189. </para>
  21190. <para>
  21191. <b>NOTES</b>
  21192. </para>
  21193. <para>
  21194. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  21195. greater.
  21196. </para>
  21197. <para>
  21198. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  21199. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21200. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21201. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21202. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21203. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21204. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21205. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21206. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21207. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21208. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  21210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  21211. version is 1.2 or greater.
  21212. </para>
  21213. <para>
  21214. <b>ERRORS</b>
  21215. </para>
  21216. <para>
  21217. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  21218. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  21219. highest mipmap level for <i>data</i>.
  21220. </para>
  21221. <para>
  21222. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  21223. or <i>depth</i> is &lt; 1.
  21224. </para>
  21225. <para>
  21226. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  21227. <i>format</i>, or <i>type</i> is not legal.
  21228. </para>
  21229. <para>
  21230. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21231. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  21232. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  21233. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21234. </para>
  21235. <para>
  21236. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21237. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  21238. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  21239. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21240. </para>
  21241. <para>
  21242. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21243. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  21244. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  21245. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21246. </para>
  21247. <para>
  21248. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21249. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  21250. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  21251. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21252. </para>
  21253. <para>
  21254. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21255. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  21256. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  21257. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21258. </para>
  21259. <para>
  21260. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  21262. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  21263. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21264. </para>
  21265. </remarks>
  21266. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21267. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21268. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  21269. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21270. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21271. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21272. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21273. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21274. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21275. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21276. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21277. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  21278. </member>
  21279. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[])">
  21280. <summary>
  21281. Builds a subset of three-dimensional mipmap.
  21282. </summary>
  21283. <param name="target">
  21284. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  21285. </param>
  21286. <param name="internalFormat">
  21287. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  21288. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21289. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  21290. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  21291. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  21292. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  21293. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  21294. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  21295. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  21296. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  21297. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  21298. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  21299. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  21300. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  21301. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  21302. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  21303. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  21304. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  21305. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  21306. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  21307. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  21308. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  21309. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  21310. </param>
  21311. <param name="width">
  21312. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  21313. </param>
  21314. <param name="height">
  21315. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  21316. </param>
  21317. <param name="depth">
  21318. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  21319. </param>
  21320. <param name="format">
  21321. Specifies the format of the pixel data. Must be one of
  21322. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  21323. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  21324. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21325. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  21326. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  21327. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  21328. </param>
  21329. <param name="type">
  21330. Specifies the data type for <i>data</i>. Must be one of
  21331. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  21332. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  21333. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  21334. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  21335. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21336. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21337. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21338. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21339. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21342. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21343. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  21346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  21347. </param>
  21348. <param name="level">
  21349. Specifies the mipmap level of the image data.
  21350. </param>
  21351. <param name="min">
  21352. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21353. </param>
  21354. <param name="max">
  21355. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21356. </param>
  21357. <param name="data">
  21358. Specifies a pointer to the image data in memory.
  21359. </param>
  21360. <returns>
  21361. A return value of zero indicates success, otherwise a GLU error code is
  21362. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21363. </returns>
  21364. <remarks>
  21365. <para>
  21366. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  21367. three-dimensional texture maps of decreasing resolutions called a mipmap.
  21368. This is used for the antialiasing of texture mapped primitives.
  21369. </para>
  21370. <para>
  21371. A return value of zero indicates success, otherwise a GLU error code is
  21372. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21373. </para>
  21374. <para>
  21375. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  21376. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  21377. reached. At each level, each texel in the halved mipmap level is an average
  21378. of the corresponding eight texels in the larger mipmap level. (If exactly
  21379. one of the dimensions is 1, four texels are averaged. If exactly two of the
  21380. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21381. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  21382. <i>max</i> is larger than the highest mipmap level for the texture of the
  21383. specified size, then a GLU error code is returned (see
  21384. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  21385. </para>
  21386. <para>
  21387. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  21388. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  21389. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  21390. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  21391. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  21392. returned and nothing is loaded since <i>max</i> is larger than the highest
  21393. mipmap level which is, in this case, 6.
  21394. </para>
  21395. <para>
  21396. The highest mipmap level can be derived from the formula
  21397. <c>log2(max(width,height,depth)*(2^level))</c>.
  21398. </para>
  21399. <para>
  21400. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  21401. the acceptable values for <i>format</i> parameter. See the
  21402. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  21403. acceptable values for <i>type</i> parameter.
  21404. </para>
  21405. <para>
  21406. <b>NOTES</b>
  21407. </para>
  21408. <para>
  21409. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  21410. greater.
  21411. </para>
  21412. <para>
  21413. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  21414. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21415. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21416. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21419. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21420. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  21425. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  21426. version is 1.2 or greater.
  21427. </para>
  21428. <para>
  21429. <b>ERRORS</b>
  21430. </para>
  21431. <para>
  21432. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  21433. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  21434. highest mipmap level for <i>data</i>.
  21435. </para>
  21436. <para>
  21437. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  21438. or <i>depth</i> is &lt; 1.
  21439. </para>
  21440. <para>
  21441. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  21442. <i>format</i>, or <i>type</i> is not legal.
  21443. </para>
  21444. <para>
  21445. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21446. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  21447. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  21448. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21449. </para>
  21450. <para>
  21451. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21452. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  21453. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  21454. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21455. </para>
  21456. <para>
  21457. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21458. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  21459. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  21460. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21461. </para>
  21462. <para>
  21463. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21464. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  21465. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  21466. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21467. </para>
  21468. <para>
  21469. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21470. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  21471. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  21472. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21473. </para>
  21474. <para>
  21475. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21476. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  21477. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  21478. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21479. </para>
  21480. </remarks>
  21481. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21482. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21483. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  21484. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21485. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21486. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21487. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21488. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21489. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21490. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21491. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21492. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  21493. </member>
  21494. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:])">
  21495. <summary>
  21496. Builds a subset of three-dimensional mipmap.
  21497. </summary>
  21498. <param name="target">
  21499. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  21500. </param>
  21501. <param name="internalFormat">
  21502. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  21503. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21504. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  21505. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  21506. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  21507. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  21508. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  21509. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  21510. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  21511. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  21512. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  21513. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  21514. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  21515. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  21516. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  21517. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  21518. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  21519. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  21520. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  21521. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  21522. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  21523. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  21524. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  21525. </param>
  21526. <param name="width">
  21527. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  21528. </param>
  21529. <param name="height">
  21530. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  21531. </param>
  21532. <param name="depth">
  21533. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  21534. </param>
  21535. <param name="format">
  21536. Specifies the format of the pixel data. Must be one of
  21537. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  21538. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  21539. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21540. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  21541. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  21542. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  21543. </param>
  21544. <param name="type">
  21545. Specifies the data type for <i>data</i>. Must be one of
  21546. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  21547. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  21548. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  21549. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  21550. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21551. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21552. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21553. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21554. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21555. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21557. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21558. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21559. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21560. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  21561. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  21562. </param>
  21563. <param name="level">
  21564. Specifies the mipmap level of the image data.
  21565. </param>
  21566. <param name="min">
  21567. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21568. </param>
  21569. <param name="max">
  21570. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21571. </param>
  21572. <param name="data">
  21573. Specifies a pointer to the image data in memory.
  21574. </param>
  21575. <returns>
  21576. A return value of zero indicates success, otherwise a GLU error code is
  21577. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21578. </returns>
  21579. <remarks>
  21580. <para>
  21581. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  21582. three-dimensional texture maps of decreasing resolutions called a mipmap.
  21583. This is used for the antialiasing of texture mapped primitives.
  21584. </para>
  21585. <para>
  21586. A return value of zero indicates success, otherwise a GLU error code is
  21587. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21588. </para>
  21589. <para>
  21590. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  21591. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  21592. reached. At each level, each texel in the halved mipmap level is an average
  21593. of the corresponding eight texels in the larger mipmap level. (If exactly
  21594. one of the dimensions is 1, four texels are averaged. If exactly two of the
  21595. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21596. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  21597. <i>max</i> is larger than the highest mipmap level for the texture of the
  21598. specified size, then a GLU error code is returned (see
  21599. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  21600. </para>
  21601. <para>
  21602. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  21603. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  21604. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  21605. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  21606. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  21607. returned and nothing is loaded since <i>max</i> is larger than the highest
  21608. mipmap level which is, in this case, 6.
  21609. </para>
  21610. <para>
  21611. The highest mipmap level can be derived from the formula
  21612. <c>log2(max(width,height,depth)*(2^level))</c>.
  21613. </para>
  21614. <para>
  21615. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  21616. the acceptable values for <i>format</i> parameter. See the
  21617. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  21618. acceptable values for <i>type</i> parameter.
  21619. </para>
  21620. <para>
  21621. <b>NOTES</b>
  21622. </para>
  21623. <para>
  21624. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  21625. greater.
  21626. </para>
  21627. <para>
  21628. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  21629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21631. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21632. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21633. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21634. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21637. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21638. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21639. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  21640. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  21641. version is 1.2 or greater.
  21642. </para>
  21643. <para>
  21644. <b>ERRORS</b>
  21645. </para>
  21646. <para>
  21647. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  21648. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  21649. highest mipmap level for <i>data</i>.
  21650. </para>
  21651. <para>
  21652. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  21653. or <i>depth</i> is &lt; 1.
  21654. </para>
  21655. <para>
  21656. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  21657. <i>format</i>, or <i>type</i> is not legal.
  21658. </para>
  21659. <para>
  21660. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21661. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  21662. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  21663. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21664. </para>
  21665. <para>
  21666. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21667. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  21668. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  21669. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21670. </para>
  21671. <para>
  21672. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21673. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  21674. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  21675. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21676. </para>
  21677. <para>
  21678. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21679. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  21680. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  21681. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21682. </para>
  21683. <para>
  21684. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21685. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  21686. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  21687. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21688. </para>
  21689. <para>
  21690. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21691. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  21692. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  21693. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21694. </para>
  21695. </remarks>
  21696. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21697. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21698. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  21699. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21700. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21701. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21702. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21703. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21704. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21705. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21706. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21707. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  21708. </member>
  21709. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:,0:])">
  21710. <summary>
  21711. Builds a subset of three-dimensional mipmap.
  21712. </summary>
  21713. <param name="target">
  21714. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  21715. </param>
  21716. <param name="internalFormat">
  21717. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  21718. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21719. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  21720. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  21721. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  21722. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  21723. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  21724. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  21725. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  21726. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  21727. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  21728. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  21729. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  21730. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  21731. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  21732. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  21733. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  21734. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  21735. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  21736. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  21737. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  21738. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  21739. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  21740. </param>
  21741. <param name="width">
  21742. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  21743. </param>
  21744. <param name="height">
  21745. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  21746. </param>
  21747. <param name="depth">
  21748. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  21749. </param>
  21750. <param name="format">
  21751. Specifies the format of the pixel data. Must be one of
  21752. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  21753. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  21754. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21755. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  21756. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  21757. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  21758. </param>
  21759. <param name="type">
  21760. Specifies the data type for <i>data</i>. Must be one of
  21761. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  21762. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  21763. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  21764. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  21765. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21766. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21767. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21768. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21769. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21770. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21771. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21772. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21773. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21774. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21775. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  21776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  21777. </param>
  21778. <param name="level">
  21779. Specifies the mipmap level of the image data.
  21780. </param>
  21781. <param name="min">
  21782. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21783. </param>
  21784. <param name="max">
  21785. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21786. </param>
  21787. <param name="data">
  21788. Specifies a pointer to the image data in memory.
  21789. </param>
  21790. <returns>
  21791. A return value of zero indicates success, otherwise a GLU error code is
  21792. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21793. </returns>
  21794. <remarks>
  21795. <para>
  21796. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  21797. three-dimensional texture maps of decreasing resolutions called a mipmap.
  21798. This is used for the antialiasing of texture mapped primitives.
  21799. </para>
  21800. <para>
  21801. A return value of zero indicates success, otherwise a GLU error code is
  21802. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  21803. </para>
  21804. <para>
  21805. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  21806. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  21807. reached. At each level, each texel in the halved mipmap level is an average
  21808. of the corresponding eight texels in the larger mipmap level. (If exactly
  21809. one of the dimensions is 1, four texels are averaged. If exactly two of the
  21810. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21811. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  21812. <i>max</i> is larger than the highest mipmap level for the texture of the
  21813. specified size, then a GLU error code is returned (see
  21814. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  21815. </para>
  21816. <para>
  21817. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  21818. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  21819. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  21820. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  21821. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  21822. returned and nothing is loaded since <i>max</i> is larger than the highest
  21823. mipmap level which is, in this case, 6.
  21824. </para>
  21825. <para>
  21826. The highest mipmap level can be derived from the formula
  21827. <c>log2(max(width,height,depth)*(2^level))</c>.
  21828. </para>
  21829. <para>
  21830. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  21831. the acceptable values for <i>format</i> parameter. See the
  21832. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  21833. acceptable values for <i>type</i> parameter.
  21834. </para>
  21835. <para>
  21836. <b>NOTES</b>
  21837. </para>
  21838. <para>
  21839. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  21840. greater.
  21841. </para>
  21842. <para>
  21843. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  21844. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21845. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21846. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21847. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21848. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21849. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21850. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21851. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21852. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21853. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21854. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  21855. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  21856. version is 1.2 or greater.
  21857. </para>
  21858. <para>
  21859. <b>ERRORS</b>
  21860. </para>
  21861. <para>
  21862. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  21863. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  21864. highest mipmap level for <i>data</i>.
  21865. </para>
  21866. <para>
  21867. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  21868. or <i>depth</i> is &lt; 1.
  21869. </para>
  21870. <para>
  21871. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  21872. <i>format</i>, or <i>type</i> is not legal.
  21873. </para>
  21874. <para>
  21875. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21876. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  21877. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  21878. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21879. </para>
  21880. <para>
  21881. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21882. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  21883. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  21884. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  21885. </para>
  21886. <para>
  21887. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21888. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  21889. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  21890. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21891. </para>
  21892. <para>
  21893. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21894. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  21895. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  21896. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21897. </para>
  21898. <para>
  21899. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21900. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  21901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  21902. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21903. </para>
  21904. <para>
  21905. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  21906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  21907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  21908. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  21909. </para>
  21910. </remarks>
  21911. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21912. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21913. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  21914. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21915. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21916. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  21917. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21918. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21919. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21920. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21921. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  21922. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  21923. </member>
  21924. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[])">
  21925. <summary>
  21926. Builds a subset of three-dimensional mipmap.
  21927. </summary>
  21928. <param name="target">
  21929. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  21930. </param>
  21931. <param name="internalFormat">
  21932. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  21933. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21934. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  21935. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  21936. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  21937. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  21938. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  21939. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  21940. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  21941. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  21942. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  21943. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  21944. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  21945. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  21946. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  21947. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  21948. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  21949. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  21950. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  21951. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  21952. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  21953. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  21954. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  21955. </param>
  21956. <param name="width">
  21957. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  21958. </param>
  21959. <param name="height">
  21960. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  21961. </param>
  21962. <param name="depth">
  21963. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  21964. </param>
  21965. <param name="format">
  21966. Specifies the format of the pixel data. Must be one of
  21967. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  21968. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  21969. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  21970. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  21971. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  21972. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  21973. </param>
  21974. <param name="type">
  21975. Specifies the data type for <i>data</i>. Must be one of
  21976. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  21977. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  21978. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  21979. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  21980. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  21981. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  21982. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  21983. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  21984. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  21985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  21986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  21987. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  21988. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  21989. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  21990. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  21991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  21992. </param>
  21993. <param name="level">
  21994. Specifies the mipmap level of the image data.
  21995. </param>
  21996. <param name="min">
  21997. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  21998. </param>
  21999. <param name="max">
  22000. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22001. </param>
  22002. <param name="data">
  22003. Specifies a pointer to the image data in memory.
  22004. </param>
  22005. <returns>
  22006. A return value of zero indicates success, otherwise a GLU error code is
  22007. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22008. </returns>
  22009. <remarks>
  22010. <para>
  22011. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  22012. three-dimensional texture maps of decreasing resolutions called a mipmap.
  22013. This is used for the antialiasing of texture mapped primitives.
  22014. </para>
  22015. <para>
  22016. A return value of zero indicates success, otherwise a GLU error code is
  22017. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22018. </para>
  22019. <para>
  22020. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  22021. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  22022. reached. At each level, each texel in the halved mipmap level is an average
  22023. of the corresponding eight texels in the larger mipmap level. (If exactly
  22024. one of the dimensions is 1, four texels are averaged. If exactly two of the
  22025. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22026. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  22027. <i>max</i> is larger than the highest mipmap level for the texture of the
  22028. specified size, then a GLU error code is returned (see
  22029. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  22030. </para>
  22031. <para>
  22032. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  22033. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  22034. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  22035. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  22036. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  22037. returned and nothing is loaded since <i>max</i> is larger than the highest
  22038. mipmap level which is, in this case, 6.
  22039. </para>
  22040. <para>
  22041. The highest mipmap level can be derived from the formula
  22042. <c>log2(max(width,height,depth)*(2^level))</c>.
  22043. </para>
  22044. <para>
  22045. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  22046. the acceptable values for <i>format</i> parameter. See the
  22047. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  22048. acceptable values for <i>type</i> parameter.
  22049. </para>
  22050. <para>
  22051. <b>NOTES</b>
  22052. </para>
  22053. <para>
  22054. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  22055. greater.
  22056. </para>
  22057. <para>
  22058. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  22059. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22060. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22061. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22062. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22063. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22064. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22065. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22066. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22067. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22068. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22069. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  22070. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  22071. version is 1.2 or greater.
  22072. </para>
  22073. <para>
  22074. <b>ERRORS</b>
  22075. </para>
  22076. <para>
  22077. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  22078. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  22079. highest mipmap level for <i>data</i>.
  22080. </para>
  22081. <para>
  22082. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  22083. or <i>depth</i> is &lt; 1.
  22084. </para>
  22085. <para>
  22086. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  22087. <i>format</i>, or <i>type</i> is not legal.
  22088. </para>
  22089. <para>
  22090. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22091. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  22092. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  22093. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22094. </para>
  22095. <para>
  22096. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22097. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  22098. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  22099. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22100. </para>
  22101. <para>
  22102. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22103. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  22104. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  22105. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22106. </para>
  22107. <para>
  22108. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22109. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  22110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  22111. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22112. </para>
  22113. <para>
  22114. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  22116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  22117. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22118. </para>
  22119. <para>
  22120. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  22122. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  22123. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22124. </para>
  22125. </remarks>
  22126. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22127. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22128. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  22129. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22130. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22131. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22132. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22133. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22134. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22135. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22136. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22137. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  22138. </member>
  22139. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:])">
  22140. <summary>
  22141. Builds a subset of three-dimensional mipmap.
  22142. </summary>
  22143. <param name="target">
  22144. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  22145. </param>
  22146. <param name="internalFormat">
  22147. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  22148. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22149. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  22150. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  22151. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  22152. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  22153. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  22154. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  22155. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  22156. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  22157. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  22158. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  22159. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  22160. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  22161. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  22162. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  22163. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  22164. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  22165. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  22166. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  22167. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  22168. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  22169. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  22170. </param>
  22171. <param name="width">
  22172. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  22173. </param>
  22174. <param name="height">
  22175. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  22176. </param>
  22177. <param name="depth">
  22178. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  22179. </param>
  22180. <param name="format">
  22181. Specifies the format of the pixel data. Must be one of
  22182. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  22183. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  22184. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22185. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  22186. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  22187. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  22188. </param>
  22189. <param name="type">
  22190. Specifies the data type for <i>data</i>. Must be one of
  22191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  22192. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  22193. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  22194. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  22195. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22197. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22198. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22199. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22200. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22201. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22202. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22203. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22204. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22205. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  22206. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  22207. </param>
  22208. <param name="level">
  22209. Specifies the mipmap level of the image data.
  22210. </param>
  22211. <param name="min">
  22212. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22213. </param>
  22214. <param name="max">
  22215. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22216. </param>
  22217. <param name="data">
  22218. Specifies a pointer to the image data in memory.
  22219. </param>
  22220. <returns>
  22221. A return value of zero indicates success, otherwise a GLU error code is
  22222. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22223. </returns>
  22224. <remarks>
  22225. <para>
  22226. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  22227. three-dimensional texture maps of decreasing resolutions called a mipmap.
  22228. This is used for the antialiasing of texture mapped primitives.
  22229. </para>
  22230. <para>
  22231. A return value of zero indicates success, otherwise a GLU error code is
  22232. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22233. </para>
  22234. <para>
  22235. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  22236. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  22237. reached. At each level, each texel in the halved mipmap level is an average
  22238. of the corresponding eight texels in the larger mipmap level. (If exactly
  22239. one of the dimensions is 1, four texels are averaged. If exactly two of the
  22240. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22241. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  22242. <i>max</i> is larger than the highest mipmap level for the texture of the
  22243. specified size, then a GLU error code is returned (see
  22244. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  22245. </para>
  22246. <para>
  22247. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  22248. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  22249. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  22250. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  22251. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  22252. returned and nothing is loaded since <i>max</i> is larger than the highest
  22253. mipmap level which is, in this case, 6.
  22254. </para>
  22255. <para>
  22256. The highest mipmap level can be derived from the formula
  22257. <c>log2(max(width,height,depth)*(2^level))</c>.
  22258. </para>
  22259. <para>
  22260. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  22261. the acceptable values for <i>format</i> parameter. See the
  22262. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  22263. acceptable values for <i>type</i> parameter.
  22264. </para>
  22265. <para>
  22266. <b>NOTES</b>
  22267. </para>
  22268. <para>
  22269. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  22270. greater.
  22271. </para>
  22272. <para>
  22273. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  22274. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22275. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22276. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22277. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22278. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22279. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22280. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22281. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22282. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22283. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22284. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  22285. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  22286. version is 1.2 or greater.
  22287. </para>
  22288. <para>
  22289. <b>ERRORS</b>
  22290. </para>
  22291. <para>
  22292. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  22293. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  22294. highest mipmap level for <i>data</i>.
  22295. </para>
  22296. <para>
  22297. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  22298. or <i>depth</i> is &lt; 1.
  22299. </para>
  22300. <para>
  22301. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  22302. <i>format</i>, or <i>type</i> is not legal.
  22303. </para>
  22304. <para>
  22305. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  22307. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  22308. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22309. </para>
  22310. <para>
  22311. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22312. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  22313. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  22314. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22315. </para>
  22316. <para>
  22317. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22318. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  22319. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  22320. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22321. </para>
  22322. <para>
  22323. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22324. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  22325. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  22326. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22327. </para>
  22328. <para>
  22329. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22330. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  22331. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  22332. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22333. </para>
  22334. <para>
  22335. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22336. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  22337. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  22338. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22339. </para>
  22340. </remarks>
  22341. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22342. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22343. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  22344. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22345. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22346. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22347. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22348. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22349. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22350. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22351. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22352. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  22353. </member>
  22354. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:,0:])">
  22355. <summary>
  22356. Builds a subset of three-dimensional mipmap.
  22357. </summary>
  22358. <param name="target">
  22359. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  22360. </param>
  22361. <param name="internalFormat">
  22362. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  22363. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22364. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  22365. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  22366. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  22367. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  22368. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  22369. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  22370. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  22371. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  22372. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  22373. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  22374. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  22375. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  22376. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  22377. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  22378. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  22379. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  22380. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  22381. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  22382. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  22383. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  22384. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  22385. </param>
  22386. <param name="width">
  22387. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  22388. </param>
  22389. <param name="height">
  22390. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  22391. </param>
  22392. <param name="depth">
  22393. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  22394. </param>
  22395. <param name="format">
  22396. Specifies the format of the pixel data. Must be one of
  22397. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  22398. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  22399. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22400. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  22401. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  22402. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  22403. </param>
  22404. <param name="type">
  22405. Specifies the data type for <i>data</i>. Must be one of
  22406. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  22407. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  22408. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  22409. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  22410. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22413. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22414. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22415. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22416. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22417. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22418. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22419. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22420. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  22421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  22422. </param>
  22423. <param name="level">
  22424. Specifies the mipmap level of the image data.
  22425. </param>
  22426. <param name="min">
  22427. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22428. </param>
  22429. <param name="max">
  22430. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22431. </param>
  22432. <param name="data">
  22433. Specifies a pointer to the image data in memory.
  22434. </param>
  22435. <returns>
  22436. A return value of zero indicates success, otherwise a GLU error code is
  22437. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22438. </returns>
  22439. <remarks>
  22440. <para>
  22441. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  22442. three-dimensional texture maps of decreasing resolutions called a mipmap.
  22443. This is used for the antialiasing of texture mapped primitives.
  22444. </para>
  22445. <para>
  22446. A return value of zero indicates success, otherwise a GLU error code is
  22447. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22448. </para>
  22449. <para>
  22450. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  22451. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  22452. reached. At each level, each texel in the halved mipmap level is an average
  22453. of the corresponding eight texels in the larger mipmap level. (If exactly
  22454. one of the dimensions is 1, four texels are averaged. If exactly two of the
  22455. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22456. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  22457. <i>max</i> is larger than the highest mipmap level for the texture of the
  22458. specified size, then a GLU error code is returned (see
  22459. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  22460. </para>
  22461. <para>
  22462. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  22463. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  22464. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  22465. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  22466. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  22467. returned and nothing is loaded since <i>max</i> is larger than the highest
  22468. mipmap level which is, in this case, 6.
  22469. </para>
  22470. <para>
  22471. The highest mipmap level can be derived from the formula
  22472. <c>log2(max(width,height,depth)*(2^level))</c>.
  22473. </para>
  22474. <para>
  22475. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  22476. the acceptable values for <i>format</i> parameter. See the
  22477. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  22478. acceptable values for <i>type</i> parameter.
  22479. </para>
  22480. <para>
  22481. <b>NOTES</b>
  22482. </para>
  22483. <para>
  22484. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  22485. greater.
  22486. </para>
  22487. <para>
  22488. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  22489. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22490. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22491. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22492. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22493. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22494. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22495. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22496. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22497. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22498. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22499. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  22500. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  22501. version is 1.2 or greater.
  22502. </para>
  22503. <para>
  22504. <b>ERRORS</b>
  22505. </para>
  22506. <para>
  22507. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  22508. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  22509. highest mipmap level for <i>data</i>.
  22510. </para>
  22511. <para>
  22512. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  22513. or <i>depth</i> is &lt; 1.
  22514. </para>
  22515. <para>
  22516. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  22517. <i>format</i>, or <i>type</i> is not legal.
  22518. </para>
  22519. <para>
  22520. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  22522. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  22523. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22524. </para>
  22525. <para>
  22526. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22527. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  22528. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  22529. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22530. </para>
  22531. <para>
  22532. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22533. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  22534. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  22535. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22536. </para>
  22537. <para>
  22538. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22539. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  22540. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  22541. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22542. </para>
  22543. <para>
  22544. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  22546. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  22547. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22548. </para>
  22549. <para>
  22550. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22551. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  22552. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  22553. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22554. </para>
  22555. </remarks>
  22556. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22557. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22558. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  22559. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22560. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22561. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22562. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22563. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22564. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22565. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22566. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22567. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  22568. </member>
  22569. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[])">
  22570. <summary>
  22571. Builds a subset of three-dimensional mipmap.
  22572. </summary>
  22573. <param name="target">
  22574. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  22575. </param>
  22576. <param name="internalFormat">
  22577. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  22578. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22579. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  22580. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  22581. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  22582. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  22583. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  22584. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  22585. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  22586. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  22587. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  22588. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  22589. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  22590. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  22591. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  22592. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  22593. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  22594. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  22595. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  22596. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  22597. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  22598. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  22599. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  22600. </param>
  22601. <param name="width">
  22602. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  22603. </param>
  22604. <param name="height">
  22605. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  22606. </param>
  22607. <param name="depth">
  22608. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  22609. </param>
  22610. <param name="format">
  22611. Specifies the format of the pixel data. Must be one of
  22612. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  22613. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  22614. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22615. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  22616. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  22617. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  22618. </param>
  22619. <param name="type">
  22620. Specifies the data type for <i>data</i>. Must be one of
  22621. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  22622. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  22623. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  22624. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  22625. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22626. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22627. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22628. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22629. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22630. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22631. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22632. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22633. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22634. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  22636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  22637. </param>
  22638. <param name="level">
  22639. Specifies the mipmap level of the image data.
  22640. </param>
  22641. <param name="min">
  22642. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22643. </param>
  22644. <param name="max">
  22645. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22646. </param>
  22647. <param name="data">
  22648. Specifies a pointer to the image data in memory.
  22649. </param>
  22650. <returns>
  22651. A return value of zero indicates success, otherwise a GLU error code is
  22652. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22653. </returns>
  22654. <remarks>
  22655. <para>
  22656. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  22657. three-dimensional texture maps of decreasing resolutions called a mipmap.
  22658. This is used for the antialiasing of texture mapped primitives.
  22659. </para>
  22660. <para>
  22661. A return value of zero indicates success, otherwise a GLU error code is
  22662. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22663. </para>
  22664. <para>
  22665. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  22666. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  22667. reached. At each level, each texel in the halved mipmap level is an average
  22668. of the corresponding eight texels in the larger mipmap level. (If exactly
  22669. one of the dimensions is 1, four texels are averaged. If exactly two of the
  22670. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22671. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  22672. <i>max</i> is larger than the highest mipmap level for the texture of the
  22673. specified size, then a GLU error code is returned (see
  22674. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  22675. </para>
  22676. <para>
  22677. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  22678. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  22679. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  22680. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  22681. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  22682. returned and nothing is loaded since <i>max</i> is larger than the highest
  22683. mipmap level which is, in this case, 6.
  22684. </para>
  22685. <para>
  22686. The highest mipmap level can be derived from the formula
  22687. <c>log2(max(width,height,depth)*(2^level))</c>.
  22688. </para>
  22689. <para>
  22690. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  22691. the acceptable values for <i>format</i> parameter. See the
  22692. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  22693. acceptable values for <i>type</i> parameter.
  22694. </para>
  22695. <para>
  22696. <b>NOTES</b>
  22697. </para>
  22698. <para>
  22699. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  22700. greater.
  22701. </para>
  22702. <para>
  22703. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  22704. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22705. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22707. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22708. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22709. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22713. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22714. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  22715. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  22716. version is 1.2 or greater.
  22717. </para>
  22718. <para>
  22719. <b>ERRORS</b>
  22720. </para>
  22721. <para>
  22722. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  22723. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  22724. highest mipmap level for <i>data</i>.
  22725. </para>
  22726. <para>
  22727. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  22728. or <i>depth</i> is &lt; 1.
  22729. </para>
  22730. <para>
  22731. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  22732. <i>format</i>, or <i>type</i> is not legal.
  22733. </para>
  22734. <para>
  22735. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22736. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  22737. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  22738. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22739. </para>
  22740. <para>
  22741. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22742. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  22743. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  22744. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22745. </para>
  22746. <para>
  22747. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22748. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  22749. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  22750. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22751. </para>
  22752. <para>
  22753. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22754. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  22755. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  22756. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22757. </para>
  22758. <para>
  22759. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22760. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  22761. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  22762. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22763. </para>
  22764. <para>
  22765. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22766. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  22767. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  22768. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22769. </para>
  22770. </remarks>
  22771. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22772. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22773. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  22774. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22775. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22776. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22777. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22778. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22779. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22780. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22781. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22782. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  22783. </member>
  22784. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:])">
  22785. <summary>
  22786. Builds a subset of three-dimensional mipmap.
  22787. </summary>
  22788. <param name="target">
  22789. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  22790. </param>
  22791. <param name="internalFormat">
  22792. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  22793. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22794. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  22795. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  22796. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  22797. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  22798. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  22799. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  22800. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  22801. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  22802. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  22803. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  22804. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  22805. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  22806. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  22807. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  22808. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  22809. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  22810. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  22811. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  22812. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  22813. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  22814. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  22815. </param>
  22816. <param name="width">
  22817. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  22818. </param>
  22819. <param name="height">
  22820. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  22821. </param>
  22822. <param name="depth">
  22823. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  22824. </param>
  22825. <param name="format">
  22826. Specifies the format of the pixel data. Must be one of
  22827. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  22828. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  22829. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  22830. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  22831. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  22832. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  22833. </param>
  22834. <param name="type">
  22835. Specifies the data type for <i>data</i>. Must be one of
  22836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  22837. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  22838. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  22839. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  22840. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22843. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22844. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22845. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22846. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22847. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22848. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22849. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22850. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  22851. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  22852. </param>
  22853. <param name="level">
  22854. Specifies the mipmap level of the image data.
  22855. </param>
  22856. <param name="min">
  22857. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22858. </param>
  22859. <param name="max">
  22860. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  22861. </param>
  22862. <param name="data">
  22863. Specifies a pointer to the image data in memory.
  22864. </param>
  22865. <returns>
  22866. A return value of zero indicates success, otherwise a GLU error code is
  22867. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22868. </returns>
  22869. <remarks>
  22870. <para>
  22871. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  22872. three-dimensional texture maps of decreasing resolutions called a mipmap.
  22873. This is used for the antialiasing of texture mapped primitives.
  22874. </para>
  22875. <para>
  22876. A return value of zero indicates success, otherwise a GLU error code is
  22877. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  22878. </para>
  22879. <para>
  22880. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  22881. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  22882. reached. At each level, each texel in the halved mipmap level is an average
  22883. of the corresponding eight texels in the larger mipmap level. (If exactly
  22884. one of the dimensions is 1, four texels are averaged. If exactly two of the
  22885. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22886. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  22887. <i>max</i> is larger than the highest mipmap level for the texture of the
  22888. specified size, then a GLU error code is returned (see
  22889. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  22890. </para>
  22891. <para>
  22892. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  22893. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  22894. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  22895. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  22896. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  22897. returned and nothing is loaded since <i>max</i> is larger than the highest
  22898. mipmap level which is, in this case, 6.
  22899. </para>
  22900. <para>
  22901. The highest mipmap level can be derived from the formula
  22902. <c>log2(max(width,height,depth)*(2^level))</c>.
  22903. </para>
  22904. <para>
  22905. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  22906. the acceptable values for <i>format</i> parameter. See the
  22907. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  22908. acceptable values for <i>type</i> parameter.
  22909. </para>
  22910. <para>
  22911. <b>NOTES</b>
  22912. </para>
  22913. <para>
  22914. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  22915. greater.
  22916. </para>
  22917. <para>
  22918. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  22919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  22920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  22921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  22922. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  22923. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  22924. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  22925. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  22926. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  22927. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  22928. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  22929. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  22930. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  22931. version is 1.2 or greater.
  22932. </para>
  22933. <para>
  22934. <b>ERRORS</b>
  22935. </para>
  22936. <para>
  22937. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  22938. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  22939. highest mipmap level for <i>data</i>.
  22940. </para>
  22941. <para>
  22942. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  22943. or <i>depth</i> is &lt; 1.
  22944. </para>
  22945. <para>
  22946. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  22947. <i>format</i>, or <i>type</i> is not legal.
  22948. </para>
  22949. <para>
  22950. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22951. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  22952. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  22953. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22954. </para>
  22955. <para>
  22956. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22957. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  22958. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  22959. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  22960. </para>
  22961. <para>
  22962. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22963. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  22964. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  22965. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22966. </para>
  22967. <para>
  22968. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22969. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  22970. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  22971. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22972. </para>
  22973. <para>
  22974. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22975. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  22976. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  22977. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22978. </para>
  22979. <para>
  22980. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  22981. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  22982. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  22983. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  22984. </para>
  22985. </remarks>
  22986. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22987. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22988. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  22989. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22990. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22991. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  22992. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22993. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22994. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22995. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22996. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  22997. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  22998. </member>
  22999. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:,0:])">
  23000. <summary>
  23001. Builds a subset of three-dimensional mipmap.
  23002. </summary>
  23003. <param name="target">
  23004. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  23005. </param>
  23006. <param name="internalFormat">
  23007. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  23008. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23009. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  23010. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  23011. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  23012. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  23013. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  23014. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  23015. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  23016. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  23017. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  23018. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  23019. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  23020. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  23021. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  23022. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  23023. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  23024. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  23025. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  23026. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  23027. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  23028. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  23029. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  23030. </param>
  23031. <param name="width">
  23032. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  23033. </param>
  23034. <param name="height">
  23035. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  23036. </param>
  23037. <param name="depth">
  23038. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  23039. </param>
  23040. <param name="format">
  23041. Specifies the format of the pixel data. Must be one of
  23042. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  23043. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  23044. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23045. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  23046. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  23047. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  23048. </param>
  23049. <param name="type">
  23050. Specifies the data type for <i>data</i>. Must be one of
  23051. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  23052. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  23053. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  23054. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  23055. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23056. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23057. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23058. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23059. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23060. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23061. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23062. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23063. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23064. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23065. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  23066. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  23067. </param>
  23068. <param name="level">
  23069. Specifies the mipmap level of the image data.
  23070. </param>
  23071. <param name="min">
  23072. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23073. </param>
  23074. <param name="max">
  23075. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23076. </param>
  23077. <param name="data">
  23078. Specifies a pointer to the image data in memory.
  23079. </param>
  23080. <returns>
  23081. A return value of zero indicates success, otherwise a GLU error code is
  23082. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23083. </returns>
  23084. <remarks>
  23085. <para>
  23086. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  23087. three-dimensional texture maps of decreasing resolutions called a mipmap.
  23088. This is used for the antialiasing of texture mapped primitives.
  23089. </para>
  23090. <para>
  23091. A return value of zero indicates success, otherwise a GLU error code is
  23092. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23093. </para>
  23094. <para>
  23095. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  23096. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  23097. reached. At each level, each texel in the halved mipmap level is an average
  23098. of the corresponding eight texels in the larger mipmap level. (If exactly
  23099. one of the dimensions is 1, four texels are averaged. If exactly two of the
  23100. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23101. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  23102. <i>max</i> is larger than the highest mipmap level for the texture of the
  23103. specified size, then a GLU error code is returned (see
  23104. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  23105. </para>
  23106. <para>
  23107. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  23108. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  23109. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  23110. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  23111. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  23112. returned and nothing is loaded since <i>max</i> is larger than the highest
  23113. mipmap level which is, in this case, 6.
  23114. </para>
  23115. <para>
  23116. The highest mipmap level can be derived from the formula
  23117. <c>log2(max(width,height,depth)*(2^level))</c>.
  23118. </para>
  23119. <para>
  23120. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  23121. the acceptable values for <i>format</i> parameter. See the
  23122. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  23123. acceptable values for <i>type</i> parameter.
  23124. </para>
  23125. <para>
  23126. <b>NOTES</b>
  23127. </para>
  23128. <para>
  23129. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  23130. greater.
  23131. </para>
  23132. <para>
  23133. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  23134. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23135. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23136. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23137. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23138. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23139. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23140. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23141. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23142. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23143. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23144. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  23145. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  23146. version is 1.2 or greater.
  23147. </para>
  23148. <para>
  23149. <b>ERRORS</b>
  23150. </para>
  23151. <para>
  23152. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  23153. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  23154. highest mipmap level for <i>data</i>.
  23155. </para>
  23156. <para>
  23157. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  23158. or <i>depth</i> is &lt; 1.
  23159. </para>
  23160. <para>
  23161. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  23162. <i>format</i>, or <i>type</i> is not legal.
  23163. </para>
  23164. <para>
  23165. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  23167. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  23168. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23169. </para>
  23170. <para>
  23171. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23172. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  23173. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  23174. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23175. </para>
  23176. <para>
  23177. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23178. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  23179. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  23180. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23181. </para>
  23182. <para>
  23183. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23184. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  23185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  23186. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23187. </para>
  23188. <para>
  23189. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23190. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  23191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  23192. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23193. </para>
  23194. <para>
  23195. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23196. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  23197. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  23198. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23199. </para>
  23200. </remarks>
  23201. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23202. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23203. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  23204. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23205. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23206. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23207. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23208. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23209. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23210. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23211. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23212. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  23213. </member>
  23214. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[])">
  23215. <summary>
  23216. Builds a subset of three-dimensional mipmap.
  23217. </summary>
  23218. <param name="target">
  23219. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  23220. </param>
  23221. <param name="internalFormat">
  23222. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  23223. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23224. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  23225. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  23226. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  23227. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  23228. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  23229. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  23230. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  23231. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  23232. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  23233. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  23234. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  23235. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  23236. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  23237. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  23238. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  23239. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  23240. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  23241. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  23242. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  23243. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  23244. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  23245. </param>
  23246. <param name="width">
  23247. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  23248. </param>
  23249. <param name="height">
  23250. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  23251. </param>
  23252. <param name="depth">
  23253. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  23254. </param>
  23255. <param name="format">
  23256. Specifies the format of the pixel data. Must be one of
  23257. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  23258. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  23259. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23260. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  23261. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  23262. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  23263. </param>
  23264. <param name="type">
  23265. Specifies the data type for <i>data</i>. Must be one of
  23266. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  23267. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  23268. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  23269. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  23270. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23271. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23272. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23273. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23274. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23275. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23276. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23277. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23278. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23279. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23280. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  23281. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  23282. </param>
  23283. <param name="level">
  23284. Specifies the mipmap level of the image data.
  23285. </param>
  23286. <param name="min">
  23287. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23288. </param>
  23289. <param name="max">
  23290. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23291. </param>
  23292. <param name="data">
  23293. Specifies a pointer to the image data in memory.
  23294. </param>
  23295. <returns>
  23296. A return value of zero indicates success, otherwise a GLU error code is
  23297. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23298. </returns>
  23299. <remarks>
  23300. <para>
  23301. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  23302. three-dimensional texture maps of decreasing resolutions called a mipmap.
  23303. This is used for the antialiasing of texture mapped primitives.
  23304. </para>
  23305. <para>
  23306. A return value of zero indicates success, otherwise a GLU error code is
  23307. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23308. </para>
  23309. <para>
  23310. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  23311. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  23312. reached. At each level, each texel in the halved mipmap level is an average
  23313. of the corresponding eight texels in the larger mipmap level. (If exactly
  23314. one of the dimensions is 1, four texels are averaged. If exactly two of the
  23315. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23316. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  23317. <i>max</i> is larger than the highest mipmap level for the texture of the
  23318. specified size, then a GLU error code is returned (see
  23319. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  23320. </para>
  23321. <para>
  23322. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  23323. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  23324. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  23325. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  23326. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  23327. returned and nothing is loaded since <i>max</i> is larger than the highest
  23328. mipmap level which is, in this case, 6.
  23329. </para>
  23330. <para>
  23331. The highest mipmap level can be derived from the formula
  23332. <c>log2(max(width,height,depth)*(2^level))</c>.
  23333. </para>
  23334. <para>
  23335. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  23336. the acceptable values for <i>format</i> parameter. See the
  23337. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  23338. acceptable values for <i>type</i> parameter.
  23339. </para>
  23340. <para>
  23341. <b>NOTES</b>
  23342. </para>
  23343. <para>
  23344. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  23345. greater.
  23346. </para>
  23347. <para>
  23348. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  23349. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23350. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23351. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23353. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23354. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23355. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23356. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23357. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23358. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23359. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  23360. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  23361. version is 1.2 or greater.
  23362. </para>
  23363. <para>
  23364. <b>ERRORS</b>
  23365. </para>
  23366. <para>
  23367. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  23368. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  23369. highest mipmap level for <i>data</i>.
  23370. </para>
  23371. <para>
  23372. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  23373. or <i>depth</i> is &lt; 1.
  23374. </para>
  23375. <para>
  23376. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  23377. <i>format</i>, or <i>type</i> is not legal.
  23378. </para>
  23379. <para>
  23380. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23381. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  23382. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  23383. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23384. </para>
  23385. <para>
  23386. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  23388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  23389. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23390. </para>
  23391. <para>
  23392. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23393. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  23394. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  23395. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23396. </para>
  23397. <para>
  23398. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23399. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  23400. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  23401. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23402. </para>
  23403. <para>
  23404. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23405. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  23406. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  23407. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23408. </para>
  23409. <para>
  23410. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23411. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  23412. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  23413. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23414. </para>
  23415. </remarks>
  23416. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23417. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23418. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  23419. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23420. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23421. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23422. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23423. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23424. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23425. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23426. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23427. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  23428. </member>
  23429. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:])">
  23430. <summary>
  23431. Builds a subset of three-dimensional mipmap.
  23432. </summary>
  23433. <param name="target">
  23434. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  23435. </param>
  23436. <param name="internalFormat">
  23437. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  23438. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23439. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  23440. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  23441. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  23442. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  23443. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  23444. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  23445. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  23446. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  23447. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  23448. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  23449. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  23450. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  23451. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  23452. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  23453. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  23454. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  23455. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  23456. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  23457. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  23458. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  23459. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  23460. </param>
  23461. <param name="width">
  23462. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  23463. </param>
  23464. <param name="height">
  23465. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  23466. </param>
  23467. <param name="depth">
  23468. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  23469. </param>
  23470. <param name="format">
  23471. Specifies the format of the pixel data. Must be one of
  23472. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  23473. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  23474. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23475. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  23476. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  23477. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  23478. </param>
  23479. <param name="type">
  23480. Specifies the data type for <i>data</i>. Must be one of
  23481. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  23482. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  23483. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  23484. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  23485. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23486. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23487. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23488. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23489. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23490. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23491. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23492. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23493. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23494. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23495. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  23496. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  23497. </param>
  23498. <param name="level">
  23499. Specifies the mipmap level of the image data.
  23500. </param>
  23501. <param name="min">
  23502. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23503. </param>
  23504. <param name="max">
  23505. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23506. </param>
  23507. <param name="data">
  23508. Specifies a pointer to the image data in memory.
  23509. </param>
  23510. <returns>
  23511. A return value of zero indicates success, otherwise a GLU error code is
  23512. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23513. </returns>
  23514. <remarks>
  23515. <para>
  23516. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  23517. three-dimensional texture maps of decreasing resolutions called a mipmap.
  23518. This is used for the antialiasing of texture mapped primitives.
  23519. </para>
  23520. <para>
  23521. A return value of zero indicates success, otherwise a GLU error code is
  23522. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23523. </para>
  23524. <para>
  23525. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  23526. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  23527. reached. At each level, each texel in the halved mipmap level is an average
  23528. of the corresponding eight texels in the larger mipmap level. (If exactly
  23529. one of the dimensions is 1, four texels are averaged. If exactly two of the
  23530. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23531. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  23532. <i>max</i> is larger than the highest mipmap level for the texture of the
  23533. specified size, then a GLU error code is returned (see
  23534. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  23535. </para>
  23536. <para>
  23537. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  23538. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  23539. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  23540. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  23541. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  23542. returned and nothing is loaded since <i>max</i> is larger than the highest
  23543. mipmap level which is, in this case, 6.
  23544. </para>
  23545. <para>
  23546. The highest mipmap level can be derived from the formula
  23547. <c>log2(max(width,height,depth)*(2^level))</c>.
  23548. </para>
  23549. <para>
  23550. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  23551. the acceptable values for <i>format</i> parameter. See the
  23552. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  23553. acceptable values for <i>type</i> parameter.
  23554. </para>
  23555. <para>
  23556. <b>NOTES</b>
  23557. </para>
  23558. <para>
  23559. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  23560. greater.
  23561. </para>
  23562. <para>
  23563. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  23564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23565. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23566. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23567. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23568. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23571. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23572. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23573. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23574. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  23575. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  23576. version is 1.2 or greater.
  23577. </para>
  23578. <para>
  23579. <b>ERRORS</b>
  23580. </para>
  23581. <para>
  23582. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  23583. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  23584. highest mipmap level for <i>data</i>.
  23585. </para>
  23586. <para>
  23587. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  23588. or <i>depth</i> is &lt; 1.
  23589. </para>
  23590. <para>
  23591. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  23592. <i>format</i>, or <i>type</i> is not legal.
  23593. </para>
  23594. <para>
  23595. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  23597. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  23598. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23599. </para>
  23600. <para>
  23601. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  23603. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  23604. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23605. </para>
  23606. <para>
  23607. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23608. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  23609. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  23610. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23611. </para>
  23612. <para>
  23613. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23614. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  23615. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  23616. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23617. </para>
  23618. <para>
  23619. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23620. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  23621. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  23622. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23623. </para>
  23624. <para>
  23625. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23626. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  23627. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  23628. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23629. </para>
  23630. </remarks>
  23631. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23632. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23633. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  23634. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23635. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23636. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23637. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23638. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23639. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23640. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23641. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23642. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  23643. </member>
  23644. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:,0:])">
  23645. <summary>
  23646. Builds a subset of three-dimensional mipmap.
  23647. </summary>
  23648. <param name="target">
  23649. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  23650. </param>
  23651. <param name="internalFormat">
  23652. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  23653. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23654. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  23655. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  23656. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  23657. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  23658. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  23659. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  23660. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  23661. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  23662. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  23663. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  23664. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  23665. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  23666. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  23667. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  23668. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  23669. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  23670. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  23671. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  23672. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  23673. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  23674. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  23675. </param>
  23676. <param name="width">
  23677. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  23678. </param>
  23679. <param name="height">
  23680. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  23681. </param>
  23682. <param name="depth">
  23683. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  23684. </param>
  23685. <param name="format">
  23686. Specifies the format of the pixel data. Must be one of
  23687. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  23688. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  23689. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23690. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  23691. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  23692. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  23693. </param>
  23694. <param name="type">
  23695. Specifies the data type for <i>data</i>. Must be one of
  23696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  23697. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  23698. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  23699. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  23700. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23701. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23702. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23703. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23704. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23705. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23706. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23707. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23708. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23709. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23710. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  23711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  23712. </param>
  23713. <param name="level">
  23714. Specifies the mipmap level of the image data.
  23715. </param>
  23716. <param name="min">
  23717. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23718. </param>
  23719. <param name="max">
  23720. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23721. </param>
  23722. <param name="data">
  23723. Specifies a pointer to the image data in memory.
  23724. </param>
  23725. <returns>
  23726. A return value of zero indicates success, otherwise a GLU error code is
  23727. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23728. </returns>
  23729. <remarks>
  23730. <para>
  23731. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  23732. three-dimensional texture maps of decreasing resolutions called a mipmap.
  23733. This is used for the antialiasing of texture mapped primitives.
  23734. </para>
  23735. <para>
  23736. A return value of zero indicates success, otherwise a GLU error code is
  23737. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23738. </para>
  23739. <para>
  23740. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  23741. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  23742. reached. At each level, each texel in the halved mipmap level is an average
  23743. of the corresponding eight texels in the larger mipmap level. (If exactly
  23744. one of the dimensions is 1, four texels are averaged. If exactly two of the
  23745. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23746. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  23747. <i>max</i> is larger than the highest mipmap level for the texture of the
  23748. specified size, then a GLU error code is returned (see
  23749. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  23750. </para>
  23751. <para>
  23752. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  23753. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  23754. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  23755. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  23756. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  23757. returned and nothing is loaded since <i>max</i> is larger than the highest
  23758. mipmap level which is, in this case, 6.
  23759. </para>
  23760. <para>
  23761. The highest mipmap level can be derived from the formula
  23762. <c>log2(max(width,height,depth)*(2^level))</c>.
  23763. </para>
  23764. <para>
  23765. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  23766. the acceptable values for <i>format</i> parameter. See the
  23767. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  23768. acceptable values for <i>type</i> parameter.
  23769. </para>
  23770. <para>
  23771. <b>NOTES</b>
  23772. </para>
  23773. <para>
  23774. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  23775. greater.
  23776. </para>
  23777. <para>
  23778. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  23779. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23781. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23782. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23783. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23784. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23789. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  23790. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  23791. version is 1.2 or greater.
  23792. </para>
  23793. <para>
  23794. <b>ERRORS</b>
  23795. </para>
  23796. <para>
  23797. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  23798. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  23799. highest mipmap level for <i>data</i>.
  23800. </para>
  23801. <para>
  23802. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  23803. or <i>depth</i> is &lt; 1.
  23804. </para>
  23805. <para>
  23806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  23807. <i>format</i>, or <i>type</i> is not legal.
  23808. </para>
  23809. <para>
  23810. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  23812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  23813. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23814. </para>
  23815. <para>
  23816. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  23818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  23819. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  23820. </para>
  23821. <para>
  23822. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  23824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  23825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23826. </para>
  23827. <para>
  23828. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23829. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  23830. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  23831. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23832. </para>
  23833. <para>
  23834. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23835. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  23836. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  23837. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23838. </para>
  23839. <para>
  23840. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  23841. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  23842. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  23843. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  23844. </para>
  23845. </remarks>
  23846. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23847. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23848. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  23849. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23850. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23851. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23852. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23853. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23854. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23855. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23856. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  23857. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  23858. </member>
  23859. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[])">
  23860. <summary>
  23861. Builds a subset of three-dimensional mipmap.
  23862. </summary>
  23863. <param name="target">
  23864. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  23865. </param>
  23866. <param name="internalFormat">
  23867. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  23868. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23869. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  23870. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  23871. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  23872. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  23873. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  23874. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  23875. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  23876. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  23877. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  23878. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  23879. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  23880. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  23881. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  23882. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  23883. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  23884. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  23885. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  23886. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  23887. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  23888. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  23889. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  23890. </param>
  23891. <param name="width">
  23892. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  23893. </param>
  23894. <param name="height">
  23895. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  23896. </param>
  23897. <param name="depth">
  23898. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  23899. </param>
  23900. <param name="format">
  23901. Specifies the format of the pixel data. Must be one of
  23902. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  23903. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  23904. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  23905. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  23906. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  23907. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  23908. </param>
  23909. <param name="type">
  23910. Specifies the data type for <i>data</i>. Must be one of
  23911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  23912. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  23913. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  23914. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  23915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23918. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23919. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23920. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  23921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  23922. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  23923. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  23924. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  23925. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  23926. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  23927. </param>
  23928. <param name="level">
  23929. Specifies the mipmap level of the image data.
  23930. </param>
  23931. <param name="min">
  23932. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23933. </param>
  23934. <param name="max">
  23935. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  23936. </param>
  23937. <param name="data">
  23938. Specifies a pointer to the image data in memory.
  23939. </param>
  23940. <returns>
  23941. A return value of zero indicates success, otherwise a GLU error code is
  23942. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23943. </returns>
  23944. <remarks>
  23945. <para>
  23946. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  23947. three-dimensional texture maps of decreasing resolutions called a mipmap.
  23948. This is used for the antialiasing of texture mapped primitives.
  23949. </para>
  23950. <para>
  23951. A return value of zero indicates success, otherwise a GLU error code is
  23952. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  23953. </para>
  23954. <para>
  23955. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  23956. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  23957. reached. At each level, each texel in the halved mipmap level is an average
  23958. of the corresponding eight texels in the larger mipmap level. (If exactly
  23959. one of the dimensions is 1, four texels are averaged. If exactly two of the
  23960. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  23961. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  23962. <i>max</i> is larger than the highest mipmap level for the texture of the
  23963. specified size, then a GLU error code is returned (see
  23964. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  23965. </para>
  23966. <para>
  23967. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  23968. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  23969. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  23970. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  23971. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  23972. returned and nothing is loaded since <i>max</i> is larger than the highest
  23973. mipmap level which is, in this case, 6.
  23974. </para>
  23975. <para>
  23976. The highest mipmap level can be derived from the formula
  23977. <c>log2(max(width,height,depth)*(2^level))</c>.
  23978. </para>
  23979. <para>
  23980. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  23981. the acceptable values for <i>format</i> parameter. See the
  23982. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  23983. acceptable values for <i>type</i> parameter.
  23984. </para>
  23985. <para>
  23986. <b>NOTES</b>
  23987. </para>
  23988. <para>
  23989. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  23990. greater.
  23991. </para>
  23992. <para>
  23993. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  23994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  23995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  23996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  23997. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  23998. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  23999. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24002. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24003. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24004. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  24005. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  24006. version is 1.2 or greater.
  24007. </para>
  24008. <para>
  24009. <b>ERRORS</b>
  24010. </para>
  24011. <para>
  24012. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  24013. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  24014. highest mipmap level for <i>data</i>.
  24015. </para>
  24016. <para>
  24017. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  24018. or <i>depth</i> is &lt; 1.
  24019. </para>
  24020. <para>
  24021. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  24022. <i>format</i>, or <i>type</i> is not legal.
  24023. </para>
  24024. <para>
  24025. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24026. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  24027. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  24028. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24029. </para>
  24030. <para>
  24031. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24032. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  24033. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  24034. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24035. </para>
  24036. <para>
  24037. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24038. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  24039. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  24040. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24041. </para>
  24042. <para>
  24043. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24044. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  24045. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  24046. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24047. </para>
  24048. <para>
  24049. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24050. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  24051. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  24052. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24053. </para>
  24054. <para>
  24055. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24056. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  24057. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  24058. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24059. </para>
  24060. </remarks>
  24061. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24062. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24063. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  24064. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24065. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24066. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24067. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24068. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24069. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24070. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24071. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24072. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  24073. </member>
  24074. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:])">
  24075. <summary>
  24076. Builds a subset of three-dimensional mipmap.
  24077. </summary>
  24078. <param name="target">
  24079. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  24080. </param>
  24081. <param name="internalFormat">
  24082. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  24083. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24084. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  24085. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  24086. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  24087. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  24088. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  24089. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  24090. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  24091. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  24092. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  24093. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  24094. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  24095. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  24096. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  24097. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  24098. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  24099. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  24100. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  24101. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  24102. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  24103. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  24104. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  24105. </param>
  24106. <param name="width">
  24107. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  24108. </param>
  24109. <param name="height">
  24110. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  24111. </param>
  24112. <param name="depth">
  24113. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  24114. </param>
  24115. <param name="format">
  24116. Specifies the format of the pixel data. Must be one of
  24117. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  24118. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  24119. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24120. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  24121. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  24122. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  24123. </param>
  24124. <param name="type">
  24125. Specifies the data type for <i>data</i>. Must be one of
  24126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  24127. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  24128. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  24129. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  24130. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24133. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24134. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24135. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24136. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24137. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24138. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24139. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24140. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  24141. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  24142. </param>
  24143. <param name="level">
  24144. Specifies the mipmap level of the image data.
  24145. </param>
  24146. <param name="min">
  24147. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24148. </param>
  24149. <param name="max">
  24150. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24151. </param>
  24152. <param name="data">
  24153. Specifies a pointer to the image data in memory.
  24154. </param>
  24155. <returns>
  24156. A return value of zero indicates success, otherwise a GLU error code is
  24157. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24158. </returns>
  24159. <remarks>
  24160. <para>
  24161. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  24162. three-dimensional texture maps of decreasing resolutions called a mipmap.
  24163. This is used for the antialiasing of texture mapped primitives.
  24164. </para>
  24165. <para>
  24166. A return value of zero indicates success, otherwise a GLU error code is
  24167. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24168. </para>
  24169. <para>
  24170. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  24171. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  24172. reached. At each level, each texel in the halved mipmap level is an average
  24173. of the corresponding eight texels in the larger mipmap level. (If exactly
  24174. one of the dimensions is 1, four texels are averaged. If exactly two of the
  24175. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24176. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  24177. <i>max</i> is larger than the highest mipmap level for the texture of the
  24178. specified size, then a GLU error code is returned (see
  24179. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  24180. </para>
  24181. <para>
  24182. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  24183. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  24184. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  24185. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  24186. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  24187. returned and nothing is loaded since <i>max</i> is larger than the highest
  24188. mipmap level which is, in this case, 6.
  24189. </para>
  24190. <para>
  24191. The highest mipmap level can be derived from the formula
  24192. <c>log2(max(width,height,depth)*(2^level))</c>.
  24193. </para>
  24194. <para>
  24195. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  24196. the acceptable values for <i>format</i> parameter. See the
  24197. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  24198. acceptable values for <i>type</i> parameter.
  24199. </para>
  24200. <para>
  24201. <b>NOTES</b>
  24202. </para>
  24203. <para>
  24204. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  24205. greater.
  24206. </para>
  24207. <para>
  24208. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  24209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24214. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24219. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  24220. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  24221. version is 1.2 or greater.
  24222. </para>
  24223. <para>
  24224. <b>ERRORS</b>
  24225. </para>
  24226. <para>
  24227. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  24228. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  24229. highest mipmap level for <i>data</i>.
  24230. </para>
  24231. <para>
  24232. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  24233. or <i>depth</i> is &lt; 1.
  24234. </para>
  24235. <para>
  24236. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  24237. <i>format</i>, or <i>type</i> is not legal.
  24238. </para>
  24239. <para>
  24240. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24241. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  24242. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  24243. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24244. </para>
  24245. <para>
  24246. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24247. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  24248. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  24249. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24250. </para>
  24251. <para>
  24252. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24253. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  24254. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  24255. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24256. </para>
  24257. <para>
  24258. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24259. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  24260. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  24261. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24262. </para>
  24263. <para>
  24264. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24265. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  24266. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  24267. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24268. </para>
  24269. <para>
  24270. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24271. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  24272. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  24273. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24274. </para>
  24275. </remarks>
  24276. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24277. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24278. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  24279. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24280. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24281. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24282. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24283. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24284. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24285. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24286. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24287. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  24288. </member>
  24289. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:,0:])">
  24290. <summary>
  24291. Builds a subset of three-dimensional mipmap.
  24292. </summary>
  24293. <param name="target">
  24294. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  24295. </param>
  24296. <param name="internalFormat">
  24297. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  24298. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24299. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  24300. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  24301. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  24302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  24303. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  24304. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  24305. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  24306. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  24307. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  24308. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  24309. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  24310. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  24311. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  24312. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  24313. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  24314. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  24315. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  24316. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  24317. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  24318. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  24319. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  24320. </param>
  24321. <param name="width">
  24322. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  24323. </param>
  24324. <param name="height">
  24325. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  24326. </param>
  24327. <param name="depth">
  24328. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  24329. </param>
  24330. <param name="format">
  24331. Specifies the format of the pixel data. Must be one of
  24332. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  24333. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  24334. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24335. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  24336. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  24337. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  24338. </param>
  24339. <param name="type">
  24340. Specifies the data type for <i>data</i>. Must be one of
  24341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  24342. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  24343. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  24344. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  24345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24348. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24349. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24350. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24351. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24353. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24354. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24355. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  24356. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  24357. </param>
  24358. <param name="level">
  24359. Specifies the mipmap level of the image data.
  24360. </param>
  24361. <param name="min">
  24362. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24363. </param>
  24364. <param name="max">
  24365. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24366. </param>
  24367. <param name="data">
  24368. Specifies a pointer to the image data in memory.
  24369. </param>
  24370. <returns>
  24371. A return value of zero indicates success, otherwise a GLU error code is
  24372. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24373. </returns>
  24374. <remarks>
  24375. <para>
  24376. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  24377. three-dimensional texture maps of decreasing resolutions called a mipmap.
  24378. This is used for the antialiasing of texture mapped primitives.
  24379. </para>
  24380. <para>
  24381. A return value of zero indicates success, otherwise a GLU error code is
  24382. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24383. </para>
  24384. <para>
  24385. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  24386. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  24387. reached. At each level, each texel in the halved mipmap level is an average
  24388. of the corresponding eight texels in the larger mipmap level. (If exactly
  24389. one of the dimensions is 1, four texels are averaged. If exactly two of the
  24390. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24391. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  24392. <i>max</i> is larger than the highest mipmap level for the texture of the
  24393. specified size, then a GLU error code is returned (see
  24394. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  24395. </para>
  24396. <para>
  24397. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  24398. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  24399. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  24400. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  24401. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  24402. returned and nothing is loaded since <i>max</i> is larger than the highest
  24403. mipmap level which is, in this case, 6.
  24404. </para>
  24405. <para>
  24406. The highest mipmap level can be derived from the formula
  24407. <c>log2(max(width,height,depth)*(2^level))</c>.
  24408. </para>
  24409. <para>
  24410. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  24411. the acceptable values for <i>format</i> parameter. See the
  24412. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  24413. acceptable values for <i>type</i> parameter.
  24414. </para>
  24415. <para>
  24416. <b>NOTES</b>
  24417. </para>
  24418. <para>
  24419. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  24420. greater.
  24421. </para>
  24422. <para>
  24423. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  24424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24425. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24426. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24427. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24428. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24431. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24432. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24433. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24434. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  24435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  24436. version is 1.2 or greater.
  24437. </para>
  24438. <para>
  24439. <b>ERRORS</b>
  24440. </para>
  24441. <para>
  24442. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  24443. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  24444. highest mipmap level for <i>data</i>.
  24445. </para>
  24446. <para>
  24447. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  24448. or <i>depth</i> is &lt; 1.
  24449. </para>
  24450. <para>
  24451. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  24452. <i>format</i>, or <i>type</i> is not legal.
  24453. </para>
  24454. <para>
  24455. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24456. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  24457. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  24458. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24459. </para>
  24460. <para>
  24461. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24462. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  24463. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  24464. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24465. </para>
  24466. <para>
  24467. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24468. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  24469. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  24470. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24471. </para>
  24472. <para>
  24473. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  24475. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  24476. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24477. </para>
  24478. <para>
  24479. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24480. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  24481. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  24482. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24483. </para>
  24484. <para>
  24485. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24486. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  24487. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  24488. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24489. </para>
  24490. </remarks>
  24491. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24492. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24493. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  24494. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24495. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24496. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24497. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24498. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24499. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24500. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24501. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24502. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  24503. </member>
  24504. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[])">
  24505. <summary>
  24506. Builds a subset of three-dimensional mipmap.
  24507. </summary>
  24508. <param name="target">
  24509. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  24510. </param>
  24511. <param name="internalFormat">
  24512. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  24513. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24514. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  24515. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  24516. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  24517. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  24518. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  24519. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  24520. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  24521. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  24522. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  24523. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  24524. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  24525. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  24526. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  24527. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  24528. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  24529. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  24530. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  24531. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  24532. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  24533. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  24534. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  24535. </param>
  24536. <param name="width">
  24537. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  24538. </param>
  24539. <param name="height">
  24540. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  24541. </param>
  24542. <param name="depth">
  24543. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  24544. </param>
  24545. <param name="format">
  24546. Specifies the format of the pixel data. Must be one of
  24547. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  24548. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  24549. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24550. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  24551. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  24552. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  24553. </param>
  24554. <param name="type">
  24555. Specifies the data type for <i>data</i>. Must be one of
  24556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  24557. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  24558. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  24559. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  24560. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24561. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24562. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24563. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24565. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24566. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24567. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24568. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  24571. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  24572. </param>
  24573. <param name="level">
  24574. Specifies the mipmap level of the image data.
  24575. </param>
  24576. <param name="min">
  24577. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24578. </param>
  24579. <param name="max">
  24580. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24581. </param>
  24582. <param name="data">
  24583. Specifies a pointer to the image data in memory.
  24584. </param>
  24585. <returns>
  24586. A return value of zero indicates success, otherwise a GLU error code is
  24587. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24588. </returns>
  24589. <remarks>
  24590. <para>
  24591. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  24592. three-dimensional texture maps of decreasing resolutions called a mipmap.
  24593. This is used for the antialiasing of texture mapped primitives.
  24594. </para>
  24595. <para>
  24596. A return value of zero indicates success, otherwise a GLU error code is
  24597. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24598. </para>
  24599. <para>
  24600. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  24601. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  24602. reached. At each level, each texel in the halved mipmap level is an average
  24603. of the corresponding eight texels in the larger mipmap level. (If exactly
  24604. one of the dimensions is 1, four texels are averaged. If exactly two of the
  24605. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24606. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  24607. <i>max</i> is larger than the highest mipmap level for the texture of the
  24608. specified size, then a GLU error code is returned (see
  24609. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  24610. </para>
  24611. <para>
  24612. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  24613. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  24614. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  24615. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  24616. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  24617. returned and nothing is loaded since <i>max</i> is larger than the highest
  24618. mipmap level which is, in this case, 6.
  24619. </para>
  24620. <para>
  24621. The highest mipmap level can be derived from the formula
  24622. <c>log2(max(width,height,depth)*(2^level))</c>.
  24623. </para>
  24624. <para>
  24625. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  24626. the acceptable values for <i>format</i> parameter. See the
  24627. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  24628. acceptable values for <i>type</i> parameter.
  24629. </para>
  24630. <para>
  24631. <b>NOTES</b>
  24632. </para>
  24633. <para>
  24634. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  24635. greater.
  24636. </para>
  24637. <para>
  24638. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  24639. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24640. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24643. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24644. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24645. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24646. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24647. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24648. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24649. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  24650. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  24651. version is 1.2 or greater.
  24652. </para>
  24653. <para>
  24654. <b>ERRORS</b>
  24655. </para>
  24656. <para>
  24657. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  24658. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  24659. highest mipmap level for <i>data</i>.
  24660. </para>
  24661. <para>
  24662. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  24663. or <i>depth</i> is &lt; 1.
  24664. </para>
  24665. <para>
  24666. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  24667. <i>format</i>, or <i>type</i> is not legal.
  24668. </para>
  24669. <para>
  24670. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24671. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  24672. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  24673. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24674. </para>
  24675. <para>
  24676. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24677. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  24678. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  24679. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24680. </para>
  24681. <para>
  24682. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24683. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  24684. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  24685. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24686. </para>
  24687. <para>
  24688. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24689. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  24690. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  24691. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24692. </para>
  24693. <para>
  24694. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24695. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  24696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  24697. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24698. </para>
  24699. <para>
  24700. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24701. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  24702. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  24703. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24704. </para>
  24705. </remarks>
  24706. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24707. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24708. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  24709. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24710. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24711. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24712. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24713. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24714. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24715. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24716. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24717. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  24718. </member>
  24719. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:])">
  24720. <summary>
  24721. Builds a subset of three-dimensional mipmap.
  24722. </summary>
  24723. <param name="target">
  24724. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  24725. </param>
  24726. <param name="internalFormat">
  24727. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  24728. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24729. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  24730. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  24731. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  24732. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  24733. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  24734. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  24735. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  24736. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  24737. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  24738. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  24739. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  24740. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  24741. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  24742. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  24743. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  24744. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  24745. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  24746. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  24747. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  24748. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  24749. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  24750. </param>
  24751. <param name="width">
  24752. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  24753. </param>
  24754. <param name="height">
  24755. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  24756. </param>
  24757. <param name="depth">
  24758. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  24759. </param>
  24760. <param name="format">
  24761. Specifies the format of the pixel data. Must be one of
  24762. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  24763. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  24764. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24765. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  24766. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  24767. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  24768. </param>
  24769. <param name="type">
  24770. Specifies the data type for <i>data</i>. Must be one of
  24771. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  24772. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  24773. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  24774. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  24775. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24777. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24778. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24779. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24781. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24782. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24783. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24784. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  24786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  24787. </param>
  24788. <param name="level">
  24789. Specifies the mipmap level of the image data.
  24790. </param>
  24791. <param name="min">
  24792. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24793. </param>
  24794. <param name="max">
  24795. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  24796. </param>
  24797. <param name="data">
  24798. Specifies a pointer to the image data in memory.
  24799. </param>
  24800. <returns>
  24801. A return value of zero indicates success, otherwise a GLU error code is
  24802. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24803. </returns>
  24804. <remarks>
  24805. <para>
  24806. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  24807. three-dimensional texture maps of decreasing resolutions called a mipmap.
  24808. This is used for the antialiasing of texture mapped primitives.
  24809. </para>
  24810. <para>
  24811. A return value of zero indicates success, otherwise a GLU error code is
  24812. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  24813. </para>
  24814. <para>
  24815. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  24816. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  24817. reached. At each level, each texel in the halved mipmap level is an average
  24818. of the corresponding eight texels in the larger mipmap level. (If exactly
  24819. one of the dimensions is 1, four texels are averaged. If exactly two of the
  24820. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24821. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  24822. <i>max</i> is larger than the highest mipmap level for the texture of the
  24823. specified size, then a GLU error code is returned (see
  24824. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  24825. </para>
  24826. <para>
  24827. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  24828. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  24829. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  24830. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  24831. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  24832. returned and nothing is loaded since <i>max</i> is larger than the highest
  24833. mipmap level which is, in this case, 6.
  24834. </para>
  24835. <para>
  24836. The highest mipmap level can be derived from the formula
  24837. <c>log2(max(width,height,depth)*(2^level))</c>.
  24838. </para>
  24839. <para>
  24840. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  24841. the acceptable values for <i>format</i> parameter. See the
  24842. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  24843. acceptable values for <i>type</i> parameter.
  24844. </para>
  24845. <para>
  24846. <b>NOTES</b>
  24847. </para>
  24848. <para>
  24849. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  24850. greater.
  24851. </para>
  24852. <para>
  24853. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  24854. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24855. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24856. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24857. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24858. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24859. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24860. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24861. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24862. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24863. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  24864. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  24865. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  24866. version is 1.2 or greater.
  24867. </para>
  24868. <para>
  24869. <b>ERRORS</b>
  24870. </para>
  24871. <para>
  24872. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  24873. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  24874. highest mipmap level for <i>data</i>.
  24875. </para>
  24876. <para>
  24877. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  24878. or <i>depth</i> is &lt; 1.
  24879. </para>
  24880. <para>
  24881. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  24882. <i>format</i>, or <i>type</i> is not legal.
  24883. </para>
  24884. <para>
  24885. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24886. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  24887. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  24888. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24889. </para>
  24890. <para>
  24891. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24892. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  24893. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  24894. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  24895. </para>
  24896. <para>
  24897. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24898. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  24899. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  24900. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24901. </para>
  24902. <para>
  24903. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24904. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  24905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  24906. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24907. </para>
  24908. <para>
  24909. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  24911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  24912. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24913. </para>
  24914. <para>
  24915. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  24916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  24917. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  24918. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  24919. </para>
  24920. </remarks>
  24921. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24922. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24923. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  24924. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24925. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24926. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  24927. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24928. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24929. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24930. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24931. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  24932. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  24933. </member>
  24934. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:,0:])">
  24935. <summary>
  24936. Builds a subset of three-dimensional mipmap.
  24937. </summary>
  24938. <param name="target">
  24939. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  24940. </param>
  24941. <param name="internalFormat">
  24942. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  24943. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24944. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  24945. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  24946. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  24947. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  24948. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  24949. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  24950. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  24951. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  24952. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  24953. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  24954. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  24955. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  24956. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  24957. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  24958. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  24959. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  24960. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  24961. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  24962. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  24963. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  24964. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  24965. </param>
  24966. <param name="width">
  24967. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  24968. </param>
  24969. <param name="height">
  24970. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  24971. </param>
  24972. <param name="depth">
  24973. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  24974. </param>
  24975. <param name="format">
  24976. Specifies the format of the pixel data. Must be one of
  24977. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  24978. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  24979. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  24980. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  24981. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  24982. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  24983. </param>
  24984. <param name="type">
  24985. Specifies the data type for <i>data</i>. Must be one of
  24986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  24987. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  24988. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  24989. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  24990. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  24991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  24992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  24993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  24994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  24995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  24996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  24997. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  24998. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  24999. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  25001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  25002. </param>
  25003. <param name="level">
  25004. Specifies the mipmap level of the image data.
  25005. </param>
  25006. <param name="min">
  25007. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  25008. </param>
  25009. <param name="max">
  25010. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  25011. </param>
  25012. <param name="data">
  25013. Specifies a pointer to the image data in memory.
  25014. </param>
  25015. <returns>
  25016. A return value of zero indicates success, otherwise a GLU error code is
  25017. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25018. </returns>
  25019. <remarks>
  25020. <para>
  25021. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  25022. three-dimensional texture maps of decreasing resolutions called a mipmap.
  25023. This is used for the antialiasing of texture mapped primitives.
  25024. </para>
  25025. <para>
  25026. A return value of zero indicates success, otherwise a GLU error code is
  25027. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25028. </para>
  25029. <para>
  25030. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  25031. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  25032. reached. At each level, each texel in the halved mipmap level is an average
  25033. of the corresponding eight texels in the larger mipmap level. (If exactly
  25034. one of the dimensions is 1, four texels are averaged. If exactly two of the
  25035. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25036. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  25037. <i>max</i> is larger than the highest mipmap level for the texture of the
  25038. specified size, then a GLU error code is returned (see
  25039. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  25040. </para>
  25041. <para>
  25042. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  25043. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  25044. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  25045. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  25046. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  25047. returned and nothing is loaded since <i>max</i> is larger than the highest
  25048. mipmap level which is, in this case, 6.
  25049. </para>
  25050. <para>
  25051. The highest mipmap level can be derived from the formula
  25052. <c>log2(max(width,height,depth)*(2^level))</c>.
  25053. </para>
  25054. <para>
  25055. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  25056. the acceptable values for <i>format</i> parameter. See the
  25057. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  25058. acceptable values for <i>type</i> parameter.
  25059. </para>
  25060. <para>
  25061. <b>NOTES</b>
  25062. </para>
  25063. <para>
  25064. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  25065. greater.
  25066. </para>
  25067. <para>
  25068. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  25069. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25070. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25071. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25072. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25073. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25074. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25075. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25076. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25077. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25078. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25079. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  25080. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  25081. version is 1.2 or greater.
  25082. </para>
  25083. <para>
  25084. <b>ERRORS</b>
  25085. </para>
  25086. <para>
  25087. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  25088. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  25089. highest mipmap level for <i>data</i>.
  25090. </para>
  25091. <para>
  25092. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  25093. or <i>depth</i> is &lt; 1.
  25094. </para>
  25095. <para>
  25096. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  25097. <i>format</i>, or <i>type</i> is not legal.
  25098. </para>
  25099. <para>
  25100. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25101. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  25102. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  25103. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25104. </para>
  25105. <para>
  25106. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25107. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  25108. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  25109. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25110. </para>
  25111. <para>
  25112. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25113. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  25114. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  25115. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25116. </para>
  25117. <para>
  25118. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  25120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  25121. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25122. </para>
  25123. <para>
  25124. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25125. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  25126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  25127. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25128. </para>
  25129. <para>
  25130. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  25132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  25133. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25134. </para>
  25135. </remarks>
  25136. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25137. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25138. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  25139. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25140. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25141. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25142. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25143. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25144. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25145. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25146. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25147. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  25148. </member>
  25149. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
  25150. <summary>
  25151. Builds a subset of three-dimensional mipmap.
  25152. </summary>
  25153. <param name="target">
  25154. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  25155. </param>
  25156. <param name="internalFormat">
  25157. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  25158. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25159. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  25160. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  25161. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  25162. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  25163. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  25164. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  25165. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  25166. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  25167. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  25168. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  25169. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  25170. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  25171. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  25172. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  25173. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  25174. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  25175. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  25176. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  25177. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  25178. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  25179. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  25180. </param>
  25181. <param name="width">
  25182. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  25183. </param>
  25184. <param name="height">
  25185. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  25186. </param>
  25187. <param name="depth">
  25188. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  25189. </param>
  25190. <param name="format">
  25191. Specifies the format of the pixel data. Must be one of
  25192. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  25193. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  25194. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25195. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  25196. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  25197. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  25198. </param>
  25199. <param name="type">
  25200. Specifies the data type for <i>data</i>. Must be one of
  25201. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  25202. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  25203. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  25204. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  25205. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25206. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25207. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25208. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25214. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  25216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  25217. </param>
  25218. <param name="level">
  25219. Specifies the mipmap level of the image data.
  25220. </param>
  25221. <param name="min">
  25222. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  25223. </param>
  25224. <param name="max">
  25225. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  25226. </param>
  25227. <param name="data">
  25228. Specifies a pointer to the image data in memory.
  25229. </param>
  25230. <returns>
  25231. A return value of zero indicates success, otherwise a GLU error code is
  25232. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25233. </returns>
  25234. <remarks>
  25235. <para>
  25236. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  25237. three-dimensional texture maps of decreasing resolutions called a mipmap.
  25238. This is used for the antialiasing of texture mapped primitives.
  25239. </para>
  25240. <para>
  25241. A return value of zero indicates success, otherwise a GLU error code is
  25242. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25243. </para>
  25244. <para>
  25245. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  25246. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  25247. reached. At each level, each texel in the halved mipmap level is an average
  25248. of the corresponding eight texels in the larger mipmap level. (If exactly
  25249. one of the dimensions is 1, four texels are averaged. If exactly two of the
  25250. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25251. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  25252. <i>max</i> is larger than the highest mipmap level for the texture of the
  25253. specified size, then a GLU error code is returned (see
  25254. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  25255. </para>
  25256. <para>
  25257. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  25258. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  25259. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  25260. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  25261. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  25262. returned and nothing is loaded since <i>max</i> is larger than the highest
  25263. mipmap level which is, in this case, 6.
  25264. </para>
  25265. <para>
  25266. The highest mipmap level can be derived from the formula
  25267. <c>log2(max(width,height,depth)*(2^level))</c>.
  25268. </para>
  25269. <para>
  25270. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  25271. the acceptable values for <i>format</i> parameter. See the
  25272. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  25273. acceptable values for <i>type</i> parameter.
  25274. </para>
  25275. <para>
  25276. <b>NOTES</b>
  25277. </para>
  25278. <para>
  25279. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  25280. greater.
  25281. </para>
  25282. <para>
  25283. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  25284. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25285. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25286. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25287. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25288. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25289. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25290. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25291. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25292. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25293. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25294. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  25295. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  25296. version is 1.2 or greater.
  25297. </para>
  25298. <para>
  25299. <b>ERRORS</b>
  25300. </para>
  25301. <para>
  25302. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  25303. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  25304. highest mipmap level for <i>data</i>.
  25305. </para>
  25306. <para>
  25307. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  25308. or <i>depth</i> is &lt; 1.
  25309. </para>
  25310. <para>
  25311. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  25312. <i>format</i>, or <i>type</i> is not legal.
  25313. </para>
  25314. <para>
  25315. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25316. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  25317. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  25318. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25319. </para>
  25320. <para>
  25321. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25322. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  25323. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  25324. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25325. </para>
  25326. <para>
  25327. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25328. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  25329. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  25330. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25331. </para>
  25332. <para>
  25333. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25334. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  25335. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  25336. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25337. </para>
  25338. <para>
  25339. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  25341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  25342. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25343. </para>
  25344. <para>
  25345. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  25347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  25348. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25349. </para>
  25350. </remarks>
  25351. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25352. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25353. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  25354. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25355. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25356. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25357. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25358. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25359. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25360. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25361. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25362. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  25363. </member>
  25364. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Void*)">
  25365. <summary>
  25366. Builds a subset of three-dimensional mipmap.
  25367. </summary>
  25368. <param name="target">
  25369. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  25370. </param>
  25371. <param name="internalFormat">
  25372. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  25373. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25374. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  25375. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  25376. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  25377. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  25378. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  25379. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  25380. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  25381. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  25382. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  25383. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  25384. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  25385. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  25386. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  25387. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  25388. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  25389. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  25390. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  25391. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  25392. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  25393. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  25394. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  25395. </param>
  25396. <param name="width">
  25397. Specifies, in pixels, the width of the texture image. Should be a power of 2.
  25398. </param>
  25399. <param name="height">
  25400. Specifies, in pixels, the height of the texture image. Should be a power of 2.
  25401. </param>
  25402. <param name="depth">
  25403. Specifies, in pixels, the depth of the texture image. Should be a power of 2.
  25404. </param>
  25405. <param name="format">
  25406. Specifies the format of the pixel data. Must be one of
  25407. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  25408. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  25409. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25410. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  25411. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  25412. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  25413. </param>
  25414. <param name="type">
  25415. Specifies the data type for <i>data</i>. Must be one of
  25416. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  25417. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  25418. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  25419. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  25420. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25425. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25426. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25427. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25428. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  25431. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  25432. </param>
  25433. <param name="level">
  25434. Specifies the mipmap level of the image data.
  25435. </param>
  25436. <param name="min">
  25437. Specifies the minimum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  25438. </param>
  25439. <param name="max">
  25440. Specifies the maximum mipmap level to pass to <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>.
  25441. </param>
  25442. <param name="data">
  25443. Specifies a pointer to the image data in memory.
  25444. </param>
  25445. <returns>
  25446. A return value of zero indicates success, otherwise a GLU error code is
  25447. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25448. </returns>
  25449. <remarks>
  25450. <para>
  25451. <b>gluBuild3DMipmapLevels</b> builds a subset of prefiltered
  25452. three-dimensional texture maps of decreasing resolutions called a mipmap.
  25453. This is used for the antialiasing of texture mapped primitives.
  25454. </para>
  25455. <para>
  25456. A return value of zero indicates success, otherwise a GLU error code is
  25457. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25458. </para>
  25459. <para>
  25460. A series of mipmap levels from <i>min</i> to <i>max</i> is built by
  25461. decimating <i>data</i> in half along both dimensions until size 1×1×1 is
  25462. reached. At each level, each texel in the halved mipmap level is an average
  25463. of the corresponding eight texels in the larger mipmap level. (If exactly
  25464. one of the dimensions is 1, four texels are averaged. If exactly two of the
  25465. dimensions are 1, two texels are averaged.) <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25466. is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
  25467. <i>max</i> is larger than the highest mipmap level for the texture of the
  25468. specified size, then a GLU error code is returned (see
  25469. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>) and nothing is loaded.
  25470. </para>
  25471. <para>
  25472. For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
  25473. and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
  25474. 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
  25475. If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
  25476. 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
  25477. returned and nothing is loaded since <i>max</i> is larger than the highest
  25478. mipmap level which is, in this case, 6.
  25479. </para>
  25480. <para>
  25481. The highest mipmap level can be derived from the formula
  25482. <c>log2(max(width,height,depth)*(2^level))</c>.
  25483. </para>
  25484. <para>
  25485. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  25486. the acceptable values for <i>format</i> parameter. See the
  25487. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  25488. acceptable values for <i>type</i> parameter.
  25489. </para>
  25490. <para>
  25491. <b>NOTES</b>
  25492. </para>
  25493. <para>
  25494. <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
  25495. greater.
  25496. </para>
  25497. <para>
  25498. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  25499. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25500. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25501. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25502. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25503. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25504. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25505. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25507. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25508. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25509. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  25510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  25511. version is 1.2 or greater.
  25512. </para>
  25513. <para>
  25514. <b>ERRORS</b>
  25515. </para>
  25516. <para>
  25517. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>level</i> &gt; <i>min</i>,
  25518. <i>min</i> &lt; 0, <i>max</i> &lt; <i>min</i> or <i>max</i> is &gt; the
  25519. highest mipmap level for <i>data</i>.
  25520. </para>
  25521. <para>
  25522. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  25523. or <i>depth</i> is &lt; 1.
  25524. </para>
  25525. <para>
  25526. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  25527. <i>format</i>, or <i>type</i> is not legal.
  25528. </para>
  25529. <para>
  25530. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25531. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  25532. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  25533. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25534. </para>
  25535. <para>
  25536. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25537. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  25538. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  25539. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25540. </para>
  25541. <para>
  25542. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25543. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  25544. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  25545. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25546. </para>
  25547. <para>
  25548. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25549. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  25550. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  25551. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25552. </para>
  25553. <para>
  25554. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25555. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  25556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  25557. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25558. </para>
  25559. <para>
  25560. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25561. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  25562. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  25563. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25564. </para>
  25565. </remarks>
  25566. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25567. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25568. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  25569. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25570. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25571. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25572. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25573. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25574. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25575. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25576. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25577. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  25578. </member>
  25579. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])">
  25580. <summary>
  25581. Builds a three-dimensional mipmap.
  25582. </summary>
  25583. <param name="target">
  25584. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  25585. </param>
  25586. <param name="internalFormat">
  25587. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  25588. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25589. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  25590. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  25591. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  25592. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  25593. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  25594. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  25595. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  25596. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  25597. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  25598. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  25599. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  25600. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  25601. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  25602. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  25603. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  25604. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  25605. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  25606. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  25607. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  25608. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  25609. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  25610. </param>
  25611. <param name="width">
  25612. Specifies, in pixels, the width in pixels of the texture image.
  25613. </param>
  25614. <param name="height">
  25615. Specifies, in pixels, the height in pixels of the texture image.
  25616. </param>
  25617. <param name="depth">
  25618. Specifies, in pixels, the depth in pixels of the texture image.
  25619. </param>
  25620. <param name="format">
  25621. Specifies the format of the pixel data. Must be one of
  25622. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  25623. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  25624. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25625. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  25626. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  25627. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  25628. </param>
  25629. <param name="type">
  25630. Specifies the data type for <i>data</i>. Must be one of:
  25631. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  25632. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  25633. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  25634. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  25635. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25636. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25637. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25638. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25639. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25640. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25641. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25642. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25643. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25644. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25645. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  25646. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  25647. </param>
  25648. <param name="data">
  25649. Specifies a pointer to the image data in memory.
  25650. </param>
  25651. <returns>
  25652. A return value of zero indicates success, otherwise a GLU error code is
  25653. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25654. </returns>
  25655. <remarks>
  25656. <para>
  25657. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  25658. texture maps of decreasing resolutions called a mipmap. This is used for the
  25659. antialiasing of texture-mapped primitives.
  25660. </para>
  25661. <para>
  25662. A return value of zero indicates success, otherwise a GLU error code is
  25663. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25664. </para>
  25665. <para>
  25666. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  25667. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  25668. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  25669. This copy will be used for subsequent mipmapping operations described below.
  25670. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  25671. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  25672. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  25673. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  25674. and up to 32 in <i>depth</i>, before mipmapping takes place.
  25675. </para>
  25676. <para>
  25677. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  25678. determine if the implementation can fit the requested texture. If not, all
  25679. three dimensions are continually halved until it fits.
  25680. </para>
  25681. <para>
  25682. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  25683. in half along all three dimensions until size 1×1×1 is reached. At each
  25684. level, each texel in the halved mipmap level is an average of the
  25685. corresponding eight texels in the larger mipmap level. (If exactly one of
  25686. the dimensions is 1, four texels are averaged. If exactly two of the
  25687. dimensions are 1, two texels are averaged.)
  25688. </para>
  25689. <para>
  25690. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  25691. Level 0 is a copy of <i>data</i>. The highest level is
  25692. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  25693. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  25694. a texture of this size, the following mipmap levels are built: 64×16×32,
  25695. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  25696. through 6, respectively.
  25697. </para>
  25698. <para>
  25699. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  25700. the acceptable values for <i>format</i> parameter. See the
  25701. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  25702. acceptable values for <i>type</i> parameter.
  25703. </para>
  25704. <para>
  25705. <b>NOTES</b>
  25706. </para>
  25707. <para>
  25708. There is no direct way of querying the maximum level. This can be derived
  25709. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  25710. the width, height and depth actually used at level 0. (The width, height
  25711. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  25712. respectively since proxy textures might have scaled them to fit the
  25713. implementation.) Then the maximum level can be derived from the formula
  25714. <c>log2(max(width,height,depth))</c>.
  25715. </para>
  25716. <para>
  25717. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  25718. greater.
  25719. </para>
  25720. <para>
  25721. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  25722. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25723. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25724. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25725. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25726. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25727. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25728. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25729. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25730. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25731. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25732. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  25733. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  25734. version is 1.2 or greater.
  25735. </para>
  25736. <para>
  25737. <b>ERRORS</b>
  25738. </para>
  25739. <para>
  25740. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  25741. or <i>depth</i> is &lt; 1.
  25742. </para>
  25743. <para>
  25744. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  25745. <i>format</i>, or <i>type</i> is not legal.
  25746. </para>
  25747. <para>
  25748. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25749. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  25750. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  25751. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25752. </para>
  25753. <para>
  25754. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25755. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  25756. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  25757. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25758. </para>
  25759. <para>
  25760. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25761. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  25762. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  25763. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25764. </para>
  25765. <para>
  25766. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25767. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  25768. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  25769. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25770. </para>
  25771. <para>
  25772. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25773. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  25774. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  25775. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25776. </para>
  25777. <para>
  25778. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25779. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  25780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  25781. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25782. </para>
  25783. </remarks>
  25784. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25785. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25786. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  25787. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25788. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25789. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  25790. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25791. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25792. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25793. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25794. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  25795. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  25796. </member>
  25797. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:])">
  25798. <summary>
  25799. Builds a three-dimensional mipmap.
  25800. </summary>
  25801. <param name="target">
  25802. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  25803. </param>
  25804. <param name="internalFormat">
  25805. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  25806. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25807. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  25808. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  25809. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  25810. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  25811. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  25812. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  25813. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  25814. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  25815. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  25816. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  25817. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  25818. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  25819. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  25820. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  25821. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  25822. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  25823. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  25824. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  25825. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  25826. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  25827. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  25828. </param>
  25829. <param name="width">
  25830. Specifies, in pixels, the width in pixels of the texture image.
  25831. </param>
  25832. <param name="height">
  25833. Specifies, in pixels, the height in pixels of the texture image.
  25834. </param>
  25835. <param name="depth">
  25836. Specifies, in pixels, the depth in pixels of the texture image.
  25837. </param>
  25838. <param name="format">
  25839. Specifies the format of the pixel data. Must be one of
  25840. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  25841. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  25842. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  25843. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  25844. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  25845. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  25846. </param>
  25847. <param name="type">
  25848. Specifies the data type for <i>data</i>. Must be one of:
  25849. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  25850. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  25851. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  25852. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  25853. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25854. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25855. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25856. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25857. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25858. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25859. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25860. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25861. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25862. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25863. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  25864. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  25865. </param>
  25866. <param name="data">
  25867. Specifies a pointer to the image data in memory.
  25868. </param>
  25869. <returns>
  25870. A return value of zero indicates success, otherwise a GLU error code is
  25871. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25872. </returns>
  25873. <remarks>
  25874. <para>
  25875. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  25876. texture maps of decreasing resolutions called a mipmap. This is used for the
  25877. antialiasing of texture-mapped primitives.
  25878. </para>
  25879. <para>
  25880. A return value of zero indicates success, otherwise a GLU error code is
  25881. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  25882. </para>
  25883. <para>
  25884. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  25885. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  25886. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  25887. This copy will be used for subsequent mipmapping operations described below.
  25888. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  25889. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  25890. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  25891. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  25892. and up to 32 in <i>depth</i>, before mipmapping takes place.
  25893. </para>
  25894. <para>
  25895. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  25896. determine if the implementation can fit the requested texture. If not, all
  25897. three dimensions are continually halved until it fits.
  25898. </para>
  25899. <para>
  25900. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  25901. in half along all three dimensions until size 1×1×1 is reached. At each
  25902. level, each texel in the halved mipmap level is an average of the
  25903. corresponding eight texels in the larger mipmap level. (If exactly one of
  25904. the dimensions is 1, four texels are averaged. If exactly two of the
  25905. dimensions are 1, two texels are averaged.)
  25906. </para>
  25907. <para>
  25908. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  25909. Level 0 is a copy of <i>data</i>. The highest level is
  25910. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  25911. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  25912. a texture of this size, the following mipmap levels are built: 64×16×32,
  25913. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  25914. through 6, respectively.
  25915. </para>
  25916. <para>
  25917. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  25918. the acceptable values for <i>format</i> parameter. See the
  25919. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  25920. acceptable values for <i>type</i> parameter.
  25921. </para>
  25922. <para>
  25923. <b>NOTES</b>
  25924. </para>
  25925. <para>
  25926. There is no direct way of querying the maximum level. This can be derived
  25927. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  25928. the width, height and depth actually used at level 0. (The width, height
  25929. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  25930. respectively since proxy textures might have scaled them to fit the
  25931. implementation.) Then the maximum level can be derived from the formula
  25932. <c>log2(max(width,height,depth))</c>.
  25933. </para>
  25934. <para>
  25935. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  25936. greater.
  25937. </para>
  25938. <para>
  25939. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  25940. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  25941. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  25942. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  25943. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  25944. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  25945. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  25946. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  25947. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  25948. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  25949. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  25950. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  25951. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  25952. version is 1.2 or greater.
  25953. </para>
  25954. <para>
  25955. <b>ERRORS</b>
  25956. </para>
  25957. <para>
  25958. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  25959. or <i>depth</i> is &lt; 1.
  25960. </para>
  25961. <para>
  25962. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  25963. <i>format</i>, or <i>type</i> is not legal.
  25964. </para>
  25965. <para>
  25966. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25967. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  25968. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  25969. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25970. </para>
  25971. <para>
  25972. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25973. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  25974. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  25975. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  25976. </para>
  25977. <para>
  25978. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25979. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  25980. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  25981. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25982. </para>
  25983. <para>
  25984. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25985. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  25986. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  25987. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25988. </para>
  25989. <para>
  25990. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  25992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  25993. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  25994. </para>
  25995. <para>
  25996. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  25997. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  25998. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  25999. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26000. </para>
  26001. </remarks>
  26002. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26003. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26004. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  26005. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26006. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26007. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26008. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26009. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26010. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26011. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26012. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26013. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  26014. </member>
  26015. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[0:,0:,0:])">
  26016. <summary>
  26017. Builds a three-dimensional mipmap.
  26018. </summary>
  26019. <param name="target">
  26020. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  26021. </param>
  26022. <param name="internalFormat">
  26023. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  26024. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26025. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  26026. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  26027. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  26028. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  26029. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  26030. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  26031. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  26032. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  26033. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  26034. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  26035. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  26036. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  26037. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  26038. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  26039. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  26040. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  26041. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  26042. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  26043. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  26044. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  26045. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  26046. </param>
  26047. <param name="width">
  26048. Specifies, in pixels, the width in pixels of the texture image.
  26049. </param>
  26050. <param name="height">
  26051. Specifies, in pixels, the height in pixels of the texture image.
  26052. </param>
  26053. <param name="depth">
  26054. Specifies, in pixels, the depth in pixels of the texture image.
  26055. </param>
  26056. <param name="format">
  26057. Specifies the format of the pixel data. Must be one of
  26058. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  26059. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  26060. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26061. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  26062. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  26063. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  26064. </param>
  26065. <param name="type">
  26066. Specifies the data type for <i>data</i>. Must be one of:
  26067. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  26068. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  26069. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  26070. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  26071. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26072. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26073. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26074. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26075. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26076. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26077. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26078. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26079. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26080. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26081. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  26082. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  26083. </param>
  26084. <param name="data">
  26085. Specifies a pointer to the image data in memory.
  26086. </param>
  26087. <returns>
  26088. A return value of zero indicates success, otherwise a GLU error code is
  26089. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26090. </returns>
  26091. <remarks>
  26092. <para>
  26093. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  26094. texture maps of decreasing resolutions called a mipmap. This is used for the
  26095. antialiasing of texture-mapped primitives.
  26096. </para>
  26097. <para>
  26098. A return value of zero indicates success, otherwise a GLU error code is
  26099. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26100. </para>
  26101. <para>
  26102. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  26103. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  26104. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  26105. This copy will be used for subsequent mipmapping operations described below.
  26106. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  26107. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  26108. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  26109. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  26110. and up to 32 in <i>depth</i>, before mipmapping takes place.
  26111. </para>
  26112. <para>
  26113. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  26114. determine if the implementation can fit the requested texture. If not, all
  26115. three dimensions are continually halved until it fits.
  26116. </para>
  26117. <para>
  26118. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  26119. in half along all three dimensions until size 1×1×1 is reached. At each
  26120. level, each texel in the halved mipmap level is an average of the
  26121. corresponding eight texels in the larger mipmap level. (If exactly one of
  26122. the dimensions is 1, four texels are averaged. If exactly two of the
  26123. dimensions are 1, two texels are averaged.)
  26124. </para>
  26125. <para>
  26126. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  26127. Level 0 is a copy of <i>data</i>. The highest level is
  26128. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  26129. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  26130. a texture of this size, the following mipmap levels are built: 64×16×32,
  26131. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  26132. through 6, respectively.
  26133. </para>
  26134. <para>
  26135. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  26136. the acceptable values for <i>format</i> parameter. See the
  26137. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  26138. acceptable values for <i>type</i> parameter.
  26139. </para>
  26140. <para>
  26141. <b>NOTES</b>
  26142. </para>
  26143. <para>
  26144. There is no direct way of querying the maximum level. This can be derived
  26145. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  26146. the width, height and depth actually used at level 0. (The width, height
  26147. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  26148. respectively since proxy textures might have scaled them to fit the
  26149. implementation.) Then the maximum level can be derived from the formula
  26150. <c>log2(max(width,height,depth))</c>.
  26151. </para>
  26152. <para>
  26153. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  26154. greater.
  26155. </para>
  26156. <para>
  26157. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  26158. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26159. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26160. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26161. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26162. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26163. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26164. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26165. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26167. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26168. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  26169. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  26170. version is 1.2 or greater.
  26171. </para>
  26172. <para>
  26173. <b>ERRORS</b>
  26174. </para>
  26175. <para>
  26176. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  26177. or <i>depth</i> is &lt; 1.
  26178. </para>
  26179. <para>
  26180. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  26181. <i>format</i>, or <i>type</i> is not legal.
  26182. </para>
  26183. <para>
  26184. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26185. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  26186. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  26187. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26188. </para>
  26189. <para>
  26190. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26191. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  26192. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  26193. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26194. </para>
  26195. <para>
  26196. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26197. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  26198. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  26199. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26200. </para>
  26201. <para>
  26202. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26203. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  26204. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  26205. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26206. </para>
  26207. <para>
  26208. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  26210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  26211. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26212. </para>
  26213. <para>
  26214. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  26216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  26217. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26218. </para>
  26219. </remarks>
  26220. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26221. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26222. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  26223. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26224. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26225. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26226. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26227. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26228. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26229. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26230. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26231. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  26232. </member>
  26233. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[])">
  26234. <summary>
  26235. Builds a three-dimensional mipmap.
  26236. </summary>
  26237. <param name="target">
  26238. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  26239. </param>
  26240. <param name="internalFormat">
  26241. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  26242. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26243. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  26244. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  26245. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  26246. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  26247. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  26248. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  26249. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  26250. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  26251. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  26252. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  26253. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  26254. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  26255. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  26256. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  26257. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  26258. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  26259. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  26260. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  26261. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  26262. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  26263. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  26264. </param>
  26265. <param name="width">
  26266. Specifies, in pixels, the width in pixels of the texture image.
  26267. </param>
  26268. <param name="height">
  26269. Specifies, in pixels, the height in pixels of the texture image.
  26270. </param>
  26271. <param name="depth">
  26272. Specifies, in pixels, the depth in pixels of the texture image.
  26273. </param>
  26274. <param name="format">
  26275. Specifies the format of the pixel data. Must be one of
  26276. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  26277. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  26278. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26279. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  26280. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  26281. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  26282. </param>
  26283. <param name="type">
  26284. Specifies the data type for <i>data</i>. Must be one of:
  26285. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  26286. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  26287. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  26288. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  26289. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26290. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26291. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26292. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26293. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26294. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26295. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26296. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26297. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26298. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26299. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  26300. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  26301. </param>
  26302. <param name="data">
  26303. Specifies a pointer to the image data in memory.
  26304. </param>
  26305. <returns>
  26306. A return value of zero indicates success, otherwise a GLU error code is
  26307. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26308. </returns>
  26309. <remarks>
  26310. <para>
  26311. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  26312. texture maps of decreasing resolutions called a mipmap. This is used for the
  26313. antialiasing of texture-mapped primitives.
  26314. </para>
  26315. <para>
  26316. A return value of zero indicates success, otherwise a GLU error code is
  26317. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26318. </para>
  26319. <para>
  26320. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  26321. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  26322. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  26323. This copy will be used for subsequent mipmapping operations described below.
  26324. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  26325. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  26326. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  26327. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  26328. and up to 32 in <i>depth</i>, before mipmapping takes place.
  26329. </para>
  26330. <para>
  26331. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  26332. determine if the implementation can fit the requested texture. If not, all
  26333. three dimensions are continually halved until it fits.
  26334. </para>
  26335. <para>
  26336. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  26337. in half along all three dimensions until size 1×1×1 is reached. At each
  26338. level, each texel in the halved mipmap level is an average of the
  26339. corresponding eight texels in the larger mipmap level. (If exactly one of
  26340. the dimensions is 1, four texels are averaged. If exactly two of the
  26341. dimensions are 1, two texels are averaged.)
  26342. </para>
  26343. <para>
  26344. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  26345. Level 0 is a copy of <i>data</i>. The highest level is
  26346. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  26347. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  26348. a texture of this size, the following mipmap levels are built: 64×16×32,
  26349. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  26350. through 6, respectively.
  26351. </para>
  26352. <para>
  26353. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  26354. the acceptable values for <i>format</i> parameter. See the
  26355. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  26356. acceptable values for <i>type</i> parameter.
  26357. </para>
  26358. <para>
  26359. <b>NOTES</b>
  26360. </para>
  26361. <para>
  26362. There is no direct way of querying the maximum level. This can be derived
  26363. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  26364. the width, height and depth actually used at level 0. (The width, height
  26365. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  26366. respectively since proxy textures might have scaled them to fit the
  26367. implementation.) Then the maximum level can be derived from the formula
  26368. <c>log2(max(width,height,depth))</c>.
  26369. </para>
  26370. <para>
  26371. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  26372. greater.
  26373. </para>
  26374. <para>
  26375. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  26376. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26377. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26378. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26379. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26380. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26381. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26382. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26383. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26384. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  26387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  26388. version is 1.2 or greater.
  26389. </para>
  26390. <para>
  26391. <b>ERRORS</b>
  26392. </para>
  26393. <para>
  26394. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  26395. or <i>depth</i> is &lt; 1.
  26396. </para>
  26397. <para>
  26398. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  26399. <i>format</i>, or <i>type</i> is not legal.
  26400. </para>
  26401. <para>
  26402. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26403. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  26404. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  26405. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26406. </para>
  26407. <para>
  26408. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26409. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  26410. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  26411. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26412. </para>
  26413. <para>
  26414. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26415. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  26416. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  26417. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26418. </para>
  26419. <para>
  26420. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26421. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  26422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  26423. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26424. </para>
  26425. <para>
  26426. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26427. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  26428. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  26429. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26430. </para>
  26431. <para>
  26432. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26433. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  26434. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  26435. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26436. </para>
  26437. </remarks>
  26438. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26439. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26440. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  26441. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26442. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26443. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26444. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26445. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26446. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26447. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26448. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26449. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  26450. </member>
  26451. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:])">
  26452. <summary>
  26453. Builds a three-dimensional mipmap.
  26454. </summary>
  26455. <param name="target">
  26456. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  26457. </param>
  26458. <param name="internalFormat">
  26459. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  26460. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26461. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  26462. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  26463. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  26464. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  26465. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  26466. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  26467. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  26468. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  26469. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  26470. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  26471. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  26472. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  26473. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  26474. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  26475. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  26476. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  26477. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  26478. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  26479. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  26480. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  26481. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  26482. </param>
  26483. <param name="width">
  26484. Specifies, in pixels, the width in pixels of the texture image.
  26485. </param>
  26486. <param name="height">
  26487. Specifies, in pixels, the height in pixels of the texture image.
  26488. </param>
  26489. <param name="depth">
  26490. Specifies, in pixels, the depth in pixels of the texture image.
  26491. </param>
  26492. <param name="format">
  26493. Specifies the format of the pixel data. Must be one of
  26494. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  26495. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  26496. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26497. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  26498. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  26499. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  26500. </param>
  26501. <param name="type">
  26502. Specifies the data type for <i>data</i>. Must be one of:
  26503. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  26504. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  26505. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  26506. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  26507. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26508. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26509. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26510. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26514. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26515. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26516. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  26518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  26519. </param>
  26520. <param name="data">
  26521. Specifies a pointer to the image data in memory.
  26522. </param>
  26523. <returns>
  26524. A return value of zero indicates success, otherwise a GLU error code is
  26525. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26526. </returns>
  26527. <remarks>
  26528. <para>
  26529. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  26530. texture maps of decreasing resolutions called a mipmap. This is used for the
  26531. antialiasing of texture-mapped primitives.
  26532. </para>
  26533. <para>
  26534. A return value of zero indicates success, otherwise a GLU error code is
  26535. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26536. </para>
  26537. <para>
  26538. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  26539. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  26540. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  26541. This copy will be used for subsequent mipmapping operations described below.
  26542. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  26543. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  26544. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  26545. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  26546. and up to 32 in <i>depth</i>, before mipmapping takes place.
  26547. </para>
  26548. <para>
  26549. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  26550. determine if the implementation can fit the requested texture. If not, all
  26551. three dimensions are continually halved until it fits.
  26552. </para>
  26553. <para>
  26554. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  26555. in half along all three dimensions until size 1×1×1 is reached. At each
  26556. level, each texel in the halved mipmap level is an average of the
  26557. corresponding eight texels in the larger mipmap level. (If exactly one of
  26558. the dimensions is 1, four texels are averaged. If exactly two of the
  26559. dimensions are 1, two texels are averaged.)
  26560. </para>
  26561. <para>
  26562. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  26563. Level 0 is a copy of <i>data</i>. The highest level is
  26564. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  26565. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  26566. a texture of this size, the following mipmap levels are built: 64×16×32,
  26567. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  26568. through 6, respectively.
  26569. </para>
  26570. <para>
  26571. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  26572. the acceptable values for <i>format</i> parameter. See the
  26573. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  26574. acceptable values for <i>type</i> parameter.
  26575. </para>
  26576. <para>
  26577. <b>NOTES</b>
  26578. </para>
  26579. <para>
  26580. There is no direct way of querying the maximum level. This can be derived
  26581. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  26582. the width, height and depth actually used at level 0. (The width, height
  26583. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  26584. respectively since proxy textures might have scaled them to fit the
  26585. implementation.) Then the maximum level can be derived from the formula
  26586. <c>log2(max(width,height,depth))</c>.
  26587. </para>
  26588. <para>
  26589. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  26590. greater.
  26591. </para>
  26592. <para>
  26593. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  26594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26597. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26598. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26600. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26601. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26603. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26604. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  26605. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  26606. version is 1.2 or greater.
  26607. </para>
  26608. <para>
  26609. <b>ERRORS</b>
  26610. </para>
  26611. <para>
  26612. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  26613. or <i>depth</i> is &lt; 1.
  26614. </para>
  26615. <para>
  26616. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  26617. <i>format</i>, or <i>type</i> is not legal.
  26618. </para>
  26619. <para>
  26620. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26621. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  26622. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  26623. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26624. </para>
  26625. <para>
  26626. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26627. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  26628. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  26629. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26630. </para>
  26631. <para>
  26632. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26633. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  26634. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  26635. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26636. </para>
  26637. <para>
  26638. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26639. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  26640. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  26641. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26642. </para>
  26643. <para>
  26644. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26645. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  26646. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  26647. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26648. </para>
  26649. <para>
  26650. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26651. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  26652. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  26653. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26654. </para>
  26655. </remarks>
  26656. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26657. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26658. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  26659. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26660. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26661. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26662. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26663. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26664. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26665. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26666. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26667. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  26668. </member>
  26669. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Double[0:,0:,0:])">
  26670. <summary>
  26671. Builds a three-dimensional mipmap.
  26672. </summary>
  26673. <param name="target">
  26674. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  26675. </param>
  26676. <param name="internalFormat">
  26677. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  26678. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26679. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  26680. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  26681. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  26682. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  26683. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  26684. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  26685. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  26686. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  26687. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  26688. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  26689. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  26690. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  26691. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  26692. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  26693. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  26694. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  26695. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  26696. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  26697. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  26698. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  26699. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  26700. </param>
  26701. <param name="width">
  26702. Specifies, in pixels, the width in pixels of the texture image.
  26703. </param>
  26704. <param name="height">
  26705. Specifies, in pixels, the height in pixels of the texture image.
  26706. </param>
  26707. <param name="depth">
  26708. Specifies, in pixels, the depth in pixels of the texture image.
  26709. </param>
  26710. <param name="format">
  26711. Specifies the format of the pixel data. Must be one of
  26712. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  26713. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  26714. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26715. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  26716. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  26717. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  26718. </param>
  26719. <param name="type">
  26720. Specifies the data type for <i>data</i>. Must be one of:
  26721. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  26722. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  26723. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  26724. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  26725. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26726. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26727. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26728. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26729. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26730. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26731. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26732. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26733. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26734. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26735. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  26736. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  26737. </param>
  26738. <param name="data">
  26739. Specifies a pointer to the image data in memory.
  26740. </param>
  26741. <returns>
  26742. A return value of zero indicates success, otherwise a GLU error code is
  26743. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26744. </returns>
  26745. <remarks>
  26746. <para>
  26747. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  26748. texture maps of decreasing resolutions called a mipmap. This is used for the
  26749. antialiasing of texture-mapped primitives.
  26750. </para>
  26751. <para>
  26752. A return value of zero indicates success, otherwise a GLU error code is
  26753. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26754. </para>
  26755. <para>
  26756. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  26757. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  26758. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  26759. This copy will be used for subsequent mipmapping operations described below.
  26760. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  26761. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  26762. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  26763. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  26764. and up to 32 in <i>depth</i>, before mipmapping takes place.
  26765. </para>
  26766. <para>
  26767. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  26768. determine if the implementation can fit the requested texture. If not, all
  26769. three dimensions are continually halved until it fits.
  26770. </para>
  26771. <para>
  26772. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  26773. in half along all three dimensions until size 1×1×1 is reached. At each
  26774. level, each texel in the halved mipmap level is an average of the
  26775. corresponding eight texels in the larger mipmap level. (If exactly one of
  26776. the dimensions is 1, four texels are averaged. If exactly two of the
  26777. dimensions are 1, two texels are averaged.)
  26778. </para>
  26779. <para>
  26780. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  26781. Level 0 is a copy of <i>data</i>. The highest level is
  26782. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  26783. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  26784. a texture of this size, the following mipmap levels are built: 64×16×32,
  26785. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  26786. through 6, respectively.
  26787. </para>
  26788. <para>
  26789. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  26790. the acceptable values for <i>format</i> parameter. See the
  26791. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  26792. acceptable values for <i>type</i> parameter.
  26793. </para>
  26794. <para>
  26795. <b>NOTES</b>
  26796. </para>
  26797. <para>
  26798. There is no direct way of querying the maximum level. This can be derived
  26799. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  26800. the width, height and depth actually used at level 0. (The width, height
  26801. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  26802. respectively since proxy textures might have scaled them to fit the
  26803. implementation.) Then the maximum level can be derived from the formula
  26804. <c>log2(max(width,height,depth))</c>.
  26805. </para>
  26806. <para>
  26807. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  26808. greater.
  26809. </para>
  26810. <para>
  26811. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  26812. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26813. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26814. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26815. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26816. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26819. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26820. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26821. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26822. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  26823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  26824. version is 1.2 or greater.
  26825. </para>
  26826. <para>
  26827. <b>ERRORS</b>
  26828. </para>
  26829. <para>
  26830. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  26831. or <i>depth</i> is &lt; 1.
  26832. </para>
  26833. <para>
  26834. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  26835. <i>format</i>, or <i>type</i> is not legal.
  26836. </para>
  26837. <para>
  26838. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26839. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  26840. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  26841. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26842. </para>
  26843. <para>
  26844. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26845. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  26846. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  26847. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  26848. </para>
  26849. <para>
  26850. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26851. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  26852. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  26853. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26854. </para>
  26855. <para>
  26856. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26857. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  26858. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  26859. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26860. </para>
  26861. <para>
  26862. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26863. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  26864. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  26865. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26866. </para>
  26867. <para>
  26868. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  26869. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  26870. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  26871. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  26872. </para>
  26873. </remarks>
  26874. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26875. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26876. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  26877. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26878. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26879. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  26880. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26881. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26882. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26883. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26884. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  26885. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  26886. </member>
  26887. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[])">
  26888. <summary>
  26889. Builds a three-dimensional mipmap.
  26890. </summary>
  26891. <param name="target">
  26892. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  26893. </param>
  26894. <param name="internalFormat">
  26895. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  26896. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26897. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  26898. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  26899. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  26900. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  26901. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  26902. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  26903. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  26904. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  26905. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  26906. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  26907. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  26908. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  26909. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  26910. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  26911. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  26912. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  26913. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  26914. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  26915. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  26916. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  26917. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  26918. </param>
  26919. <param name="width">
  26920. Specifies, in pixels, the width in pixels of the texture image.
  26921. </param>
  26922. <param name="height">
  26923. Specifies, in pixels, the height in pixels of the texture image.
  26924. </param>
  26925. <param name="depth">
  26926. Specifies, in pixels, the depth in pixels of the texture image.
  26927. </param>
  26928. <param name="format">
  26929. Specifies the format of the pixel data. Must be one of
  26930. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  26931. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  26932. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  26933. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  26934. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  26935. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  26936. </param>
  26937. <param name="type">
  26938. Specifies the data type for <i>data</i>. Must be one of:
  26939. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  26940. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  26941. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  26942. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  26943. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  26944. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  26945. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  26946. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  26947. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  26948. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  26949. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  26950. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  26951. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  26952. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  26953. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  26954. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  26955. </param>
  26956. <param name="data">
  26957. Specifies a pointer to the image data in memory.
  26958. </param>
  26959. <returns>
  26960. A return value of zero indicates success, otherwise a GLU error code is
  26961. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26962. </returns>
  26963. <remarks>
  26964. <para>
  26965. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  26966. texture maps of decreasing resolutions called a mipmap. This is used for the
  26967. antialiasing of texture-mapped primitives.
  26968. </para>
  26969. <para>
  26970. A return value of zero indicates success, otherwise a GLU error code is
  26971. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  26972. </para>
  26973. <para>
  26974. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  26975. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  26976. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  26977. This copy will be used for subsequent mipmapping operations described below.
  26978. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  26979. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  26980. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  26981. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  26982. and up to 32 in <i>depth</i>, before mipmapping takes place.
  26983. </para>
  26984. <para>
  26985. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  26986. determine if the implementation can fit the requested texture. If not, all
  26987. three dimensions are continually halved until it fits.
  26988. </para>
  26989. <para>
  26990. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  26991. in half along all three dimensions until size 1×1×1 is reached. At each
  26992. level, each texel in the halved mipmap level is an average of the
  26993. corresponding eight texels in the larger mipmap level. (If exactly one of
  26994. the dimensions is 1, four texels are averaged. If exactly two of the
  26995. dimensions are 1, two texels are averaged.)
  26996. </para>
  26997. <para>
  26998. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  26999. Level 0 is a copy of <i>data</i>. The highest level is
  27000. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  27001. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  27002. a texture of this size, the following mipmap levels are built: 64×16×32,
  27003. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  27004. through 6, respectively.
  27005. </para>
  27006. <para>
  27007. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  27008. the acceptable values for <i>format</i> parameter. See the
  27009. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  27010. acceptable values for <i>type</i> parameter.
  27011. </para>
  27012. <para>
  27013. <b>NOTES</b>
  27014. </para>
  27015. <para>
  27016. There is no direct way of querying the maximum level. This can be derived
  27017. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  27018. the width, height and depth actually used at level 0. (The width, height
  27019. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  27020. respectively since proxy textures might have scaled them to fit the
  27021. implementation.) Then the maximum level can be derived from the formula
  27022. <c>log2(max(width,height,depth))</c>.
  27023. </para>
  27024. <para>
  27025. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  27026. greater.
  27027. </para>
  27028. <para>
  27029. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  27030. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27031. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27032. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27033. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27034. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27037. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27038. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27039. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27040. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  27041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  27042. version is 1.2 or greater.
  27043. </para>
  27044. <para>
  27045. <b>ERRORS</b>
  27046. </para>
  27047. <para>
  27048. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  27049. or <i>depth</i> is &lt; 1.
  27050. </para>
  27051. <para>
  27052. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  27053. <i>format</i>, or <i>type</i> is not legal.
  27054. </para>
  27055. <para>
  27056. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27057. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  27058. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  27059. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27060. </para>
  27061. <para>
  27062. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27063. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  27064. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  27065. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27066. </para>
  27067. <para>
  27068. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27069. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  27070. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  27071. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27072. </para>
  27073. <para>
  27074. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27075. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  27076. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  27077. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27078. </para>
  27079. <para>
  27080. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27081. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  27082. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  27083. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27084. </para>
  27085. <para>
  27086. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27087. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  27088. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  27089. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27090. </para>
  27091. </remarks>
  27092. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27093. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27094. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  27095. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27096. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27097. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27098. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27099. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27100. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27101. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27102. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27103. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  27104. </member>
  27105. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:])">
  27106. <summary>
  27107. Builds a three-dimensional mipmap.
  27108. </summary>
  27109. <param name="target">
  27110. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  27111. </param>
  27112. <param name="internalFormat">
  27113. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  27114. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27115. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  27116. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  27117. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  27118. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  27119. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  27120. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  27121. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  27122. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  27123. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  27124. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  27125. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  27126. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  27127. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  27128. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  27129. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  27130. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  27131. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  27132. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  27133. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  27134. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  27135. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  27136. </param>
  27137. <param name="width">
  27138. Specifies, in pixels, the width in pixels of the texture image.
  27139. </param>
  27140. <param name="height">
  27141. Specifies, in pixels, the height in pixels of the texture image.
  27142. </param>
  27143. <param name="depth">
  27144. Specifies, in pixels, the depth in pixels of the texture image.
  27145. </param>
  27146. <param name="format">
  27147. Specifies the format of the pixel data. Must be one of
  27148. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  27149. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  27150. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27151. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  27152. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  27153. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  27154. </param>
  27155. <param name="type">
  27156. Specifies the data type for <i>data</i>. Must be one of:
  27157. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  27158. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  27159. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  27160. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  27161. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27162. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27163. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27164. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27165. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27167. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27168. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27169. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27170. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27171. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  27172. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  27173. </param>
  27174. <param name="data">
  27175. Specifies a pointer to the image data in memory.
  27176. </param>
  27177. <returns>
  27178. A return value of zero indicates success, otherwise a GLU error code is
  27179. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27180. </returns>
  27181. <remarks>
  27182. <para>
  27183. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  27184. texture maps of decreasing resolutions called a mipmap. This is used for the
  27185. antialiasing of texture-mapped primitives.
  27186. </para>
  27187. <para>
  27188. A return value of zero indicates success, otherwise a GLU error code is
  27189. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27190. </para>
  27191. <para>
  27192. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  27193. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  27194. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  27195. This copy will be used for subsequent mipmapping operations described below.
  27196. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  27197. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  27198. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  27199. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  27200. and up to 32 in <i>depth</i>, before mipmapping takes place.
  27201. </para>
  27202. <para>
  27203. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  27204. determine if the implementation can fit the requested texture. If not, all
  27205. three dimensions are continually halved until it fits.
  27206. </para>
  27207. <para>
  27208. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  27209. in half along all three dimensions until size 1×1×1 is reached. At each
  27210. level, each texel in the halved mipmap level is an average of the
  27211. corresponding eight texels in the larger mipmap level. (If exactly one of
  27212. the dimensions is 1, four texels are averaged. If exactly two of the
  27213. dimensions are 1, two texels are averaged.)
  27214. </para>
  27215. <para>
  27216. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  27217. Level 0 is a copy of <i>data</i>. The highest level is
  27218. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  27219. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  27220. a texture of this size, the following mipmap levels are built: 64×16×32,
  27221. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  27222. through 6, respectively.
  27223. </para>
  27224. <para>
  27225. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  27226. the acceptable values for <i>format</i> parameter. See the
  27227. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  27228. acceptable values for <i>type</i> parameter.
  27229. </para>
  27230. <para>
  27231. <b>NOTES</b>
  27232. </para>
  27233. <para>
  27234. There is no direct way of querying the maximum level. This can be derived
  27235. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  27236. the width, height and depth actually used at level 0. (The width, height
  27237. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  27238. respectively since proxy textures might have scaled them to fit the
  27239. implementation.) Then the maximum level can be derived from the formula
  27240. <c>log2(max(width,height,depth))</c>.
  27241. </para>
  27242. <para>
  27243. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  27244. greater.
  27245. </para>
  27246. <para>
  27247. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  27248. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27249. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27250. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27251. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27252. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27253. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27254. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27255. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27256. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27257. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27258. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  27259. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  27260. version is 1.2 or greater.
  27261. </para>
  27262. <para>
  27263. <b>ERRORS</b>
  27264. </para>
  27265. <para>
  27266. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  27267. or <i>depth</i> is &lt; 1.
  27268. </para>
  27269. <para>
  27270. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  27271. <i>format</i>, or <i>type</i> is not legal.
  27272. </para>
  27273. <para>
  27274. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27275. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  27276. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  27277. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27278. </para>
  27279. <para>
  27280. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27281. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  27282. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  27283. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27284. </para>
  27285. <para>
  27286. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27287. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  27288. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  27289. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27290. </para>
  27291. <para>
  27292. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27293. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  27294. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  27295. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27296. </para>
  27297. <para>
  27298. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27299. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  27300. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  27301. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27302. </para>
  27303. <para>
  27304. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27305. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  27306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  27307. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27308. </para>
  27309. </remarks>
  27310. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27311. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27312. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  27313. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27314. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27315. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27316. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27317. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27318. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27319. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27320. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27321. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  27322. </member>
  27323. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int16[0:,0:,0:])">
  27324. <summary>
  27325. Builds a three-dimensional mipmap.
  27326. </summary>
  27327. <param name="target">
  27328. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  27329. </param>
  27330. <param name="internalFormat">
  27331. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  27332. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27333. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  27334. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  27335. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  27336. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  27337. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  27338. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  27339. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  27340. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  27341. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  27342. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  27343. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  27344. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  27345. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  27346. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  27347. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  27348. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  27349. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  27350. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  27351. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  27352. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  27353. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  27354. </param>
  27355. <param name="width">
  27356. Specifies, in pixels, the width in pixels of the texture image.
  27357. </param>
  27358. <param name="height">
  27359. Specifies, in pixels, the height in pixels of the texture image.
  27360. </param>
  27361. <param name="depth">
  27362. Specifies, in pixels, the depth in pixels of the texture image.
  27363. </param>
  27364. <param name="format">
  27365. Specifies the format of the pixel data. Must be one of
  27366. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  27367. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  27368. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27369. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  27370. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  27371. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  27372. </param>
  27373. <param name="type">
  27374. Specifies the data type for <i>data</i>. Must be one of:
  27375. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  27376. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  27377. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  27378. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  27379. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27380. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27381. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27382. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27383. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27384. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27388. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  27390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  27391. </param>
  27392. <param name="data">
  27393. Specifies a pointer to the image data in memory.
  27394. </param>
  27395. <returns>
  27396. A return value of zero indicates success, otherwise a GLU error code is
  27397. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27398. </returns>
  27399. <remarks>
  27400. <para>
  27401. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  27402. texture maps of decreasing resolutions called a mipmap. This is used for the
  27403. antialiasing of texture-mapped primitives.
  27404. </para>
  27405. <para>
  27406. A return value of zero indicates success, otherwise a GLU error code is
  27407. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27408. </para>
  27409. <para>
  27410. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  27411. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  27412. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  27413. This copy will be used for subsequent mipmapping operations described below.
  27414. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  27415. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  27416. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  27417. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  27418. and up to 32 in <i>depth</i>, before mipmapping takes place.
  27419. </para>
  27420. <para>
  27421. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  27422. determine if the implementation can fit the requested texture. If not, all
  27423. three dimensions are continually halved until it fits.
  27424. </para>
  27425. <para>
  27426. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  27427. in half along all three dimensions until size 1×1×1 is reached. At each
  27428. level, each texel in the halved mipmap level is an average of the
  27429. corresponding eight texels in the larger mipmap level. (If exactly one of
  27430. the dimensions is 1, four texels are averaged. If exactly two of the
  27431. dimensions are 1, two texels are averaged.)
  27432. </para>
  27433. <para>
  27434. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  27435. Level 0 is a copy of <i>data</i>. The highest level is
  27436. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  27437. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  27438. a texture of this size, the following mipmap levels are built: 64×16×32,
  27439. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  27440. through 6, respectively.
  27441. </para>
  27442. <para>
  27443. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  27444. the acceptable values for <i>format</i> parameter. See the
  27445. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  27446. acceptable values for <i>type</i> parameter.
  27447. </para>
  27448. <para>
  27449. <b>NOTES</b>
  27450. </para>
  27451. <para>
  27452. There is no direct way of querying the maximum level. This can be derived
  27453. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  27454. the width, height and depth actually used at level 0. (The width, height
  27455. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  27456. respectively since proxy textures might have scaled them to fit the
  27457. implementation.) Then the maximum level can be derived from the formula
  27458. <c>log2(max(width,height,depth))</c>.
  27459. </para>
  27460. <para>
  27461. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  27462. greater.
  27463. </para>
  27464. <para>
  27465. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  27466. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27467. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27468. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27469. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27470. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27471. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27472. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27473. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27475. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27476. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  27477. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  27478. version is 1.2 or greater.
  27479. </para>
  27480. <para>
  27481. <b>ERRORS</b>
  27482. </para>
  27483. <para>
  27484. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  27485. or <i>depth</i> is &lt; 1.
  27486. </para>
  27487. <para>
  27488. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  27489. <i>format</i>, or <i>type</i> is not legal.
  27490. </para>
  27491. <para>
  27492. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27493. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  27494. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  27495. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27496. </para>
  27497. <para>
  27498. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27499. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  27500. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  27501. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27502. </para>
  27503. <para>
  27504. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27505. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  27506. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  27507. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27508. </para>
  27509. <para>
  27510. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27511. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  27512. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  27513. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27514. </para>
  27515. <para>
  27516. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  27518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  27519. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27520. </para>
  27521. <para>
  27522. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27523. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  27524. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  27525. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27526. </para>
  27527. </remarks>
  27528. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27529. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27530. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  27531. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27532. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27533. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27534. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27535. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27536. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27537. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27538. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27539. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  27540. </member>
  27541. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[])">
  27542. <summary>
  27543. Builds a three-dimensional mipmap.
  27544. </summary>
  27545. <param name="target">
  27546. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  27547. </param>
  27548. <param name="internalFormat">
  27549. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  27550. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27551. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  27552. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  27553. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  27554. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  27555. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  27556. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  27557. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  27558. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  27559. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  27560. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  27561. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  27562. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  27563. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  27564. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  27565. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  27566. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  27567. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  27568. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  27569. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  27570. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  27571. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  27572. </param>
  27573. <param name="width">
  27574. Specifies, in pixels, the width in pixels of the texture image.
  27575. </param>
  27576. <param name="height">
  27577. Specifies, in pixels, the height in pixels of the texture image.
  27578. </param>
  27579. <param name="depth">
  27580. Specifies, in pixels, the depth in pixels of the texture image.
  27581. </param>
  27582. <param name="format">
  27583. Specifies the format of the pixel data. Must be one of
  27584. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  27585. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  27586. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27587. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  27588. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  27589. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  27590. </param>
  27591. <param name="type">
  27592. Specifies the data type for <i>data</i>. Must be one of:
  27593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  27594. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  27595. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  27596. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  27597. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27598. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27600. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27601. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27603. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27604. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27605. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27606. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27607. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  27608. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  27609. </param>
  27610. <param name="data">
  27611. Specifies a pointer to the image data in memory.
  27612. </param>
  27613. <returns>
  27614. A return value of zero indicates success, otherwise a GLU error code is
  27615. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27616. </returns>
  27617. <remarks>
  27618. <para>
  27619. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  27620. texture maps of decreasing resolutions called a mipmap. This is used for the
  27621. antialiasing of texture-mapped primitives.
  27622. </para>
  27623. <para>
  27624. A return value of zero indicates success, otherwise a GLU error code is
  27625. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27626. </para>
  27627. <para>
  27628. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  27629. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  27630. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  27631. This copy will be used for subsequent mipmapping operations described below.
  27632. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  27633. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  27634. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  27635. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  27636. and up to 32 in <i>depth</i>, before mipmapping takes place.
  27637. </para>
  27638. <para>
  27639. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  27640. determine if the implementation can fit the requested texture. If not, all
  27641. three dimensions are continually halved until it fits.
  27642. </para>
  27643. <para>
  27644. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  27645. in half along all three dimensions until size 1×1×1 is reached. At each
  27646. level, each texel in the halved mipmap level is an average of the
  27647. corresponding eight texels in the larger mipmap level. (If exactly one of
  27648. the dimensions is 1, four texels are averaged. If exactly two of the
  27649. dimensions are 1, two texels are averaged.)
  27650. </para>
  27651. <para>
  27652. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  27653. Level 0 is a copy of <i>data</i>. The highest level is
  27654. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  27655. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  27656. a texture of this size, the following mipmap levels are built: 64×16×32,
  27657. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  27658. through 6, respectively.
  27659. </para>
  27660. <para>
  27661. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  27662. the acceptable values for <i>format</i> parameter. See the
  27663. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  27664. acceptable values for <i>type</i> parameter.
  27665. </para>
  27666. <para>
  27667. <b>NOTES</b>
  27668. </para>
  27669. <para>
  27670. There is no direct way of querying the maximum level. This can be derived
  27671. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  27672. the width, height and depth actually used at level 0. (The width, height
  27673. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  27674. respectively since proxy textures might have scaled them to fit the
  27675. implementation.) Then the maximum level can be derived from the formula
  27676. <c>log2(max(width,height,depth))</c>.
  27677. </para>
  27678. <para>
  27679. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  27680. greater.
  27681. </para>
  27682. <para>
  27683. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  27684. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27685. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27686. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27687. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27688. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27689. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27690. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27691. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27692. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27693. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27694. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  27695. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  27696. version is 1.2 or greater.
  27697. </para>
  27698. <para>
  27699. <b>ERRORS</b>
  27700. </para>
  27701. <para>
  27702. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  27703. or <i>depth</i> is &lt; 1.
  27704. </para>
  27705. <para>
  27706. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  27707. <i>format</i>, or <i>type</i> is not legal.
  27708. </para>
  27709. <para>
  27710. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27711. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  27712. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  27713. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27714. </para>
  27715. <para>
  27716. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27717. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  27718. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  27719. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27720. </para>
  27721. <para>
  27722. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27723. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  27724. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  27725. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27726. </para>
  27727. <para>
  27728. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27729. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  27730. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  27731. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27732. </para>
  27733. <para>
  27734. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27735. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  27736. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  27737. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27738. </para>
  27739. <para>
  27740. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27741. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  27742. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  27743. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27744. </para>
  27745. </remarks>
  27746. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27747. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27748. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  27749. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27750. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27751. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27752. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27753. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27754. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27755. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27756. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27757. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  27758. </member>
  27759. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:])">
  27760. <summary>
  27761. Builds a three-dimensional mipmap.
  27762. </summary>
  27763. <param name="target">
  27764. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  27765. </param>
  27766. <param name="internalFormat">
  27767. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  27768. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27769. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  27770. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  27771. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  27772. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  27773. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  27774. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  27775. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  27776. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  27777. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  27778. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  27779. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  27780. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  27781. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  27782. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  27783. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  27784. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  27785. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  27786. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  27787. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  27788. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  27789. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  27790. </param>
  27791. <param name="width">
  27792. Specifies, in pixels, the width in pixels of the texture image.
  27793. </param>
  27794. <param name="height">
  27795. Specifies, in pixels, the height in pixels of the texture image.
  27796. </param>
  27797. <param name="depth">
  27798. Specifies, in pixels, the depth in pixels of the texture image.
  27799. </param>
  27800. <param name="format">
  27801. Specifies the format of the pixel data. Must be one of
  27802. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  27803. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  27804. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27805. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  27806. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  27807. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  27808. </param>
  27809. <param name="type">
  27810. Specifies the data type for <i>data</i>. Must be one of:
  27811. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  27812. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  27813. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  27814. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  27815. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27816. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27817. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27818. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27819. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27820. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27821. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27822. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27823. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27824. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27825. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  27826. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  27827. </param>
  27828. <param name="data">
  27829. Specifies a pointer to the image data in memory.
  27830. </param>
  27831. <returns>
  27832. A return value of zero indicates success, otherwise a GLU error code is
  27833. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27834. </returns>
  27835. <remarks>
  27836. <para>
  27837. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  27838. texture maps of decreasing resolutions called a mipmap. This is used for the
  27839. antialiasing of texture-mapped primitives.
  27840. </para>
  27841. <para>
  27842. A return value of zero indicates success, otherwise a GLU error code is
  27843. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  27844. </para>
  27845. <para>
  27846. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  27847. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  27848. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  27849. This copy will be used for subsequent mipmapping operations described below.
  27850. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  27851. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  27852. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  27853. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  27854. and up to 32 in <i>depth</i>, before mipmapping takes place.
  27855. </para>
  27856. <para>
  27857. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  27858. determine if the implementation can fit the requested texture. If not, all
  27859. three dimensions are continually halved until it fits.
  27860. </para>
  27861. <para>
  27862. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  27863. in half along all three dimensions until size 1×1×1 is reached. At each
  27864. level, each texel in the halved mipmap level is an average of the
  27865. corresponding eight texels in the larger mipmap level. (If exactly one of
  27866. the dimensions is 1, four texels are averaged. If exactly two of the
  27867. dimensions are 1, two texels are averaged.)
  27868. </para>
  27869. <para>
  27870. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  27871. Level 0 is a copy of <i>data</i>. The highest level is
  27872. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  27873. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  27874. a texture of this size, the following mipmap levels are built: 64×16×32,
  27875. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  27876. through 6, respectively.
  27877. </para>
  27878. <para>
  27879. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  27880. the acceptable values for <i>format</i> parameter. See the
  27881. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  27882. acceptable values for <i>type</i> parameter.
  27883. </para>
  27884. <para>
  27885. <b>NOTES</b>
  27886. </para>
  27887. <para>
  27888. There is no direct way of querying the maximum level. This can be derived
  27889. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  27890. the width, height and depth actually used at level 0. (The width, height
  27891. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  27892. respectively since proxy textures might have scaled them to fit the
  27893. implementation.) Then the maximum level can be derived from the formula
  27894. <c>log2(max(width,height,depth))</c>.
  27895. </para>
  27896. <para>
  27897. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  27898. greater.
  27899. </para>
  27900. <para>
  27901. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  27902. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  27903. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  27904. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  27905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  27906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  27907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  27908. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  27909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  27910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  27911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  27912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  27913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  27914. version is 1.2 or greater.
  27915. </para>
  27916. <para>
  27917. <b>ERRORS</b>
  27918. </para>
  27919. <para>
  27920. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  27921. or <i>depth</i> is &lt; 1.
  27922. </para>
  27923. <para>
  27924. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  27925. <i>format</i>, or <i>type</i> is not legal.
  27926. </para>
  27927. <para>
  27928. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27929. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  27930. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  27931. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27932. </para>
  27933. <para>
  27934. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27935. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  27936. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  27937. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  27938. </para>
  27939. <para>
  27940. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27941. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  27942. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  27943. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27944. </para>
  27945. <para>
  27946. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27947. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  27948. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  27949. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27950. </para>
  27951. <para>
  27952. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27953. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  27954. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  27955. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27956. </para>
  27957. <para>
  27958. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  27959. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  27960. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  27961. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  27962. </para>
  27963. </remarks>
  27964. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27965. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27966. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  27967. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27968. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27969. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  27970. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27971. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27972. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27973. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27974. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  27975. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  27976. </member>
  27977. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32[0:,0:,0:])">
  27978. <summary>
  27979. Builds a three-dimensional mipmap.
  27980. </summary>
  27981. <param name="target">
  27982. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  27983. </param>
  27984. <param name="internalFormat">
  27985. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  27986. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  27987. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  27988. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  27989. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  27990. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  27991. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  27992. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  27993. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  27994. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  27995. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  27996. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  27997. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  27998. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  27999. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  28000. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  28001. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  28002. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  28003. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  28004. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  28005. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  28006. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  28007. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  28008. </param>
  28009. <param name="width">
  28010. Specifies, in pixels, the width in pixels of the texture image.
  28011. </param>
  28012. <param name="height">
  28013. Specifies, in pixels, the height in pixels of the texture image.
  28014. </param>
  28015. <param name="depth">
  28016. Specifies, in pixels, the depth in pixels of the texture image.
  28017. </param>
  28018. <param name="format">
  28019. Specifies the format of the pixel data. Must be one of
  28020. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  28021. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  28022. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28023. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  28024. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  28025. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  28026. </param>
  28027. <param name="type">
  28028. Specifies the data type for <i>data</i>. Must be one of:
  28029. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  28030. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  28031. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  28032. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  28033. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28034. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28035. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28036. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28037. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28038. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28039. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28040. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28041. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28042. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28043. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  28044. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  28045. </param>
  28046. <param name="data">
  28047. Specifies a pointer to the image data in memory.
  28048. </param>
  28049. <returns>
  28050. A return value of zero indicates success, otherwise a GLU error code is
  28051. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28052. </returns>
  28053. <remarks>
  28054. <para>
  28055. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  28056. texture maps of decreasing resolutions called a mipmap. This is used for the
  28057. antialiasing of texture-mapped primitives.
  28058. </para>
  28059. <para>
  28060. A return value of zero indicates success, otherwise a GLU error code is
  28061. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28062. </para>
  28063. <para>
  28064. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  28065. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  28066. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  28067. This copy will be used for subsequent mipmapping operations described below.
  28068. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  28069. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  28070. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  28071. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  28072. and up to 32 in <i>depth</i>, before mipmapping takes place.
  28073. </para>
  28074. <para>
  28075. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  28076. determine if the implementation can fit the requested texture. If not, all
  28077. three dimensions are continually halved until it fits.
  28078. </para>
  28079. <para>
  28080. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  28081. in half along all three dimensions until size 1×1×1 is reached. At each
  28082. level, each texel in the halved mipmap level is an average of the
  28083. corresponding eight texels in the larger mipmap level. (If exactly one of
  28084. the dimensions is 1, four texels are averaged. If exactly two of the
  28085. dimensions are 1, two texels are averaged.)
  28086. </para>
  28087. <para>
  28088. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  28089. Level 0 is a copy of <i>data</i>. The highest level is
  28090. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  28091. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  28092. a texture of this size, the following mipmap levels are built: 64×16×32,
  28093. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  28094. through 6, respectively.
  28095. </para>
  28096. <para>
  28097. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  28098. the acceptable values for <i>format</i> parameter. See the
  28099. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  28100. acceptable values for <i>type</i> parameter.
  28101. </para>
  28102. <para>
  28103. <b>NOTES</b>
  28104. </para>
  28105. <para>
  28106. There is no direct way of querying the maximum level. This can be derived
  28107. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  28108. the width, height and depth actually used at level 0. (The width, height
  28109. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  28110. respectively since proxy textures might have scaled them to fit the
  28111. implementation.) Then the maximum level can be derived from the formula
  28112. <c>log2(max(width,height,depth))</c>.
  28113. </para>
  28114. <para>
  28115. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  28116. greater.
  28117. </para>
  28118. <para>
  28119. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  28120. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28122. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28123. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28124. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28125. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28127. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28128. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28129. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28130. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  28131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  28132. version is 1.2 or greater.
  28133. </para>
  28134. <para>
  28135. <b>ERRORS</b>
  28136. </para>
  28137. <para>
  28138. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  28139. or <i>depth</i> is &lt; 1.
  28140. </para>
  28141. <para>
  28142. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  28143. <i>format</i>, or <i>type</i> is not legal.
  28144. </para>
  28145. <para>
  28146. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28147. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  28148. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  28149. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28150. </para>
  28151. <para>
  28152. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28153. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  28154. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  28155. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28156. </para>
  28157. <para>
  28158. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28159. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  28160. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  28161. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28162. </para>
  28163. <para>
  28164. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28165. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  28166. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  28167. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28168. </para>
  28169. <para>
  28170. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28171. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  28172. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  28173. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28174. </para>
  28175. <para>
  28176. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28177. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  28178. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  28179. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28180. </para>
  28181. </remarks>
  28182. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28183. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28184. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  28185. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28186. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28187. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28188. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28189. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28190. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28191. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28192. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28193. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  28194. </member>
  28195. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[])">
  28196. <summary>
  28197. Builds a three-dimensional mipmap.
  28198. </summary>
  28199. <param name="target">
  28200. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  28201. </param>
  28202. <param name="internalFormat">
  28203. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  28204. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28205. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  28206. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  28207. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  28208. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  28209. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  28210. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  28211. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  28212. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  28213. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  28214. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  28215. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  28216. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  28217. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  28218. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  28219. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  28220. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  28221. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  28222. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  28223. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  28224. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  28225. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  28226. </param>
  28227. <param name="width">
  28228. Specifies, in pixels, the width in pixels of the texture image.
  28229. </param>
  28230. <param name="height">
  28231. Specifies, in pixels, the height in pixels of the texture image.
  28232. </param>
  28233. <param name="depth">
  28234. Specifies, in pixels, the depth in pixels of the texture image.
  28235. </param>
  28236. <param name="format">
  28237. Specifies the format of the pixel data. Must be one of
  28238. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  28239. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  28240. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28241. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  28242. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  28243. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  28244. </param>
  28245. <param name="type">
  28246. Specifies the data type for <i>data</i>. Must be one of:
  28247. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  28248. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  28249. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  28250. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  28251. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28252. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28253. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28254. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28255. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28256. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28257. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28258. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28259. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28260. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  28262. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  28263. </param>
  28264. <param name="data">
  28265. Specifies a pointer to the image data in memory.
  28266. </param>
  28267. <returns>
  28268. A return value of zero indicates success, otherwise a GLU error code is
  28269. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28270. </returns>
  28271. <remarks>
  28272. <para>
  28273. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  28274. texture maps of decreasing resolutions called a mipmap. This is used for the
  28275. antialiasing of texture-mapped primitives.
  28276. </para>
  28277. <para>
  28278. A return value of zero indicates success, otherwise a GLU error code is
  28279. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28280. </para>
  28281. <para>
  28282. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  28283. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  28284. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  28285. This copy will be used for subsequent mipmapping operations described below.
  28286. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  28287. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  28288. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  28289. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  28290. and up to 32 in <i>depth</i>, before mipmapping takes place.
  28291. </para>
  28292. <para>
  28293. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  28294. determine if the implementation can fit the requested texture. If not, all
  28295. three dimensions are continually halved until it fits.
  28296. </para>
  28297. <para>
  28298. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  28299. in half along all three dimensions until size 1×1×1 is reached. At each
  28300. level, each texel in the halved mipmap level is an average of the
  28301. corresponding eight texels in the larger mipmap level. (If exactly one of
  28302. the dimensions is 1, four texels are averaged. If exactly two of the
  28303. dimensions are 1, two texels are averaged.)
  28304. </para>
  28305. <para>
  28306. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  28307. Level 0 is a copy of <i>data</i>. The highest level is
  28308. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  28309. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  28310. a texture of this size, the following mipmap levels are built: 64×16×32,
  28311. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  28312. through 6, respectively.
  28313. </para>
  28314. <para>
  28315. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  28316. the acceptable values for <i>format</i> parameter. See the
  28317. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  28318. acceptable values for <i>type</i> parameter.
  28319. </para>
  28320. <para>
  28321. <b>NOTES</b>
  28322. </para>
  28323. <para>
  28324. There is no direct way of querying the maximum level. This can be derived
  28325. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  28326. the width, height and depth actually used at level 0. (The width, height
  28327. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  28328. respectively since proxy textures might have scaled them to fit the
  28329. implementation.) Then the maximum level can be derived from the formula
  28330. <c>log2(max(width,height,depth))</c>.
  28331. </para>
  28332. <para>
  28333. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  28334. greater.
  28335. </para>
  28336. <para>
  28337. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  28338. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28339. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28342. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28343. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28348. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  28349. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  28350. version is 1.2 or greater.
  28351. </para>
  28352. <para>
  28353. <b>ERRORS</b>
  28354. </para>
  28355. <para>
  28356. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  28357. or <i>depth</i> is &lt; 1.
  28358. </para>
  28359. <para>
  28360. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  28361. <i>format</i>, or <i>type</i> is not legal.
  28362. </para>
  28363. <para>
  28364. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28365. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  28366. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  28367. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28368. </para>
  28369. <para>
  28370. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28371. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  28372. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  28373. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28374. </para>
  28375. <para>
  28376. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28377. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  28378. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  28379. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28380. </para>
  28381. <para>
  28382. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28383. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  28384. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  28385. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28386. </para>
  28387. <para>
  28388. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28389. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  28390. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  28391. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28392. </para>
  28393. <para>
  28394. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28395. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  28396. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  28397. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28398. </para>
  28399. </remarks>
  28400. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28401. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28402. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  28403. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28404. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28405. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28406. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28407. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28408. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28409. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28410. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28411. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  28412. </member>
  28413. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:])">
  28414. <summary>
  28415. Builds a three-dimensional mipmap.
  28416. </summary>
  28417. <param name="target">
  28418. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  28419. </param>
  28420. <param name="internalFormat">
  28421. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  28422. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28423. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  28424. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  28425. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  28426. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  28427. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  28428. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  28429. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  28430. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  28431. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  28432. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  28433. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  28434. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  28435. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  28436. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  28437. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  28438. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  28439. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  28440. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  28441. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  28442. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  28443. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  28444. </param>
  28445. <param name="width">
  28446. Specifies, in pixels, the width in pixels of the texture image.
  28447. </param>
  28448. <param name="height">
  28449. Specifies, in pixels, the height in pixels of the texture image.
  28450. </param>
  28451. <param name="depth">
  28452. Specifies, in pixels, the depth in pixels of the texture image.
  28453. </param>
  28454. <param name="format">
  28455. Specifies the format of the pixel data. Must be one of
  28456. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  28457. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  28458. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28459. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  28460. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  28461. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  28462. </param>
  28463. <param name="type">
  28464. Specifies the data type for <i>data</i>. Must be one of:
  28465. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  28466. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  28467. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  28468. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  28469. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28470. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28471. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28472. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28473. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28475. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28476. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28477. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28478. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28479. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  28480. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  28481. </param>
  28482. <param name="data">
  28483. Specifies a pointer to the image data in memory.
  28484. </param>
  28485. <returns>
  28486. A return value of zero indicates success, otherwise a GLU error code is
  28487. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28488. </returns>
  28489. <remarks>
  28490. <para>
  28491. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  28492. texture maps of decreasing resolutions called a mipmap. This is used for the
  28493. antialiasing of texture-mapped primitives.
  28494. </para>
  28495. <para>
  28496. A return value of zero indicates success, otherwise a GLU error code is
  28497. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28498. </para>
  28499. <para>
  28500. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  28501. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  28502. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  28503. This copy will be used for subsequent mipmapping operations described below.
  28504. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  28505. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  28506. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  28507. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  28508. and up to 32 in <i>depth</i>, before mipmapping takes place.
  28509. </para>
  28510. <para>
  28511. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  28512. determine if the implementation can fit the requested texture. If not, all
  28513. three dimensions are continually halved until it fits.
  28514. </para>
  28515. <para>
  28516. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  28517. in half along all three dimensions until size 1×1×1 is reached. At each
  28518. level, each texel in the halved mipmap level is an average of the
  28519. corresponding eight texels in the larger mipmap level. (If exactly one of
  28520. the dimensions is 1, four texels are averaged. If exactly two of the
  28521. dimensions are 1, two texels are averaged.)
  28522. </para>
  28523. <para>
  28524. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  28525. Level 0 is a copy of <i>data</i>. The highest level is
  28526. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  28527. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  28528. a texture of this size, the following mipmap levels are built: 64×16×32,
  28529. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  28530. through 6, respectively.
  28531. </para>
  28532. <para>
  28533. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  28534. the acceptable values for <i>format</i> parameter. See the
  28535. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  28536. acceptable values for <i>type</i> parameter.
  28537. </para>
  28538. <para>
  28539. <b>NOTES</b>
  28540. </para>
  28541. <para>
  28542. There is no direct way of querying the maximum level. This can be derived
  28543. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  28544. the width, height and depth actually used at level 0. (The width, height
  28545. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  28546. respectively since proxy textures might have scaled them to fit the
  28547. implementation.) Then the maximum level can be derived from the formula
  28548. <c>log2(max(width,height,depth))</c>.
  28549. </para>
  28550. <para>
  28551. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  28552. greater.
  28553. </para>
  28554. <para>
  28555. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  28556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28557. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28558. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28559. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28560. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28561. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28562. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28563. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28565. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28566. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  28567. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  28568. version is 1.2 or greater.
  28569. </para>
  28570. <para>
  28571. <b>ERRORS</b>
  28572. </para>
  28573. <para>
  28574. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  28575. or <i>depth</i> is &lt; 1.
  28576. </para>
  28577. <para>
  28578. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  28579. <i>format</i>, or <i>type</i> is not legal.
  28580. </para>
  28581. <para>
  28582. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28583. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  28584. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  28585. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28586. </para>
  28587. <para>
  28588. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28589. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  28590. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  28591. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28592. </para>
  28593. <para>
  28594. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  28596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  28597. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28598. </para>
  28599. <para>
  28600. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28601. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  28602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  28603. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28604. </para>
  28605. <para>
  28606. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28607. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  28608. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  28609. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28610. </para>
  28611. <para>
  28612. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28613. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  28614. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  28615. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28616. </para>
  28617. </remarks>
  28618. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28619. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28620. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  28621. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28622. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28623. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28624. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28625. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28626. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28627. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28628. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28629. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  28630. </member>
  28631. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single[0:,0:,0:])">
  28632. <summary>
  28633. Builds a three-dimensional mipmap.
  28634. </summary>
  28635. <param name="target">
  28636. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  28637. </param>
  28638. <param name="internalFormat">
  28639. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  28640. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28641. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  28642. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  28643. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  28644. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  28645. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  28646. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  28647. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  28648. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  28649. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  28650. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  28651. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  28652. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  28653. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  28654. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  28655. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  28656. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  28657. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  28658. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  28659. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  28660. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  28661. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  28662. </param>
  28663. <param name="width">
  28664. Specifies, in pixels, the width in pixels of the texture image.
  28665. </param>
  28666. <param name="height">
  28667. Specifies, in pixels, the height in pixels of the texture image.
  28668. </param>
  28669. <param name="depth">
  28670. Specifies, in pixels, the depth in pixels of the texture image.
  28671. </param>
  28672. <param name="format">
  28673. Specifies the format of the pixel data. Must be one of
  28674. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  28675. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  28676. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28677. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  28678. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  28679. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  28680. </param>
  28681. <param name="type">
  28682. Specifies the data type for <i>data</i>. Must be one of:
  28683. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  28684. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  28685. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  28686. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  28687. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28688. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28689. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28690. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28691. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28692. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28693. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28694. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28695. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28696. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28697. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  28698. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  28699. </param>
  28700. <param name="data">
  28701. Specifies a pointer to the image data in memory.
  28702. </param>
  28703. <returns>
  28704. A return value of zero indicates success, otherwise a GLU error code is
  28705. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28706. </returns>
  28707. <remarks>
  28708. <para>
  28709. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  28710. texture maps of decreasing resolutions called a mipmap. This is used for the
  28711. antialiasing of texture-mapped primitives.
  28712. </para>
  28713. <para>
  28714. A return value of zero indicates success, otherwise a GLU error code is
  28715. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28716. </para>
  28717. <para>
  28718. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  28719. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  28720. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  28721. This copy will be used for subsequent mipmapping operations described below.
  28722. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  28723. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  28724. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  28725. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  28726. and up to 32 in <i>depth</i>, before mipmapping takes place.
  28727. </para>
  28728. <para>
  28729. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  28730. determine if the implementation can fit the requested texture. If not, all
  28731. three dimensions are continually halved until it fits.
  28732. </para>
  28733. <para>
  28734. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  28735. in half along all three dimensions until size 1×1×1 is reached. At each
  28736. level, each texel in the halved mipmap level is an average of the
  28737. corresponding eight texels in the larger mipmap level. (If exactly one of
  28738. the dimensions is 1, four texels are averaged. If exactly two of the
  28739. dimensions are 1, two texels are averaged.)
  28740. </para>
  28741. <para>
  28742. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  28743. Level 0 is a copy of <i>data</i>. The highest level is
  28744. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  28745. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  28746. a texture of this size, the following mipmap levels are built: 64×16×32,
  28747. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  28748. through 6, respectively.
  28749. </para>
  28750. <para>
  28751. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  28752. the acceptable values for <i>format</i> parameter. See the
  28753. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  28754. acceptable values for <i>type</i> parameter.
  28755. </para>
  28756. <para>
  28757. <b>NOTES</b>
  28758. </para>
  28759. <para>
  28760. There is no direct way of querying the maximum level. This can be derived
  28761. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  28762. the width, height and depth actually used at level 0. (The width, height
  28763. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  28764. respectively since proxy textures might have scaled them to fit the
  28765. implementation.) Then the maximum level can be derived from the formula
  28766. <c>log2(max(width,height,depth))</c>.
  28767. </para>
  28768. <para>
  28769. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  28770. greater.
  28771. </para>
  28772. <para>
  28773. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  28774. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28775. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28776. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28777. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28778. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28779. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28781. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28782. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28783. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28784. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  28785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  28786. version is 1.2 or greater.
  28787. </para>
  28788. <para>
  28789. <b>ERRORS</b>
  28790. </para>
  28791. <para>
  28792. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  28793. or <i>depth</i> is &lt; 1.
  28794. </para>
  28795. <para>
  28796. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  28797. <i>format</i>, or <i>type</i> is not legal.
  28798. </para>
  28799. <para>
  28800. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28801. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  28802. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  28803. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28804. </para>
  28805. <para>
  28806. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28807. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  28808. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  28809. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  28810. </para>
  28811. <para>
  28812. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28813. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  28814. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  28815. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28816. </para>
  28817. <para>
  28818. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28819. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  28820. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  28821. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28822. </para>
  28823. <para>
  28824. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28825. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  28826. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  28827. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28828. </para>
  28829. <para>
  28830. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  28831. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  28832. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  28833. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  28834. </para>
  28835. </remarks>
  28836. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28837. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28838. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  28839. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28840. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28841. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  28842. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28843. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28844. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28845. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28846. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  28847. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  28848. </member>
  28849. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[])">
  28850. <summary>
  28851. Builds a three-dimensional mipmap.
  28852. </summary>
  28853. <param name="target">
  28854. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  28855. </param>
  28856. <param name="internalFormat">
  28857. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  28858. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28859. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  28860. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  28861. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  28862. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  28863. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  28864. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  28865. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  28866. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  28867. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  28868. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  28869. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  28870. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  28871. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  28872. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  28873. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  28874. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  28875. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  28876. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  28877. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  28878. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  28879. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  28880. </param>
  28881. <param name="width">
  28882. Specifies, in pixels, the width in pixels of the texture image.
  28883. </param>
  28884. <param name="height">
  28885. Specifies, in pixels, the height in pixels of the texture image.
  28886. </param>
  28887. <param name="depth">
  28888. Specifies, in pixels, the depth in pixels of the texture image.
  28889. </param>
  28890. <param name="format">
  28891. Specifies the format of the pixel data. Must be one of
  28892. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  28893. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  28894. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  28895. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  28896. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  28897. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  28898. </param>
  28899. <param name="type">
  28900. Specifies the data type for <i>data</i>. Must be one of:
  28901. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  28902. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  28903. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  28904. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  28905. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28906. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28907. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28908. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28911. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28912. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  28913. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  28914. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  28915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  28916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  28917. </param>
  28918. <param name="data">
  28919. Specifies a pointer to the image data in memory.
  28920. </param>
  28921. <returns>
  28922. A return value of zero indicates success, otherwise a GLU error code is
  28923. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28924. </returns>
  28925. <remarks>
  28926. <para>
  28927. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  28928. texture maps of decreasing resolutions called a mipmap. This is used for the
  28929. antialiasing of texture-mapped primitives.
  28930. </para>
  28931. <para>
  28932. A return value of zero indicates success, otherwise a GLU error code is
  28933. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  28934. </para>
  28935. <para>
  28936. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  28937. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  28938. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  28939. This copy will be used for subsequent mipmapping operations described below.
  28940. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  28941. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  28942. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  28943. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  28944. and up to 32 in <i>depth</i>, before mipmapping takes place.
  28945. </para>
  28946. <para>
  28947. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  28948. determine if the implementation can fit the requested texture. If not, all
  28949. three dimensions are continually halved until it fits.
  28950. </para>
  28951. <para>
  28952. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  28953. in half along all three dimensions until size 1×1×1 is reached. At each
  28954. level, each texel in the halved mipmap level is an average of the
  28955. corresponding eight texels in the larger mipmap level. (If exactly one of
  28956. the dimensions is 1, four texels are averaged. If exactly two of the
  28957. dimensions are 1, two texels are averaged.)
  28958. </para>
  28959. <para>
  28960. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  28961. Level 0 is a copy of <i>data</i>. The highest level is
  28962. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  28963. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  28964. a texture of this size, the following mipmap levels are built: 64×16×32,
  28965. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  28966. through 6, respectively.
  28967. </para>
  28968. <para>
  28969. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  28970. the acceptable values for <i>format</i> parameter. See the
  28971. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  28972. acceptable values for <i>type</i> parameter.
  28973. </para>
  28974. <para>
  28975. <b>NOTES</b>
  28976. </para>
  28977. <para>
  28978. There is no direct way of querying the maximum level. This can be derived
  28979. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  28980. the width, height and depth actually used at level 0. (The width, height
  28981. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  28982. respectively since proxy textures might have scaled them to fit the
  28983. implementation.) Then the maximum level can be derived from the formula
  28984. <c>log2(max(width,height,depth))</c>.
  28985. </para>
  28986. <para>
  28987. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  28988. greater.
  28989. </para>
  28990. <para>
  28991. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  28992. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  28993. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  28994. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  28995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  28996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  28997. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  28998. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  28999. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29002. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  29003. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  29004. version is 1.2 or greater.
  29005. </para>
  29006. <para>
  29007. <b>ERRORS</b>
  29008. </para>
  29009. <para>
  29010. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  29011. or <i>depth</i> is &lt; 1.
  29012. </para>
  29013. <para>
  29014. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  29015. <i>format</i>, or <i>type</i> is not legal.
  29016. </para>
  29017. <para>
  29018. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29019. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  29020. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  29021. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29022. </para>
  29023. <para>
  29024. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29025. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  29026. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  29027. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29028. </para>
  29029. <para>
  29030. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29031. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  29032. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  29033. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29034. </para>
  29035. <para>
  29036. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29037. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  29038. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  29039. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29040. </para>
  29041. <para>
  29042. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29043. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  29044. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  29045. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29046. </para>
  29047. <para>
  29048. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29049. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  29050. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  29051. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29052. </para>
  29053. </remarks>
  29054. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29055. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29056. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  29057. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29058. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29059. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29060. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29061. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29062. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29063. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29064. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29065. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  29066. </member>
  29067. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:])">
  29068. <summary>
  29069. Builds a three-dimensional mipmap.
  29070. </summary>
  29071. <param name="target">
  29072. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  29073. </param>
  29074. <param name="internalFormat">
  29075. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  29076. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29077. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  29078. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  29079. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  29080. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  29081. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  29082. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  29083. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  29084. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  29085. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  29086. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  29087. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  29088. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  29089. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  29090. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  29091. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  29092. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  29093. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  29094. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  29095. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  29096. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  29097. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  29098. </param>
  29099. <param name="width">
  29100. Specifies, in pixels, the width in pixels of the texture image.
  29101. </param>
  29102. <param name="height">
  29103. Specifies, in pixels, the height in pixels of the texture image.
  29104. </param>
  29105. <param name="depth">
  29106. Specifies, in pixels, the depth in pixels of the texture image.
  29107. </param>
  29108. <param name="format">
  29109. Specifies the format of the pixel data. Must be one of
  29110. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  29111. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  29112. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29113. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  29114. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  29115. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  29116. </param>
  29117. <param name="type">
  29118. Specifies the data type for <i>data</i>. Must be one of:
  29119. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  29120. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  29121. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  29122. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  29123. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29124. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29125. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29126. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29127. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29128. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29129. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29130. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29131. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29132. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29133. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  29134. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  29135. </param>
  29136. <param name="data">
  29137. Specifies a pointer to the image data in memory.
  29138. </param>
  29139. <returns>
  29140. A return value of zero indicates success, otherwise a GLU error code is
  29141. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29142. </returns>
  29143. <remarks>
  29144. <para>
  29145. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  29146. texture maps of decreasing resolutions called a mipmap. This is used for the
  29147. antialiasing of texture-mapped primitives.
  29148. </para>
  29149. <para>
  29150. A return value of zero indicates success, otherwise a GLU error code is
  29151. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29152. </para>
  29153. <para>
  29154. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  29155. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  29156. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  29157. This copy will be used for subsequent mipmapping operations described below.
  29158. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  29159. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  29160. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  29161. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  29162. and up to 32 in <i>depth</i>, before mipmapping takes place.
  29163. </para>
  29164. <para>
  29165. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  29166. determine if the implementation can fit the requested texture. If not, all
  29167. three dimensions are continually halved until it fits.
  29168. </para>
  29169. <para>
  29170. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  29171. in half along all three dimensions until size 1×1×1 is reached. At each
  29172. level, each texel in the halved mipmap level is an average of the
  29173. corresponding eight texels in the larger mipmap level. (If exactly one of
  29174. the dimensions is 1, four texels are averaged. If exactly two of the
  29175. dimensions are 1, two texels are averaged.)
  29176. </para>
  29177. <para>
  29178. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  29179. Level 0 is a copy of <i>data</i>. The highest level is
  29180. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  29181. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  29182. a texture of this size, the following mipmap levels are built: 64×16×32,
  29183. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  29184. through 6, respectively.
  29185. </para>
  29186. <para>
  29187. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  29188. the acceptable values for <i>format</i> parameter. See the
  29189. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  29190. acceptable values for <i>type</i> parameter.
  29191. </para>
  29192. <para>
  29193. <b>NOTES</b>
  29194. </para>
  29195. <para>
  29196. There is no direct way of querying the maximum level. This can be derived
  29197. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  29198. the width, height and depth actually used at level 0. (The width, height
  29199. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  29200. respectively since proxy textures might have scaled them to fit the
  29201. implementation.) Then the maximum level can be derived from the formula
  29202. <c>log2(max(width,height,depth))</c>.
  29203. </para>
  29204. <para>
  29205. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  29206. greater.
  29207. </para>
  29208. <para>
  29209. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  29210. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29211. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29212. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29214. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29219. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29220. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  29221. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  29222. version is 1.2 or greater.
  29223. </para>
  29224. <para>
  29225. <b>ERRORS</b>
  29226. </para>
  29227. <para>
  29228. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  29229. or <i>depth</i> is &lt; 1.
  29230. </para>
  29231. <para>
  29232. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  29233. <i>format</i>, or <i>type</i> is not legal.
  29234. </para>
  29235. <para>
  29236. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29237. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  29238. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  29239. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29240. </para>
  29241. <para>
  29242. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29243. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  29244. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  29245. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29246. </para>
  29247. <para>
  29248. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29249. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  29250. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  29251. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29252. </para>
  29253. <para>
  29254. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29255. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  29256. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  29257. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29258. </para>
  29259. <para>
  29260. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29261. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  29262. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  29263. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29264. </para>
  29265. <para>
  29266. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29267. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  29268. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  29269. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29270. </para>
  29271. </remarks>
  29272. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29273. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29274. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  29275. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29276. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29277. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29278. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29279. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29280. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29281. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29282. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29283. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  29284. </member>
  29285. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt16[0:,0:,0:])">
  29286. <summary>
  29287. Builds a three-dimensional mipmap.
  29288. </summary>
  29289. <param name="target">
  29290. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  29291. </param>
  29292. <param name="internalFormat">
  29293. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  29294. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29295. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  29296. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  29297. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  29298. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  29299. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  29300. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  29301. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  29302. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  29303. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  29304. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  29305. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  29306. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  29307. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  29308. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  29309. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  29310. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  29311. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  29312. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  29313. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  29314. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  29315. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  29316. </param>
  29317. <param name="width">
  29318. Specifies, in pixels, the width in pixels of the texture image.
  29319. </param>
  29320. <param name="height">
  29321. Specifies, in pixels, the height in pixels of the texture image.
  29322. </param>
  29323. <param name="depth">
  29324. Specifies, in pixels, the depth in pixels of the texture image.
  29325. </param>
  29326. <param name="format">
  29327. Specifies the format of the pixel data. Must be one of
  29328. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  29329. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  29330. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29331. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  29332. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  29333. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  29334. </param>
  29335. <param name="type">
  29336. Specifies the data type for <i>data</i>. Must be one of:
  29337. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  29338. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  29339. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  29340. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  29341. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29342. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29343. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29347. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29348. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29349. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29350. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29351. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  29352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  29353. </param>
  29354. <param name="data">
  29355. Specifies a pointer to the image data in memory.
  29356. </param>
  29357. <returns>
  29358. A return value of zero indicates success, otherwise a GLU error code is
  29359. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29360. </returns>
  29361. <remarks>
  29362. <para>
  29363. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  29364. texture maps of decreasing resolutions called a mipmap. This is used for the
  29365. antialiasing of texture-mapped primitives.
  29366. </para>
  29367. <para>
  29368. A return value of zero indicates success, otherwise a GLU error code is
  29369. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29370. </para>
  29371. <para>
  29372. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  29373. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  29374. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  29375. This copy will be used for subsequent mipmapping operations described below.
  29376. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  29377. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  29378. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  29379. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  29380. and up to 32 in <i>depth</i>, before mipmapping takes place.
  29381. </para>
  29382. <para>
  29383. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  29384. determine if the implementation can fit the requested texture. If not, all
  29385. three dimensions are continually halved until it fits.
  29386. </para>
  29387. <para>
  29388. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  29389. in half along all three dimensions until size 1×1×1 is reached. At each
  29390. level, each texel in the halved mipmap level is an average of the
  29391. corresponding eight texels in the larger mipmap level. (If exactly one of
  29392. the dimensions is 1, four texels are averaged. If exactly two of the
  29393. dimensions are 1, two texels are averaged.)
  29394. </para>
  29395. <para>
  29396. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  29397. Level 0 is a copy of <i>data</i>. The highest level is
  29398. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  29399. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  29400. a texture of this size, the following mipmap levels are built: 64×16×32,
  29401. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  29402. through 6, respectively.
  29403. </para>
  29404. <para>
  29405. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  29406. the acceptable values for <i>format</i> parameter. See the
  29407. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  29408. acceptable values for <i>type</i> parameter.
  29409. </para>
  29410. <para>
  29411. <b>NOTES</b>
  29412. </para>
  29413. <para>
  29414. There is no direct way of querying the maximum level. This can be derived
  29415. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  29416. the width, height and depth actually used at level 0. (The width, height
  29417. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  29418. respectively since proxy textures might have scaled them to fit the
  29419. implementation.) Then the maximum level can be derived from the formula
  29420. <c>log2(max(width,height,depth))</c>.
  29421. </para>
  29422. <para>
  29423. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  29424. greater.
  29425. </para>
  29426. <para>
  29427. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  29428. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29431. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29432. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29433. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29434. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29437. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29438. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  29439. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  29440. version is 1.2 or greater.
  29441. </para>
  29442. <para>
  29443. <b>ERRORS</b>
  29444. </para>
  29445. <para>
  29446. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  29447. or <i>depth</i> is &lt; 1.
  29448. </para>
  29449. <para>
  29450. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  29451. <i>format</i>, or <i>type</i> is not legal.
  29452. </para>
  29453. <para>
  29454. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29455. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  29456. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  29457. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29458. </para>
  29459. <para>
  29460. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29461. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  29462. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  29463. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29464. </para>
  29465. <para>
  29466. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29467. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  29468. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  29469. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29470. </para>
  29471. <para>
  29472. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29473. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  29474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  29475. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29476. </para>
  29477. <para>
  29478. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29479. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  29480. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  29481. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29482. </para>
  29483. <para>
  29484. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29485. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  29486. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  29487. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29488. </para>
  29489. </remarks>
  29490. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29491. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29492. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  29493. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29494. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29495. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29496. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29497. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29498. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29499. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29500. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29501. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  29502. </member>
  29503. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[])">
  29504. <summary>
  29505. Builds a three-dimensional mipmap.
  29506. </summary>
  29507. <param name="target">
  29508. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  29509. </param>
  29510. <param name="internalFormat">
  29511. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  29512. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29513. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  29514. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  29515. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  29516. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  29517. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  29518. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  29519. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  29520. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  29521. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  29522. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  29523. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  29524. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  29525. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  29526. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  29527. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  29528. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  29529. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  29530. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  29531. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  29532. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  29533. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  29534. </param>
  29535. <param name="width">
  29536. Specifies, in pixels, the width in pixels of the texture image.
  29537. </param>
  29538. <param name="height">
  29539. Specifies, in pixels, the height in pixels of the texture image.
  29540. </param>
  29541. <param name="depth">
  29542. Specifies, in pixels, the depth in pixels of the texture image.
  29543. </param>
  29544. <param name="format">
  29545. Specifies the format of the pixel data. Must be one of
  29546. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  29547. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  29548. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29549. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  29550. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  29551. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  29552. </param>
  29553. <param name="type">
  29554. Specifies the data type for <i>data</i>. Must be one of:
  29555. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  29556. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  29557. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  29558. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  29559. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29560. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29561. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29562. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29563. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29565. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29566. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29567. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29568. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  29570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  29571. </param>
  29572. <param name="data">
  29573. Specifies a pointer to the image data in memory.
  29574. </param>
  29575. <returns>
  29576. A return value of zero indicates success, otherwise a GLU error code is
  29577. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29578. </returns>
  29579. <remarks>
  29580. <para>
  29581. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  29582. texture maps of decreasing resolutions called a mipmap. This is used for the
  29583. antialiasing of texture-mapped primitives.
  29584. </para>
  29585. <para>
  29586. A return value of zero indicates success, otherwise a GLU error code is
  29587. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29588. </para>
  29589. <para>
  29590. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  29591. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  29592. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  29593. This copy will be used for subsequent mipmapping operations described below.
  29594. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  29595. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  29596. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  29597. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  29598. and up to 32 in <i>depth</i>, before mipmapping takes place.
  29599. </para>
  29600. <para>
  29601. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  29602. determine if the implementation can fit the requested texture. If not, all
  29603. three dimensions are continually halved until it fits.
  29604. </para>
  29605. <para>
  29606. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  29607. in half along all three dimensions until size 1×1×1 is reached. At each
  29608. level, each texel in the halved mipmap level is an average of the
  29609. corresponding eight texels in the larger mipmap level. (If exactly one of
  29610. the dimensions is 1, four texels are averaged. If exactly two of the
  29611. dimensions are 1, two texels are averaged.)
  29612. </para>
  29613. <para>
  29614. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  29615. Level 0 is a copy of <i>data</i>. The highest level is
  29616. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  29617. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  29618. a texture of this size, the following mipmap levels are built: 64×16×32,
  29619. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  29620. through 6, respectively.
  29621. </para>
  29622. <para>
  29623. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  29624. the acceptable values for <i>format</i> parameter. See the
  29625. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  29626. acceptable values for <i>type</i> parameter.
  29627. </para>
  29628. <para>
  29629. <b>NOTES</b>
  29630. </para>
  29631. <para>
  29632. There is no direct way of querying the maximum level. This can be derived
  29633. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  29634. the width, height and depth actually used at level 0. (The width, height
  29635. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  29636. respectively since proxy textures might have scaled them to fit the
  29637. implementation.) Then the maximum level can be derived from the formula
  29638. <c>log2(max(width,height,depth))</c>.
  29639. </para>
  29640. <para>
  29641. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  29642. greater.
  29643. </para>
  29644. <para>
  29645. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  29646. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29647. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29648. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29649. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29650. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29651. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29652. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29653. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29654. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29655. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29656. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  29657. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  29658. version is 1.2 or greater.
  29659. </para>
  29660. <para>
  29661. <b>ERRORS</b>
  29662. </para>
  29663. <para>
  29664. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  29665. or <i>depth</i> is &lt; 1.
  29666. </para>
  29667. <para>
  29668. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  29669. <i>format</i>, or <i>type</i> is not legal.
  29670. </para>
  29671. <para>
  29672. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29673. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  29674. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  29675. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29676. </para>
  29677. <para>
  29678. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29679. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  29680. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  29681. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29682. </para>
  29683. <para>
  29684. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29685. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  29686. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  29687. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29688. </para>
  29689. <para>
  29690. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29691. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  29692. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  29693. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29694. </para>
  29695. <para>
  29696. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29697. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  29698. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  29699. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29700. </para>
  29701. <para>
  29702. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29703. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  29704. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  29705. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29706. </para>
  29707. </remarks>
  29708. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29709. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29710. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  29711. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29712. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29713. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29714. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29715. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29716. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29717. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29718. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29719. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  29720. </member>
  29721. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:])">
  29722. <summary>
  29723. Builds a three-dimensional mipmap.
  29724. </summary>
  29725. <param name="target">
  29726. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  29727. </param>
  29728. <param name="internalFormat">
  29729. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  29730. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29731. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  29732. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  29733. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  29734. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  29735. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  29736. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  29737. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  29738. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  29739. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  29740. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  29741. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  29742. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  29743. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  29744. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  29745. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  29746. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  29747. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  29748. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  29749. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  29750. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  29751. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  29752. </param>
  29753. <param name="width">
  29754. Specifies, in pixels, the width in pixels of the texture image.
  29755. </param>
  29756. <param name="height">
  29757. Specifies, in pixels, the height in pixels of the texture image.
  29758. </param>
  29759. <param name="depth">
  29760. Specifies, in pixels, the depth in pixels of the texture image.
  29761. </param>
  29762. <param name="format">
  29763. Specifies the format of the pixel data. Must be one of
  29764. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  29765. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  29766. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29767. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  29768. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  29769. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  29770. </param>
  29771. <param name="type">
  29772. Specifies the data type for <i>data</i>. Must be one of:
  29773. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  29774. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  29775. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  29776. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  29777. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29778. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29779. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29780. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29781. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29782. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29783. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29784. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29785. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29786. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29787. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  29788. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  29789. </param>
  29790. <param name="data">
  29791. Specifies a pointer to the image data in memory.
  29792. </param>
  29793. <returns>
  29794. A return value of zero indicates success, otherwise a GLU error code is
  29795. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29796. </returns>
  29797. <remarks>
  29798. <para>
  29799. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  29800. texture maps of decreasing resolutions called a mipmap. This is used for the
  29801. antialiasing of texture-mapped primitives.
  29802. </para>
  29803. <para>
  29804. A return value of zero indicates success, otherwise a GLU error code is
  29805. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  29806. </para>
  29807. <para>
  29808. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  29809. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  29810. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  29811. This copy will be used for subsequent mipmapping operations described below.
  29812. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  29813. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  29814. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  29815. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  29816. and up to 32 in <i>depth</i>, before mipmapping takes place.
  29817. </para>
  29818. <para>
  29819. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  29820. determine if the implementation can fit the requested texture. If not, all
  29821. three dimensions are continually halved until it fits.
  29822. </para>
  29823. <para>
  29824. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  29825. in half along all three dimensions until size 1×1×1 is reached. At each
  29826. level, each texel in the halved mipmap level is an average of the
  29827. corresponding eight texels in the larger mipmap level. (If exactly one of
  29828. the dimensions is 1, four texels are averaged. If exactly two of the
  29829. dimensions are 1, two texels are averaged.)
  29830. </para>
  29831. <para>
  29832. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  29833. Level 0 is a copy of <i>data</i>. The highest level is
  29834. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  29835. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  29836. a texture of this size, the following mipmap levels are built: 64×16×32,
  29837. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  29838. through 6, respectively.
  29839. </para>
  29840. <para>
  29841. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  29842. the acceptable values for <i>format</i> parameter. See the
  29843. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  29844. acceptable values for <i>type</i> parameter.
  29845. </para>
  29846. <para>
  29847. <b>NOTES</b>
  29848. </para>
  29849. <para>
  29850. There is no direct way of querying the maximum level. This can be derived
  29851. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  29852. the width, height and depth actually used at level 0. (The width, height
  29853. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  29854. respectively since proxy textures might have scaled them to fit the
  29855. implementation.) Then the maximum level can be derived from the formula
  29856. <c>log2(max(width,height,depth))</c>.
  29857. </para>
  29858. <para>
  29859. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  29860. greater.
  29861. </para>
  29862. <para>
  29863. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  29864. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29865. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29866. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29867. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29868. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  29869. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  29870. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  29871. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  29872. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  29873. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  29874. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  29875. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  29876. version is 1.2 or greater.
  29877. </para>
  29878. <para>
  29879. <b>ERRORS</b>
  29880. </para>
  29881. <para>
  29882. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  29883. or <i>depth</i> is &lt; 1.
  29884. </para>
  29885. <para>
  29886. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  29887. <i>format</i>, or <i>type</i> is not legal.
  29888. </para>
  29889. <para>
  29890. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29891. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  29892. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  29893. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29894. </para>
  29895. <para>
  29896. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29897. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  29898. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  29899. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  29900. </para>
  29901. <para>
  29902. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29903. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  29904. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  29905. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29906. </para>
  29907. <para>
  29908. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29909. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  29910. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  29911. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29912. </para>
  29913. <para>
  29914. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29915. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  29916. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  29917. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29918. </para>
  29919. <para>
  29920. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  29921. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  29922. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  29923. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  29924. </para>
  29925. </remarks>
  29926. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29927. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29928. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  29929. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29930. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29931. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  29932. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29933. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29934. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29935. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29936. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  29937. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  29938. </member>
  29939. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32[0:,0:,0:])">
  29940. <summary>
  29941. Builds a three-dimensional mipmap.
  29942. </summary>
  29943. <param name="target">
  29944. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  29945. </param>
  29946. <param name="internalFormat">
  29947. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  29948. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29949. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  29950. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  29951. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  29952. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  29953. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  29954. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  29955. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  29956. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  29957. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  29958. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  29959. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  29960. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  29961. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  29962. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  29963. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  29964. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  29965. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  29966. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  29967. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  29968. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  29969. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  29970. </param>
  29971. <param name="width">
  29972. Specifies, in pixels, the width in pixels of the texture image.
  29973. </param>
  29974. <param name="height">
  29975. Specifies, in pixels, the height in pixels of the texture image.
  29976. </param>
  29977. <param name="depth">
  29978. Specifies, in pixels, the depth in pixels of the texture image.
  29979. </param>
  29980. <param name="format">
  29981. Specifies the format of the pixel data. Must be one of
  29982. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  29983. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  29984. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  29985. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  29986. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  29987. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  29988. </param>
  29989. <param name="type">
  29990. Specifies the data type for <i>data</i>. Must be one of:
  29991. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  29992. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  29993. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  29994. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  29995. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  29996. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  29997. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  29998. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  29999. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  30000. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  30001. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  30002. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  30003. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  30004. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  30005. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  30006. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  30007. </param>
  30008. <param name="data">
  30009. Specifies a pointer to the image data in memory.
  30010. </param>
  30011. <returns>
  30012. A return value of zero indicates success, otherwise a GLU error code is
  30013. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  30014. </returns>
  30015. <remarks>
  30016. <para>
  30017. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  30018. texture maps of decreasing resolutions called a mipmap. This is used for the
  30019. antialiasing of texture-mapped primitives.
  30020. </para>
  30021. <para>
  30022. A return value of zero indicates success, otherwise a GLU error code is
  30023. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  30024. </para>
  30025. <para>
  30026. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  30027. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  30028. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  30029. This copy will be used for subsequent mipmapping operations described below.
  30030. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  30031. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  30032. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  30033. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  30034. and up to 32 in <i>depth</i>, before mipmapping takes place.
  30035. </para>
  30036. <para>
  30037. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  30038. determine if the implementation can fit the requested texture. If not, all
  30039. three dimensions are continually halved until it fits.
  30040. </para>
  30041. <para>
  30042. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  30043. in half along all three dimensions until size 1×1×1 is reached. At each
  30044. level, each texel in the halved mipmap level is an average of the
  30045. corresponding eight texels in the larger mipmap level. (If exactly one of
  30046. the dimensions is 1, four texels are averaged. If exactly two of the
  30047. dimensions are 1, two texels are averaged.)
  30048. </para>
  30049. <para>
  30050. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  30051. Level 0 is a copy of <i>data</i>. The highest level is
  30052. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  30053. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  30054. a texture of this size, the following mipmap levels are built: 64×16×32,
  30055. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  30056. through 6, respectively.
  30057. </para>
  30058. <para>
  30059. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  30060. the acceptable values for <i>format</i> parameter. See the
  30061. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  30062. acceptable values for <i>type</i> parameter.
  30063. </para>
  30064. <para>
  30065. <b>NOTES</b>
  30066. </para>
  30067. <para>
  30068. There is no direct way of querying the maximum level. This can be derived
  30069. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  30070. the width, height and depth actually used at level 0. (The width, height
  30071. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  30072. respectively since proxy textures might have scaled them to fit the
  30073. implementation.) Then the maximum level can be derived from the formula
  30074. <c>log2(max(width,height,depth))</c>.
  30075. </para>
  30076. <para>
  30077. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  30078. greater.
  30079. </para>
  30080. <para>
  30081. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  30082. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  30083. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  30084. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  30085. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  30086. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  30087. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  30088. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  30089. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  30090. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  30091. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  30092. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  30093. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  30094. version is 1.2 or greater.
  30095. </para>
  30096. <para>
  30097. <b>ERRORS</b>
  30098. </para>
  30099. <para>
  30100. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  30101. or <i>depth</i> is &lt; 1.
  30102. </para>
  30103. <para>
  30104. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  30105. <i>format</i>, or <i>type</i> is not legal.
  30106. </para>
  30107. <para>
  30108. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30109. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  30110. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  30111. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  30112. </para>
  30113. <para>
  30114. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30115. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  30116. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  30117. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  30118. </para>
  30119. <para>
  30120. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30121. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  30122. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  30123. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30124. </para>
  30125. <para>
  30126. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30127. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  30128. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  30129. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30130. </para>
  30131. <para>
  30132. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30133. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  30134. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  30135. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30136. </para>
  30137. <para>
  30138. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30139. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  30140. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  30141. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30142. </para>
  30143. </remarks>
  30144. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30145. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30146. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  30147. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30148. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30149. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30150. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30151. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30152. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30153. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30154. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30155. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  30156. </member>
  30157. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
  30158. <summary>
  30159. Builds a three-dimensional mipmap.
  30160. </summary>
  30161. <param name="target">
  30162. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  30163. </param>
  30164. <param name="internalFormat">
  30165. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  30166. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  30167. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  30168. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  30169. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  30170. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  30171. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  30172. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  30173. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  30174. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  30175. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  30176. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  30177. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  30178. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  30179. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  30180. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  30181. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  30182. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  30183. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  30184. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  30185. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  30186. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  30187. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  30188. </param>
  30189. <param name="width">
  30190. Specifies, in pixels, the width in pixels of the texture image.
  30191. </param>
  30192. <param name="height">
  30193. Specifies, in pixels, the height in pixels of the texture image.
  30194. </param>
  30195. <param name="depth">
  30196. Specifies, in pixels, the depth in pixels of the texture image.
  30197. </param>
  30198. <param name="format">
  30199. Specifies the format of the pixel data. Must be one of
  30200. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  30201. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  30202. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  30203. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  30204. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  30205. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  30206. </param>
  30207. <param name="type">
  30208. Specifies the data type for <i>data</i>. Must be one of:
  30209. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  30210. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  30211. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  30212. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  30213. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  30214. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  30215. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  30216. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  30217. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  30218. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  30219. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  30220. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  30221. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  30222. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  30223. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  30224. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  30225. </param>
  30226. <param name="data">
  30227. Specifies a pointer to the image data in memory.
  30228. </param>
  30229. <returns>
  30230. A return value of zero indicates success, otherwise a GLU error code is
  30231. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  30232. </returns>
  30233. <remarks>
  30234. <para>
  30235. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  30236. texture maps of decreasing resolutions called a mipmap. This is used for the
  30237. antialiasing of texture-mapped primitives.
  30238. </para>
  30239. <para>
  30240. A return value of zero indicates success, otherwise a GLU error code is
  30241. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  30242. </para>
  30243. <para>
  30244. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  30245. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  30246. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  30247. This copy will be used for subsequent mipmapping operations described below.
  30248. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  30249. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  30250. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  30251. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  30252. and up to 32 in <i>depth</i>, before mipmapping takes place.
  30253. </para>
  30254. <para>
  30255. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  30256. determine if the implementation can fit the requested texture. If not, all
  30257. three dimensions are continually halved until it fits.
  30258. </para>
  30259. <para>
  30260. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  30261. in half along all three dimensions until size 1×1×1 is reached. At each
  30262. level, each texel in the halved mipmap level is an average of the
  30263. corresponding eight texels in the larger mipmap level. (If exactly one of
  30264. the dimensions is 1, four texels are averaged. If exactly two of the
  30265. dimensions are 1, two texels are averaged.)
  30266. </para>
  30267. <para>
  30268. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  30269. Level 0 is a copy of <i>data</i>. The highest level is
  30270. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  30271. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  30272. a texture of this size, the following mipmap levels are built: 64×16×32,
  30273. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  30274. through 6, respectively.
  30275. </para>
  30276. <para>
  30277. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  30278. the acceptable values for <i>format</i> parameter. See the
  30279. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  30280. acceptable values for <i>type</i> parameter.
  30281. </para>
  30282. <para>
  30283. <b>NOTES</b>
  30284. </para>
  30285. <para>
  30286. There is no direct way of querying the maximum level. This can be derived
  30287. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  30288. the width, height and depth actually used at level 0. (The width, height
  30289. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  30290. respectively since proxy textures might have scaled them to fit the
  30291. implementation.) Then the maximum level can be derived from the formula
  30292. <c>log2(max(width,height,depth))</c>.
  30293. </para>
  30294. <para>
  30295. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  30296. greater.
  30297. </para>
  30298. <para>
  30299. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  30300. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  30301. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  30302. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  30303. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  30304. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  30305. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  30306. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  30307. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  30308. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  30309. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  30310. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  30311. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  30312. version is 1.2 or greater.
  30313. </para>
  30314. <para>
  30315. <b>ERRORS</b>
  30316. </para>
  30317. <para>
  30318. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  30319. or <i>depth</i> is &lt; 1.
  30320. </para>
  30321. <para>
  30322. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  30323. <i>format</i>, or <i>type</i> is not legal.
  30324. </para>
  30325. <para>
  30326. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30327. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  30328. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  30329. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  30330. </para>
  30331. <para>
  30332. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30333. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  30334. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  30335. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  30336. </para>
  30337. <para>
  30338. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30339. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  30340. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  30341. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30342. </para>
  30343. <para>
  30344. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30345. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  30346. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  30347. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30348. </para>
  30349. <para>
  30350. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30351. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  30352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  30353. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30354. </para>
  30355. <para>
  30356. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30357. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  30358. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  30359. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30360. </para>
  30361. </remarks>
  30362. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30363. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30364. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  30365. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30366. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30367. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30368. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30369. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30370. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30371. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30372. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30373. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  30374. </member>
  30375. <member name="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Void*)">
  30376. <summary>
  30377. Builds a three-dimensional mipmap.
  30378. </summary>
  30379. <param name="target">
  30380. Specifies the target texture. Must be <see cref="F:Tao.OpenGl.Gl.GL_TEXTURE_3D"/>.
  30381. </param>
  30382. <param name="internalFormat">
  30383. Requests the internal storage format of the texture image. Must be 1, 2, 3,
  30384. 4, or one of the following symbolic constants: <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  30385. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA8"/>,
  30386. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA12"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA16"/>,
  30387. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4"/>,
  30388. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12"/>,
  30389. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>,
  30390. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE4_ALPHA4"/>,
  30391. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE6_ALPHA2"/>,
  30392. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE8_ALPHA8"/>,
  30393. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA4"/>,
  30394. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE12_ALPHA12"/>,
  30395. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE16_ALPHA16"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY"/>,
  30396. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY4"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY8"/>,
  30397. <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY12"/>, <see cref="F:Tao.OpenGl.Gl.GL_INTENSITY16"/>,
  30398. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_R3_G3_B2"/>,
  30399. <see cref="F:Tao.OpenGl.Gl.GL_RGB4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5"/>,
  30400. <see cref="F:Tao.OpenGl.Gl.GL_RGB8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10"/>,
  30401. <see cref="F:Tao.OpenGl.Gl.GL_RGB12"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB16"/>,
  30402. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA2"/>,
  30403. <see cref="F:Tao.OpenGl.Gl.GL_RGBA4"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB5_A1"/>,
  30404. <see cref="F:Tao.OpenGl.Gl.GL_RGBA8"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB10_A2"/>,
  30405. <see cref="F:Tao.OpenGl.Gl.GL_RGBA12"/>, or <see cref="F:Tao.OpenGl.Gl.GL_RGBA16"/>.
  30406. </param>
  30407. <param name="width">
  30408. Specifies, in pixels, the width in pixels of the texture image.
  30409. </param>
  30410. <param name="height">
  30411. Specifies, in pixels, the height in pixels of the texture image.
  30412. </param>
  30413. <param name="depth">
  30414. Specifies, in pixels, the depth in pixels of the texture image.
  30415. </param>
  30416. <param name="format">
  30417. Specifies the format of the pixel data. Must be one of
  30418. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>,
  30419. <see cref="F:Tao.OpenGl.Gl.GL_RED"/>, <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>,
  30420. <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>, <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>,
  30421. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>,
  30422. <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>,
  30423. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, or <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  30424. </param>
  30425. <param name="type">
  30426. Specifies the data type for <i>data</i>. Must be one of:
  30427. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  30428. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  30429. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  30430. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  30431. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  30432. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  30433. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  30434. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  30435. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  30436. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  30437. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  30438. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  30439. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  30440. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  30441. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  30442. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  30443. </param>
  30444. <param name="data">
  30445. Specifies a pointer to the image data in memory.
  30446. </param>
  30447. <returns>
  30448. A return value of zero indicates success, otherwise a GLU error code is
  30449. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  30450. </returns>
  30451. <remarks>
  30452. <para>
  30453. <b>gluBuild3DMipmaps</b> builds a series of prefiltered three-dimensional
  30454. texture maps of decreasing resolutions called a mipmap. This is used for the
  30455. antialiasing of texture-mapped primitives.
  30456. </para>
  30457. <para>
  30458. A return value of zero indicates success, otherwise a GLU error code is
  30459. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  30460. </para>
  30461. <para>
  30462. Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
  30463. are checked to see if they are a power of two. If not, a copy of <i>data</i>
  30464. (not <i>data</i> itself), is scaled up or down to the nearest power of two.
  30465. This copy will be used for subsequent mipmapping operations described below.
  30466. (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
  30467. 2, then the copy of <i>data</i> will scale upwards.) For example, if
  30468. <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
  30469. <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
  30470. and up to 32 in <i>depth</i>, before mipmapping takes place.
  30471. </para>
  30472. <para>
  30473. Then, proxy textures (see <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>) are used to
  30474. determine if the implementation can fit the requested texture. If not, all
  30475. three dimensions are continually halved until it fits.
  30476. </para>
  30477. <para>
  30478. Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
  30479. in half along all three dimensions until size 1×1×1 is reached. At each
  30480. level, each texel in the halved mipmap level is an average of the
  30481. corresponding eight texels in the larger mipmap level. (If exactly one of
  30482. the dimensions is 1, four texels are averaged. If exactly two of the
  30483. dimensions are 1, two texels are averaged.)
  30484. </para>
  30485. <para>
  30486. <see cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> is called to load each of these mipmap levels.
  30487. Level 0 is a copy of <i>data</i>. The highest level is
  30488. <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
  30489. <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
  30490. a texture of this size, the following mipmap levels are built: 64×16×32,
  30491. 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
  30492. through 6, respectively.
  30493. </para>
  30494. <para>
  30495. See the <see cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  30496. the acceptable values for <i>format</i> parameter. See the
  30497. <see cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of the
  30498. acceptable values for <i>type</i> parameter.
  30499. </para>
  30500. <para>
  30501. <b>NOTES</b>
  30502. </para>
  30503. <para>
  30504. There is no direct way of querying the maximum level. This can be derived
  30505. indirectly via <see cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>. First, query for
  30506. the width, height and depth actually used at level 0. (The width, height
  30507. and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
  30508. respectively since proxy textures might have scaled them to fit the
  30509. implementation.) Then the maximum level can be derived from the formula
  30510. <c>log2(max(width,height,depth))</c>.
  30511. </para>
  30512. <para>
  30513. <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
  30514. greater.
  30515. </para>
  30516. <para>
  30517. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  30518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  30519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  30520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  30521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  30522. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  30523. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  30524. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  30525. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  30526. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  30527. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  30528. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  30529. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  30530. version is 1.2 or greater.
  30531. </para>
  30532. <para>
  30533. <b>ERRORS</b>
  30534. </para>
  30535. <para>
  30536. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>width</i>, <i>height</i>,
  30537. or <i>depth</i> is &lt; 1.
  30538. </para>
  30539. <para>
  30540. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>internalFormat</i>,
  30541. <i>format</i>, or <i>type</i> is not legal.
  30542. </para>
  30543. <para>
  30544. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  30546. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  30547. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  30548. </para>
  30549. <para>
  30550. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30551. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  30552. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  30553. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  30554. </para>
  30555. <para>
  30556. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30557. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  30558. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  30559. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30560. </para>
  30561. <para>
  30562. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30563. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  30564. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  30565. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30566. </para>
  30567. <para>
  30568. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30569. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  30570. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  30571. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30572. </para>
  30573. <para>
  30574. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>type</i> is
  30575. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  30576. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  30577. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  30578. </para>
  30579. </remarks>
  30580. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30581. <seealso cref="M:Tao.OpenGl.Gl.glGetTexImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30582. <seealso cref="M:Tao.OpenGl.Gl.glGetTexLevelParameteriv(System.Int32,System.Int32,System.Int32,System.IntPtr)"/>
  30583. <seealso cref="M:Tao.OpenGl.Gl.glTexImage1D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30584. <seealso cref="M:Tao.OpenGl.Gl.glTexImage2D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30585. <seealso cref="M:Tao.OpenGl.Gl.glTexImage3D(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  30586. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30587. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30588. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30589. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30590. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmapLevels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  30591. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  30592. </member>
  30593. <member name="M:Tao.OpenGl.Glu.gluCheckExtension(System.String,System.String)">
  30594. <summary>
  30595. Determines if an extension name is supported.
  30596. </summary>
  30597. <param name="extensionName">
  30598. Specifies an extension name.
  30599. </param>
  30600. <param name="extensionString">
  30601. Specifies a space-separated list of extension names supported.
  30602. </param>
  30603. <returns>
  30604. Returns <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> if <i>extensionName</i> is supported
  30605. otherwise <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> is returned.
  30606. </returns>
  30607. <remarks>
  30608. <para>
  30609. <b>gluCheckExtension</b> is used to check for the presence for OpenGL, GLU or
  30610. GLX extension names by passing the extension strings returned by
  30611. <see cref="M:Tao.OpenGl.Gl.glGetString(System.Int32)"/>, <see cref="M:Tao.OpenGl.Glu.gluGetString(System.Int32)"/>,
  30612. /*see cref="glXGetClientString" /&gt;*/, /*see cref="glXQueryExtensionsString" /&gt;*/,
  30613. or /*see cref="glXQueryServerString" /&gt;*/, respectively, as
  30614. <i>extensionString</i>.
  30615. </para>
  30616. <para>
  30617. Returns <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> if <i>extensionName</i> is supported
  30618. otherwise <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> is returned.
  30619. </para>
  30620. <para>
  30621. <b>NOTES</b>
  30622. </para>
  30623. <para>
  30624. Cases where one extension name is a substring of another are correctly
  30625. handled.
  30626. </para>
  30627. <para>
  30628. There may or may not be leading or trailing blanks in <i>extensionString</i>.
  30629. </para>
  30630. <para>
  30631. Extension names should not contain embedded spaces.
  30632. </para>
  30633. <para>
  30634. All strings are null-terminated.
  30635. </para>
  30636. </remarks>
  30637. <seealso cref="M:Tao.OpenGl.Gl.glGetString(System.Int32)"/>
  30638. <seealso cref="M:Tao.OpenGl.Glu.gluGetString(System.Int32)"/>
  30639. /*seealso cref="glXGetClientString" /&gt;*/
  30640. /*seealso cref="glXQueryExtensionsString" /&gt;*/
  30641. /*seealso cref="glXQueryServerString" /&gt;*/
  30642. </member>
  30643. <member name="M:Tao.OpenGl.Glu.gluCylinder(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Double,System.Int32,System.Int32)">
  30644. <summary>
  30645. Draws a cylinder.
  30646. </summary>
  30647. <param name="quad">
  30648. Specifies the quadrics object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  30649. </param>
  30650. <param name="baseRadius">
  30651. Specifies the radius of the cylinder at <c>z = 0</c>.
  30652. </param>
  30653. <param name="topRadius">
  30654. Specifies the radius of the cylinder at <c>z = height</c>. If <i>top</i> is
  30655. set to 0, this subroutine generates a cone.
  30656. </param>
  30657. <param name="height">
  30658. Specifies the height of the cylinder.
  30659. </param>
  30660. <param name="slices">
  30661. Specifies the number of subdivisions around the z axis.
  30662. </param>
  30663. <param name="stacks">
  30664. Specifies the number of subdivisions along the z axis.
  30665. </param>
  30666. <remarks>
  30667. <para>
  30668. <b>gluCylinder</b> draws a cylinder oriented along the z axis. The base of
  30669. the cylinder is placed at z = 0, and the top at z = height. Like a sphere,
  30670. a cylinder is subdivided around the z axis into slices, and along the z axis
  30671. into stacks.
  30672. </para>
  30673. <para>
  30674. Note that if <i>top</i> is set to 0.0, this routine generates a cone.
  30675. </para>
  30676. <para>
  30677. If the orientation is set to <see cref="F:Tao.OpenGl.Glu.GLU_OUTSIDE"/> (with
  30678. <see cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>), then any generated normals point away
  30679. from the z axis. Otherwise, they point toward the z axis.
  30680. </para>
  30681. <para>
  30682. If texturing is turned on using the <see cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  30683. subroutine, texture coordinates are generated so that t ranges linearly from
  30684. 0.0 at z = 0 to 1.0 at z = height, and s ranges from 0.0 at the +y axis to
  30685. 0.25 at the +x axis, as well as up to 0.5 at the -y axis and 0.75 at the
  30686. -x axis, then back to 1.0 at the +y axis.
  30687. </para>
  30688. </remarks>
  30689. <seealso cref="M:Tao.OpenGl.Glu.gluDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32)"/>
  30690. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  30691. <seealso cref="M:Tao.OpenGl.Glu.gluPartialDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32,System.Double,System.Double)"/>
  30692. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  30693. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  30694. <seealso cref="M:Tao.OpenGl.Glu.gluSphere(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Int32,System.Int32)"/>
  30695. </member>
  30696. <member name="M:Tao.OpenGl.Glu.gluDeleteNurbsRenderer(Tao.OpenGl.Glu.GLUnurbs)">
  30697. <summary>
  30698. Destroys a NURBS object.
  30699. </summary>
  30700. <param name="nurb">
  30701. The NURBS object to be destroyed (created with
  30702. <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  30703. </param>
  30704. <remarks>
  30705. <b>gluDeleteNurbsRenderer</b> destroys the NURBS object (which was created with
  30706. <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>) and frees any memory it uses. Once
  30707. <b>gluDeleteNurbsRenderer</b> has been called, <i>nurb</i> cannot be used again.
  30708. </remarks>
  30709. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  30710. </member>
  30711. <member name="M:Tao.OpenGl.Glu.gluDeleteQuadric(Tao.OpenGl.Glu.GLUquadric)">
  30712. <summary>
  30713. Destroys a quadrics object.
  30714. </summary>
  30715. <param name="quad">
  30716. The quadric object to be destroyed (created with
  30717. <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  30718. </param>
  30719. <remarks>
  30720. <b>gluDeleteQuadric</b> destroys the quadrics object (created with
  30721. <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>) and frees any memory it uses. Once
  30722. <b>gluDeleteQuadric</b> has been called, <i>quad</i> cannot be used again.
  30723. </remarks>
  30724. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  30725. </member>
  30726. <member name="M:Tao.OpenGl.Glu.gluDeleteTess(Tao.OpenGl.Glu.GLUtesselator)">
  30727. <summary>
  30728. Destroys a tessellation object.
  30729. </summary>
  30730. <param name="tess">
  30731. The tessellation object to destroy (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  30732. </param>
  30733. <remarks>
  30734. <b>gluDeleteTess</b> destroys the indicated tessellation object (which was
  30735. created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>) and frees any memory that it used.
  30736. Once <b>gluDeleteTess</b> has been called, <i>tess</i> cannot be used again.
  30737. </remarks>
  30738. <seealso cref="M:Tao.OpenGl.Glu.gluBeginPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  30739. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  30740. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  30741. </member>
  30742. <member name="M:Tao.OpenGl.Glu.gluDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32)">
  30743. <summary>
  30744. Draws a disk.
  30745. </summary>
  30746. <param name="quad">
  30747. The quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  30748. </param>
  30749. <param name="innerRadius">
  30750. The inner radius of the disk (may be zero).
  30751. </param>
  30752. <param name="outerRadius">
  30753. The outer radius of the disk.
  30754. </param>
  30755. <param name="slices">
  30756. The number of subdivisions around the z-axis.
  30757. </param>
  30758. <param name="loops">
  30759. The number of concentric rings about the origin into which the disk is subdivided.
  30760. </param>
  30761. <remarks>
  30762. <para>
  30763. <b>gluDisk</b> renders a disk on the z = 0 plane. The disk has a radius of
  30764. <i>outerRadius</i>, and contains a concentric circular hole with a radius of
  30765. <i>innerRadius</i>. If <i>innerRadius</i> is 0, then no hole is generated.
  30766. The disk is subdivided around the z axis into slices (like pizza slices),
  30767. and also about the z axis into rings (as specified by <i>slices</i> and
  30768. <i>loops</i>, respectively).
  30769. </para>
  30770. <para>
  30771. With respect to orientation, the +z side of the disk is considered to be
  30772. "outside" (see <see cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>). This means that if the
  30773. orientation is set to <see cref="F:Tao.OpenGl.Glu.GLU_OUTSIDE"/>, then any normals generated
  30774. point along the +z axis. Otherwise, they point along the -z axis.
  30775. </para>
  30776. <para>
  30777. If texturing has been turned on (with <see cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>),
  30778. texture coordinates are generated linearly such that where r = outerRadius,
  30779. the value at (r, 0, 0) is (1, 0.5), at (0, r, 0) it is (0.5, 1), at
  30780. (-r, 0, 0) it is (0, 0.5), and at (0, -r, 0) it is (0.5, 0).
  30781. </para>
  30782. </remarks>
  30783. <seealso cref="M:Tao.OpenGl.Glu.gluCylinder(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Double,System.Int32,System.Int32)"/>
  30784. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  30785. <seealso cref="M:Tao.OpenGl.Glu.gluPartialDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32,System.Double,System.Double)"/>
  30786. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  30787. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  30788. <seealso cref="M:Tao.OpenGl.Glu.gluSphere(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Int32,System.Int32)"/>
  30789. </member>
  30790. <member name="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)">
  30791. <summary>
  30792. Delimits a Non-Uniform Rational B-Spline (NURBS) curve definition.
  30793. </summary>
  30794. <param name="nurb">
  30795. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  30796. </param>
  30797. <remarks>
  30798. <para>
  30799. Use <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/> to mark the beginning of a NURBS curve
  30800. definition. After calling <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>, make one or more
  30801. calls to <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/> to define the attributes of the curve.
  30802. Exactly one of the calls to <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/> must have a curve
  30803. type of <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_3"/> or
  30804. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_4"/>. To mark the end of the NURBS curve
  30805. definition, call <b>gluEndCurve</b>.
  30806. </para>
  30807. <para>
  30808. OpenGL evaluators are used to render the NURBS curve as a series of line
  30809. segments. Evaluator state is preserved during rendering with
  30810. <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib</c>. For
  30811. information on exactly what state these calls preserve, see
  30812. <see cref="M:Tao.OpenGl.Gl.glPushAttrib(System.Int32)"/>.
  30813. </para>
  30814. <para>
  30815. <b>EXAMPLE</b>
  30816. </para>
  30817. <para>
  30818. The following commands render a textured NURBS curve with normals; texture
  30819. coordinates and normals are also specified as NURBS curves:
  30820. </para>
  30821. <para>
  30822. <code>
  30823. Glu.gluBeginCurve(nobj);
  30824. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
  30825. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
  30826. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
  30827. Glu.gluEndCurve(nobj);
  30828. </code>
  30829. </para>
  30830. </remarks>
  30831. <seealso cref="M:Tao.OpenGl.Gl.glPopAttrib"/>
  30832. <seealso cref="M:Tao.OpenGl.Gl.glPushAttrib(System.Int32)"/>
  30833. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  30834. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  30835. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  30836. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  30837. </member>
  30838. <member name="M:Tao.OpenGl.Glu.gluEndPolygon(Tao.OpenGl.Glu.GLUtesselator)">
  30839. <summary>
  30840. Delimits a polygon description.
  30841. </summary>
  30842. <param name="tess">
  30843. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  30844. </param>
  30845. <remarks>
  30846. <para>
  30847. <see cref="M:Tao.OpenGl.Glu.gluBeginPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimits the definition of a nonconvex
  30848. polygon. To define such a polygon, first call
  30849. <see cref="M:Tao.OpenGl.Glu.gluBeginPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>. Then define the contours of the polygon by
  30850. calling <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> for each vertex and
  30851. <see cref="M:Tao.OpenGl.Glu.gluNextContour(Tao.OpenGl.Glu.GLUtesselator,System.Int32)"/> to start each new contour. Finally, call
  30852. <b>gluEndPolygon</b> to signal the end of the definition. See the
  30853. <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> and <see cref="M:Tao.OpenGl.Glu.gluNextContour(Tao.OpenGl.Glu.GLUtesselator,System.Int32)"/> reference
  30854. pages for more details.
  30855. </para>
  30856. <para>
  30857. Once <b>gluEndPolygon</b> is called, the polygon is tessellated, and the
  30858. resulting triangles are described through callbacks. See
  30859. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  30860. </para>
  30861. <para>
  30862. <b>NOTES</b>
  30863. </para>
  30864. <para>
  30865. This command is obsolete and is provided for backward compatibility only.
  30866. Calls to <see cref="M:Tao.OpenGl.Glu.gluBeginPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> are mapped to
  30867. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> followed by
  30868. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Calls to <b>gluEndPolygon</b> are mapped
  30869. to <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/> followed by
  30870. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>.
  30871. </para>
  30872. <para>
  30873. <b>EXAMPLE</b>
  30874. </para>
  30875. <para>
  30876. A quadrilateral with a triangular hole in it can be described like this:
  30877. </para>
  30878. <para>
  30879. <code>
  30880. Glu.gluBeginPolygon(tobj);
  30881. Glu.gluTessVertex(tobj, v1, v1);
  30882. Glu.gluTessVertex(tobj, v2, v2);
  30883. Glu.gluTessVertex(tobj, v3, v3);
  30884. Glu.gluTessVertex(tobj, v4, v4);
  30885. Glu.gluNextContour(tobj, Glu.GLU_INTERIOR);
  30886. Glu.gluTessVertex(tobj, v5, v5);
  30887. Glu.gluTessVertex(tobj, v6, v6);
  30888. Glu.gluTessVertex(tobj, v7, v7);
  30889. Glu.gluEndPolygon(tobj);
  30890. </code>
  30891. </para>
  30892. </remarks>
  30893. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  30894. <seealso cref="M:Tao.OpenGl.Glu.gluNextContour(Tao.OpenGl.Glu.GLUtesselator,System.Int32)"/>
  30895. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  30896. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  30897. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  30898. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  30899. </member>
  30900. <member name="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)">
  30901. <summary>
  30902. Delimits a NURBS surface definition.
  30903. </summary>
  30904. <param name="nurb">
  30905. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  30906. </param>
  30907. <remarks>
  30908. <para>
  30909. Use <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/> to mark the beginning of a NURBS surface
  30910. definition. After calling <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>, make one or more
  30911. calls to <see cref="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[],System.Int32,System.Int32,System.Int32)"/> to define the attributes of the
  30912. surface. Exactly one of these calls to <see cref="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[],System.Int32,System.Int32,System.Int32)"/> must
  30913. have a surface type of <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/> or
  30914. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_4"/>. To mark the end of the NURBS surface
  30915. definition, call <b>gluEndSurface</b>.
  30916. </para>
  30917. <para>
  30918. Trimming of NURBS surfaces is supported with <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>,
  30919. <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>, <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>, and
  30920. <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>. See the <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> reference
  30921. page for details.
  30922. </para>
  30923. <para>
  30924. OpenGL evaluators are used to render the NURBS surface as a set of polygons.
  30925. Evaluator state is preserved during rendering with
  30926. <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib()</c>. See the
  30927. <see cref="M:Tao.OpenGl.Gl.glPushAttrib(System.Int32)"/> reference page for details on exactly what
  30928. state these calls preserve.
  30929. </para>
  30930. <para>
  30931. <b>EXAMPLE</b>
  30932. </para>
  30933. <para>
  30934. The following commands render a textured NURBS surface with normals; the
  30935. texture coordinates and normals are also described as NURBS surfaces:
  30936. </para>
  30937. <para>
  30938. <code>
  30939. Glu.gluBeginSurface(nobj);
  30940. Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_TEXTURE_COORD_2);
  30941. Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_NORMAL);
  30942. Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_VERTEX_4);
  30943. Glu.gluEndSurface(nobj);
  30944. </code>
  30945. </para>
  30946. </remarks>
  30947. <seealso cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  30948. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  30949. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  30950. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  30951. <see cref="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[],System.Int32,System.Int32,System.Int32)"/>
  30952. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  30953. </member>
  30954. <member name="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)">
  30955. <summary>
  30956. Delimits a NURBS trimming loop definition.
  30957. </summary>
  30958. <param name="nurb">
  30959. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  30960. </param>
  30961. <remarks>
  30962. <para>
  30963. Use <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> to mark the beginning of a trimming loop, and
  30964. <b>gluEndTrim</b> to mark the end of a trimming loop. A trimming loop is a
  30965. set of oriented curve segments (forming a closed curve) that define
  30966. boundaries of a NURBS surface. You include these trimming loops in the
  30967. definition of a NURBS surface, between calls to
  30968. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/> and <see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>.
  30969. </para>
  30970. <para>
  30971. The definition for a NURBS surface can contain many trimming loops. For
  30972. example, if you wrote a definition for a NURBS surface that resembled a
  30973. rectangle with a hole punched out, the definition would contain two trimming
  30974. loops. One loop would define the outer edge of the rectangle; the other
  30975. would define the hole punched out of the rectangle. The definitions of each
  30976. of these trimming loops would be bracketed by a <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  30977. and <b>gluEndTrim</b> pair.
  30978. </para>
  30979. <para>
  30980. The definition of a single closed trimming loop can consist of multiple curve
  30981. segments, each described as a piecewise linear curve (see
  30982. <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>) or as a single NURBS curve (see
  30983. <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>), or as a combination of both in any order. The
  30984. only library calls that can appear in a trimming loop definition (between the
  30985. calls to <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> and <b>gluEndTrim</b> are
  30986. <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/> and <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>.
  30987. </para>
  30988. <para>
  30989. The area of the NURBS surface that is displayed is the region in the domain
  30990. to the left of the trimming curve as the curve parameter increases. Thus,
  30991. the retained region of the NURBS surface is inside a counterclockwise
  30992. trimming loop and outside a clockwise trimming loop. For the rectangle
  30993. mentioned earlier, the trimming loop for the outer edge of the rectangle runs
  30994. counterclockwise, while the trimming loop for the punched-out hole runs
  30995. clockwise.
  30996. </para>
  30997. <para>
  30998. If you use more than one curve to define a single trimming loop, the curve
  30999. segments must form a closed loop (that is, the endpoint of each curve must be
  31000. the starting point of the next curve, and the endpoint of the final curve
  31001. must be the starting point of the first curve). If the endpoints of the
  31002. curve are sufficiently close together but not exactly coincident, they will
  31003. be coerced to match. If the endpoints are not sufficiently close, an error
  31004. results (see <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  31005. </para>
  31006. <para>
  31007. If a trimming loop definition contains multiple curves, the direction of the
  31008. curves must be consistent (that is, the inside must be to the left of all of
  31009. the curves). Nested trimming loops are legal as long as the curve
  31010. orientations alternate correctly. If trimming curves are self-intersecting,
  31011. or intersect one another, an error results.
  31012. </para>
  31013. <para>
  31014. If no trimming information is given for a NURBS surface, the entire surface
  31015. is drawn.
  31016. </para>
  31017. <para>
  31018. <b>EXAMPLE</b>
  31019. </para>
  31020. <para>
  31021. This code fragment defines a trimming loop that consists of one piecewise
  31022. linear curve, and two NURBS curves:
  31023. </para>
  31024. <para>
  31025. <code>
  31026. Glu.gluBeginTrim(nobj);
  31027. Glu.gluPwlCurve(..., Glu.GLU_MAP1_TRIM_2);
  31028. Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_2);
  31029. Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_3);
  31030. Glu.gluEndTrim(nobj);
  31031. </code>
  31032. </para>
  31033. </remarks>
  31034. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  31035. <seealso cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  31036. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  31037. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  31038. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  31039. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  31040. </member>
  31041. <member name="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)">
  31042. <summary>
  31043. Produces an error string from a GL or GLU error code.
  31044. </summary>
  31045. <param name="errorCode">
  31046. An OpenGL or GLU error code.
  31047. </param>
  31048. <returns>
  31049. A string representation of the error.
  31050. </returns>
  31051. <remarks>
  31052. <para>
  31053. <b>gluErrorString</b> produces an error string from a GL or GLU error code.
  31054. The string is in ISO Latin 1 format. For example,
  31055. <c>gluErrorString(Gl.GL_OUT_OF_MEMORY)</c> returns the string 'out of
  31056. memory'.
  31057. </para>
  31058. <para>
  31059. The standard GLU error codes are <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/>,
  31060. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/>, and <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>.
  31061. Certain other GLU functions can return specialized error codes through
  31062. callbacks. See the <see cref="M:Tao.OpenGl.Gl.glGetError"/> reference page for the list
  31063. of GL error codes.
  31064. </para>
  31065. <para>
  31066. <b>ERRORS</b>
  31067. </para>
  31068. <para>
  31069. <c>NULL</c> is returned if <i>errorCode</i> is not a valid GL or GLU error
  31070. code.
  31071. </para>
  31072. </remarks>
  31073. <seealso cref="M:Tao.OpenGl.Gl.glGetError"/>
  31074. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  31075. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)"/>
  31076. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  31077. </member>
  31078. <member name="M:Tao.OpenGl.Glu.gluErrorStringWIN(System.Int32)">
  31079. <summary>
  31080. Produces an error string from a GL or GLU error code.
  31081. </summary>
  31082. <param name="errorCode">
  31083. An OpenGL or GLU error code.
  31084. </param>
  31085. <returns>
  31086. A string representation of the error.
  31087. </returns>
  31088. <remarks>
  31089. <para>
  31090. <b>gluErrorStringWIN</b> produces an error string from a GL or GLU error
  31091. code. The string is in UNICODE format. For example,
  31092. <c>gluErrorStringWIN(Gl.GL_OUT_OF_MEMORY)</c> returns the string 'out of
  31093. memory'.
  31094. </para>
  31095. <para>
  31096. The standard GLU error codes are <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/>,
  31097. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/>, and <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>.
  31098. Certain other GLU functions can return specialized error codes through
  31099. callbacks. See the <see cref="M:Tao.OpenGl.Gl.glGetError"/> reference page for the list
  31100. of GL error codes.
  31101. </para>
  31102. <para>
  31103. <b>ERRORS</b>
  31104. </para>
  31105. <para>
  31106. <c>NULL</c> is returned if <i>errorCode</i> is not a valid GL or GLU error
  31107. code.
  31108. </para>
  31109. </remarks>
  31110. <seealso cref="M:Tao.OpenGl.Gl.glGetError"/>
  31111. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  31112. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)"/>
  31113. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  31114. </member>
  31115. <member name="M:Tao.OpenGl.Glu.gluErrorUnicodeStringEXT(System.Int32)">
  31116. <summary>
  31117. Produces an error string from a GL or GLU error code.
  31118. </summary>
  31119. <param name="errorCode">
  31120. An OpenGL or GLU error code.
  31121. </param>
  31122. <returns>
  31123. A Unicode string representation of the error.
  31124. </returns>
  31125. <remarks>
  31126. <para>
  31127. <b>gluErrorString</b> produces an error string from a GL or GLU error code.
  31128. The string is in UNICODE format. For example,
  31129. <c>gluErrorString(Gl.GL_OUT_OF_MEMORY)</c> returns the string 'out of
  31130. memory'.
  31131. </para>
  31132. <para>
  31133. The standard GLU error codes are <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/>,
  31134. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/>, and <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>.
  31135. Certain other GLU functions can return specialized error codes through
  31136. callbacks. See the <see cref="M:Tao.OpenGl.Gl.glGetError"/> reference page for the list
  31137. of GL error codes.
  31138. </para>
  31139. <para>
  31140. <b>ERRORS</b>
  31141. </para>
  31142. <para>
  31143. <c>NULL</c> is returned if <i>errorCode</i> is not a valid GL or GLU error
  31144. code.
  31145. </para>
  31146. </remarks>
  31147. <seealso cref="M:Tao.OpenGl.Gl.glGetError"/>
  31148. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  31149. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)"/>
  31150. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  31151. </member>
  31152. <member name="M:Tao.OpenGl.Glu.gluGetNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[])">
  31153. <summary>
  31154. Gets a NURBS property.
  31155. </summary>
  31156. <param name="nurb">
  31157. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  31158. </param>
  31159. <param name="property">
  31160. The property whose value is to be retrieved. The following values are valid:
  31161. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE"/>,
  31162. <see cref="F:Tao.OpenGl.Glu.GLU_CULLING"/>, <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/>,
  31163. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/>,
  31164. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/>, <see cref="F:Tao.OpenGl.Glu.GLU_U_STEP"/>, and
  31165. <see cref="F:Tao.OpenGl.Glu.GLU_V_STEP"/>.
  31166. </param>
  31167. <param name="data">
  31168. A pointer to the location into which the value of the named property is
  31169. written.
  31170. </param>
  31171. <remarks>
  31172. <b>gluGetNurbsProperty</b> retrieves properties stored in a NURBS object.
  31173. These properties affect the way that NURBS curves and surfaces are rendered.
  31174. See the <see cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/> reference page for information about
  31175. what the properties are and what they do.
  31176. </remarks>
  31177. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  31178. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  31179. </member>
  31180. <member name="M:Tao.OpenGl.Glu.gluGetNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single@)">
  31181. <summary>
  31182. Gets a NURBS property.
  31183. </summary>
  31184. <param name="nurb">
  31185. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  31186. </param>
  31187. <param name="property">
  31188. The property whose value is to be retrieved. The following values are valid:
  31189. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE"/>,
  31190. <see cref="F:Tao.OpenGl.Glu.GLU_CULLING"/>, <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/>,
  31191. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/>,
  31192. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/>, <see cref="F:Tao.OpenGl.Glu.GLU_U_STEP"/>, and
  31193. <see cref="F:Tao.OpenGl.Glu.GLU_V_STEP"/>.
  31194. </param>
  31195. <param name="data">
  31196. A pointer to the location into which the value of the named property is
  31197. written.
  31198. </param>
  31199. <remarks>
  31200. <b>gluGetNurbsProperty</b> retrieves properties stored in a NURBS object.
  31201. These properties affect the way that NURBS curves and surfaces are rendered.
  31202. See the <see cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/> reference page for information about
  31203. what the properties are and what they do.
  31204. </remarks>
  31205. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  31206. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  31207. </member>
  31208. <member name="M:Tao.OpenGl.Glu.gluGetNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.IntPtr)">
  31209. <summary>
  31210. Gets a NURBS property.
  31211. </summary>
  31212. <param name="nurb">
  31213. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  31214. </param>
  31215. <param name="property">
  31216. The property whose value is to be retrieved. The following values are valid:
  31217. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE"/>,
  31218. <see cref="F:Tao.OpenGl.Glu.GLU_CULLING"/>, <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/>,
  31219. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/>,
  31220. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/>, <see cref="F:Tao.OpenGl.Glu.GLU_U_STEP"/>, and
  31221. <see cref="F:Tao.OpenGl.Glu.GLU_V_STEP"/>.
  31222. </param>
  31223. <param name="data">
  31224. A pointer to the location into which the value of the named property is
  31225. written.
  31226. </param>
  31227. <remarks>
  31228. <b>gluGetNurbsProperty</b> retrieves properties stored in a NURBS object.
  31229. These properties affect the way that NURBS curves and surfaces are rendered.
  31230. See the <see cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/> reference page for information about
  31231. what the properties are and what they do.
  31232. </remarks>
  31233. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  31234. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  31235. </member>
  31236. <member name="M:Tao.OpenGl.Glu.gluGetString(System.Int32)">
  31237. <summary>
  31238. Gets a string that describes the GLU version number or supported GLU extension
  31239. calls.
  31240. </summary>
  31241. <param name="name">
  31242. Either the version number of GLU (<see cref="F:Tao.OpenGl.Glu.GLU_VERSION"/>) or available
  31243. vendor-specific extension calls (<see cref="F:Tao.OpenGl.Glu.GLU_EXTENSIONS"/>).
  31244. </param>
  31245. <returns>
  31246. Returns a string describing the GLU version or the GLU extensions that are
  31247. supported.
  31248. </returns>
  31249. <remarks>
  31250. <para>
  31251. <b>gluGetString</b> returns a string describing the GLU version or the GLU
  31252. extensions that are supported. When <i>name</i> is
  31253. <see cref="F:Tao.OpenGl.Glu.GLU_VERSION"/>, the returned string is a value that represents
  31254. the version number of GLU. The format of the version number is as follows:
  31255. </para>
  31256. <para>
  31257. &lt;version number&gt;&lt;space&gt;&lt;vendor-specific information&gt;
  31258. (for example, "1.2.11 Microsoft Windows NT")
  31259. </para>
  31260. <para>
  31261. The version number has the form "major_number.minor_number" or
  31262. "major_number.minor_number.release_number". The vendor-specific information
  31263. is optional, and the format and contents depend on the implementation.
  31264. </para>
  31265. <para>
  31266. When <i>name</i> is <see cref="F:Tao.OpenGl.Glu.GLU_EXTENSIONS"/>, the returned string
  31267. contains a list of names of supported GLU extensions that are separated by
  31268. spaces. The format of the returned list of names is as follows:
  31269. </para>
  31270. <para>
  31271. &lt;extension_name&gt;&lt;space&gt;&lt;extension_name&gt;&lt;space&gt; . . .
  31272. (for example, "GLU_NURBS GL_TESSELATION")
  31273. </para>
  31274. <para>
  31275. The extension names cannot contain any spaces.
  31276. </para>
  31277. <para>
  31278. <b>NOTES</b>
  31279. </para>
  31280. <para>
  31281. The <b>gluGetString</b> function is valid for GLU version 1.1 or later.
  31282. </para>
  31283. <para>
  31284. All strings are NULL-terminated.
  31285. </para>
  31286. <para>
  31287. <b>gluGetString</b> only returns information about GLU extensions. Call
  31288. <see cref="M:Tao.OpenGl.Gl.glGetString(System.Int32)"/> to get a list of GL extensions.
  31289. </para>
  31290. <para>
  31291. <b>gluGetString</b> is an initialization routine. Calling it after a
  31292. <see cref="M:Tao.OpenGl.Gl.glNewList(System.UInt32,System.Int32)"/> results in undefined behavior.
  31293. </para>
  31294. <para>
  31295. <b>ERRORS</b>
  31296. </para>
  31297. <para>
  31298. <c>NULL</c> is returned if name is not <see cref="F:Tao.OpenGl.Glu.GLU_VERSION"/> or
  31299. <see cref="F:Tao.OpenGl.Glu.GLU_EXTENSIONS"/>.
  31300. </para>
  31301. </remarks>
  31302. <seealso cref="M:Tao.OpenGl.Gl.glGetString(System.Int32)"/>
  31303. </member>
  31304. <member name="M:Tao.OpenGl.Glu.gluGetTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double[])">
  31305. <summary>
  31306. Gets a tessellation object property.
  31307. </summary>
  31308. <param name="tess">
  31309. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  31310. </param>
  31311. <param name="which">
  31312. The property whose value is to be retrieved. The following values are valid:
  31313. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_RULE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/>,
  31314. and <see cref="F:Tao.OpenGl.Glu.GLU_TESS_TOLERANCE"/>.
  31315. </param>
  31316. <param name="data">
  31317. A pointer to the location where the value of the named property is written.
  31318. </param>
  31319. <remarks>
  31320. <b>gluGetTessProperty</b> retrieves properties stored in a tessellation
  31321. object. These properties affect the way that tessellation objects are
  31322. interpreted and rendered. See the <see cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/> reference
  31323. page for information about the properties and what they do.
  31324. </remarks>
  31325. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  31326. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  31327. </member>
  31328. <member name="M:Tao.OpenGl.Glu.gluGetTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double@)">
  31329. <summary>
  31330. Gets a tessellation object property.
  31331. </summary>
  31332. <param name="tess">
  31333. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  31334. </param>
  31335. <param name="which">
  31336. The property whose value is to be retrieved. The following values are valid:
  31337. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_RULE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/>,
  31338. and <see cref="F:Tao.OpenGl.Glu.GLU_TESS_TOLERANCE"/>.
  31339. </param>
  31340. <param name="data">
  31341. A pointer to the location where the value of the named property is written.
  31342. </param>
  31343. <remarks>
  31344. <b>gluGetTessProperty</b> retrieves properties stored in a tessellation
  31345. object. These properties affect the way that tessellation objects are
  31346. interpreted and rendered. See the <see cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/> reference
  31347. page for information about the properties and what they do.
  31348. </remarks>
  31349. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  31350. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  31351. </member>
  31352. <member name="M:Tao.OpenGl.Glu.gluGetTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.IntPtr)">
  31353. <summary>
  31354. Gets a tessellation object property.
  31355. </summary>
  31356. <param name="tess">
  31357. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  31358. </param>
  31359. <param name="which">
  31360. The property whose value is to be retrieved. The following values are valid:
  31361. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_RULE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/>,
  31362. and <see cref="F:Tao.OpenGl.Glu.GLU_TESS_TOLERANCE"/>.
  31363. </param>
  31364. <param name="data">
  31365. A pointer to the location where the value of the named property is written.
  31366. </param>
  31367. <remarks>
  31368. <b>gluGetTessProperty</b> retrieves properties stored in a tessellation
  31369. object. These properties affect the way that tessellation objects are
  31370. interpreted and rendered. See the <see cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/> reference
  31371. page for information about the properties and what they do.
  31372. </remarks>
  31373. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  31374. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  31375. </member>
  31376. <member name="M:Tao.OpenGl.Glu.gluLoadSamplingMatrices(Tao.OpenGl.Glu.GLUnurbs,System.Single[],System.Single[],System.Int32[])">
  31377. <summary>
  31378. Loads NURBS sampling and culling matrices.
  31379. </summary>
  31380. <param name="nurb">
  31381. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  31382. </param>
  31383. <param name="modelMatrix">
  31384. A modelview matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetFloatv(System.Int32,System.IntPtr)"/> call).
  31385. </param>
  31386. <param name="projectionMatrix">
  31387. A projection matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetFloatv(System.Int32,System.IntPtr)"/> call).
  31388. </param>
  31389. <param name="viewport">
  31390. A viewport (as from a <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> call).
  31391. </param>
  31392. <remarks>
  31393. <para>
  31394. <b>gluLoadSamplingMatrices</b> uses <i>modelMatrix</i>,
  31395. <i>projectionMatrix</i>, and <i>viewport</i> to recompute the sampling and
  31396. culling matrices stored in <i>nurb</i>. The sampling matrix determines how
  31397. finely a NURBS curve or surface must be tessellated to satisfy the sampling
  31398. tolerance (as determined by the <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/>
  31399. property). The culling matrix is used in deciding if a NURBS curve or
  31400. surface should be culled before rendering (when the
  31401. <see cref="F:Tao.OpenGl.Glu.GLU_CULLING"/> property is turned on).
  31402. </para>
  31403. <para>
  31404. <b>gluLoadSamplingMatrices</b> is necessary only if the
  31405. <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/> property is turned off (see
  31406. <see cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>). Although it can be convenient to leave the
  31407. <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/> property turned on, there can be a
  31408. performance penalty for doing so. (A round trip to the GL server is needed
  31409. to fetch the current values of the modelview matrix, projection matrix, and
  31410. viewport.)
  31411. </para>
  31412. </remarks>
  31413. <seealso cref="M:Tao.OpenGl.Gl.glGetFloatv(System.Int32,System.IntPtr)"/>
  31414. <seealso cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/>
  31415. <seealso cref="M:Tao.OpenGl.Glu.gluGetNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[])"/>
  31416. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  31417. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  31418. </member>
  31419. <member name="M:Tao.OpenGl.Glu.gluLookAt(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)">
  31420. <summary>
  31421. Defines a viewing transformation.
  31422. </summary>
  31423. <param name="eyeX">
  31424. The x axis position of the eye point.
  31425. </param>
  31426. <param name="eyeY">
  31427. The y axis position of the eye point.
  31428. </param>
  31429. <param name="eyeZ">
  31430. The z axis position of the eye point.
  31431. </param>
  31432. <param name="centerX">
  31433. The x axis position of the reference point.
  31434. </param>
  31435. <param name="centerY">
  31436. The y axis position of the reference point.
  31437. </param>
  31438. <param name="centerZ">
  31439. The z axis position of the reference point.
  31440. </param>
  31441. <param name="upX">
  31442. The x axis direction of the up vector.
  31443. </param>
  31444. <param name="upY">
  31445. The y axis direction of the up vector.
  31446. </param>
  31447. <param name="upZ">
  31448. The z axis direction of the up vector.
  31449. </param>
  31450. <remarks>
  31451. <para>
  31452. <b>gluLookAt</b> creates a viewing matrix derived from an eye point, a
  31453. reference point indicating the center of the scene, and an UP vector.
  31454. </para>
  31455. <para>
  31456. The matrix maps the reference point to the negative z axis and the eye point
  31457. to the origin. When a typical projection matrix is used, the center of the
  31458. scene therefore maps to the center of the viewport. Similarly, the direction
  31459. described by the UP vector projected onto the viewing plane is mapped to the
  31460. positive y axis so that it points upward in the viewport. The UP vector must
  31461. not be parallel to the line of sight from the eye point to the reference
  31462. point.
  31463. </para>
  31464. <para>
  31465. The matrix generated by <b>gluLookAt</b> postmultiplies the current matrix.
  31466. </para>
  31467. <para>
  31468. The matrix M generated by the OpenGL could be computed as follows:
  31469. </para>
  31470. <para>
  31471. Let E be the 3d column vector (eyeX, eyeY, eyeZ).
  31472. Let C be the 3d column vector (centerX, centerY, centerZ).
  31473. Let U be the 3d column vector (upX, upY, upZ).
  31474. Compute L = C - E.
  31475. Normalize L.
  31476. Compute S = L x U.
  31477. Normalize S.
  31478. Compute U' = S x L.
  31479. </para>
  31480. <para>
  31481. M is the matrix whose columns are, in order:
  31482. </para>
  31483. <para>
  31484. (S, 0), (U', 0), (-L, 0), (-E, 1) (all column vectors)
  31485. </para>
  31486. <para>
  31487. Note: This matrix is defined for use in systems where the the modelling
  31488. coordinate vector is a column vector and is multiplied on the left by the
  31489. matrices. If you prefer a row vector which gets multiplied by matrices to
  31490. its right, then use the transpose of this matrix M.
  31491. </para>
  31492. <para>
  31493. Note: It is necessary that the UP vector NOT be parallel to the line
  31494. connecting the center point with the eye point.
  31495. </para>
  31496. </remarks>
  31497. <seealso cref="M:Tao.OpenGl.Gl.glFrustum(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)"/>
  31498. <seealso cref="M:Tao.OpenGl.Glu.gluPerspective(System.Double,System.Double,System.Double,System.Double)"/>
  31499. </member>
  31500. <member name="M:Tao.OpenGl.Glu.gluNewNurbsRenderer">
  31501. <summary>
  31502. Creates a NURBS object.
  31503. </summary>
  31504. <returns>
  31505. Returns a pointer to a new NURBS object.
  31506. </returns>
  31507. <remarks>
  31508. <b>gluNewNurbsRenderer</b> creates and returns a pointer to a new NURBS
  31509. object. This object must be referred to when calling NURBS rendering and
  31510. control functions. A return value of 0 means that there is not enough memory
  31511. to allocate the object.
  31512. </remarks>
  31513. <seealso cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  31514. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  31515. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  31516. <seealso cref="M:Tao.OpenGl.Glu.gluDeleteNurbsRenderer(Tao.OpenGl.Glu.GLUnurbs)"/>
  31517. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  31518. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  31519. </member>
  31520. <member name="M:Tao.OpenGl.Glu.gluNewQuadric">
  31521. <summary>
  31522. Creates a quadrics object.
  31523. </summary>
  31524. <returns>
  31525. Returns a pointer to a new quadrics object.
  31526. </returns>
  31527. <remarks>
  31528. <b>gluNewQuadric</b> creates and returns a pointer to a new quadrics object.
  31529. This object must be referred to when calling quadrics rendering and control
  31530. functions. A return value of 0 means that there is not enough memory to
  31531. allocate the object.
  31532. </remarks>
  31533. <seealso cref="M:Tao.OpenGl.Glu.gluCylinder(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Double,System.Int32,System.Int32)"/>
  31534. <seealso cref="M:Tao.OpenGl.Glu.gluDeleteQuadric(Tao.OpenGl.Glu.GLUquadric)"/>
  31535. <seealso cref="M:Tao.OpenGl.Glu.gluDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32)"/>
  31536. <seealso cref="M:Tao.OpenGl.Glu.gluPartialDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32,System.Double,System.Double)"/>
  31537. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)"/>
  31538. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricDrawStyle(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  31539. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricNormals(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  31540. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  31541. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  31542. <seealso cref="M:Tao.OpenGl.Glu.gluSphere(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Int32,System.Int32)"/>
  31543. </member>
  31544. <member name="M:Tao.OpenGl.Glu.gluNewTess">
  31545. <summary>
  31546. Creates a tessellation object.
  31547. </summary>
  31548. <returns>
  31549. Returns a pointer to a new tessellation object.
  31550. </returns>
  31551. <remarks>
  31552. <b>gluNewTess</b> creates and returns a pointer to a new tessellation object.
  31553. This object must be referred to when calling tessellation functions. A
  31554. return value of 0 means that there is not enough memory to allocate the
  31555. object.
  31556. </remarks>
  31557. <seealso cref="M:Tao.OpenGl.Glu.gluDeleteTess(Tao.OpenGl.Glu.GLUtesselator)"/>
  31558. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  31559. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  31560. </member>
  31561. <member name="M:Tao.OpenGl.Glu.gluNextContour(Tao.OpenGl.Glu.GLUtesselator,System.Int32)">
  31562. <summary>
  31563. Marks the beginning of another contour.
  31564. </summary>
  31565. <param name="tess">
  31566. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  31567. </param>
  31568. <param name="type">
  31569. <para>
  31570. The type of the contour being defined. The following values are valid:
  31571. </para>
  31572. <para>
  31573. <list type="table">
  31574. <listheader>
  31575. <term>Value</term>
  31576. <description>Description</description>
  31577. </listheader>
  31578. <item>
  31579. <term><see cref="F:Tao.OpenGl.Glu.GLU_EXTERIOR"/></term>
  31580. <description>
  31581. An exterior contour defines an exterior boundary of the polygon.
  31582. </description>
  31583. </item>
  31584. <item>
  31585. <term><see cref="F:Tao.OpenGl.Glu.GLU_INTERIOR"/></term>
  31586. <description>
  31587. An interior contour defines an interior boundary of the polygon
  31588. (such as a hole).
  31589. </description>
  31590. </item>
  31591. <item>
  31592. <term><see cref="F:Tao.OpenGl.Glu.GLU_UNKNOWN"/></term>
  31593. <description>
  31594. An unknown contour is analyzed by the library to determine
  31595. whether it is interior or exterior.
  31596. </description>
  31597. </item>
  31598. <item>
  31599. <term><see cref="F:Tao.OpenGl.Glu.GLU_CCW"/>, <see cref="F:Tao.OpenGl.Glu.GLU_CW"/></term>
  31600. <description>
  31601. <para>
  31602. The first <see cref="F:Tao.OpenGl.Glu.GLU_CCW"/> or <see cref="F:Tao.OpenGl.Glu.GLU_CW"/>
  31603. contour defined is considered to be exterior. All other
  31604. contours are considered to be exterior if they are oriented
  31605. in the same direction (clockwise or counterclockwise) as the
  31606. first contour, and interior if they are not.
  31607. </para>
  31608. <para>
  31609. If one contour is of type <see cref="F:Tao.OpenGl.Glu.GLU_CCW"/> or
  31610. <see cref="F:Tao.OpenGl.Glu.GLU_CW"/>, then all contours must be of the same
  31611. type (if they are not, then all <see cref="F:Tao.OpenGl.Glu.GLU_CCW"/> and
  31612. <see cref="F:Tao.OpenGl.Glu.GLU_CW"/> contours will be changed to
  31613. <see cref="F:Tao.OpenGl.Glu.GLU_UNKNOWN"/>). Note that there is no real
  31614. difference between the <see cref="F:Tao.OpenGl.Glu.GLU_CCW"/> and
  31615. <see cref="F:Tao.OpenGl.Glu.GLU_CW"/> contour types.
  31616. </para>
  31617. </description>
  31618. </item>
  31619. </list>
  31620. </para>
  31621. </param>
  31622. <remarks>
  31623. <para>
  31624. <b>gluNextContour</b> is used in describing polygons with multiple contours.
  31625. After the first contour has been described through a series of
  31626. <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> calls, a <b>gluNextContour</b> call indicates
  31627. that the previous contour is complete and that the next contour is about to
  31628. begin. Another series of <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> calls is then used to
  31629. describe the new contour. This process can be repeated until all contours
  31630. have been described.
  31631. </para>
  31632. <para>
  31633. Before the first contour is described, <b>gluNextContour</b> can be called to
  31634. define the type of the first contour. If <b>gluNextContour</b> is not called
  31635. before the first contour, then the first contour is marked
  31636. <see cref="F:Tao.OpenGl.Glu.GLU_EXTERIOR"/>.
  31637. </para>
  31638. <para>
  31639. This command is obsolete and is provided for backward compatibility only.
  31640. Calls to <b>gluNextContour</b> are mapped to <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  31641. followed by <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  31642. </para>
  31643. <para>
  31644. <b>EXAMPLE</b>
  31645. </para>
  31646. <para>
  31647. You can describe a quadrilateral with a triangular hole in it as follows:
  31648. </para>
  31649. <para>
  31650. <code>
  31651. Glu.gluBeginPolygon(tess);
  31652. Glu.gluTessVertex(tess, v1, v1);
  31653. Glu.gluTessVertex(tess, v2, v2);
  31654. Glu.gluTessVertex(tess, v3, v3);
  31655. Glu.gluTessVertex(tess, v4, v4);
  31656. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  31657. Glu.gluTessVertex(tess, v5, v5);
  31658. Glu.gluTessVertex(tess, v6, v6);
  31659. Glu.gluTessVertex(tess, v7, v7);
  31660. Glu.gluEndPolygon(tess);
  31661. </code>
  31662. </para>
  31663. </remarks>
  31664. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  31665. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  31666. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  31667. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  31668. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  31669. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  31670. </member>
  31671. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)">
  31672. <summary>
  31673. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  31674. </summary>
  31675. <param name="nurb">
  31676. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  31677. </param>
  31678. <param name="which">
  31679. <para>
  31680. The callback being defined. The legal callbacks are as follows:
  31681. </para>
  31682. <para>
  31683. <list type="table">
  31684. <listheader>
  31685. <term>Value</term>
  31686. <description>Description</description>
  31687. </listheader>
  31688. <item>
  31689. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  31690. <description>
  31691. The begin callback indicates the start of a primitive. The
  31692. function takes a single argument of type <see cref="T:System.Int32"/>,
  31693. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  31694. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  31695. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  31696. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  31697. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  31698. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  31699. function is <c>null</c>. The delegate prototype for this
  31700. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  31701. </description>
  31702. </item>
  31703. <item>
  31704. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  31705. <description>
  31706. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  31707. that it takes an additional pointer argument. This pointer is a
  31708. copy of the pointer that was specified at the last call to
  31709. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  31710. function is <c>null</c>. The delegate prototype for this
  31711. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  31712. </description>
  31713. </item>
  31714. <item>
  31715. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  31716. <description>
  31717. The color callback is invoked as the color of a vertex is
  31718. generated. The components of the color are stored in the
  31719. parameter <i>colorData</i>. This callback is effective only when
  31720. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  31721. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  31722. contains four components: R,G,B,A. The default color callback
  31723. function is <c>null</c>. The delegate prototype for this
  31724. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  31725. </description>
  31726. </item>
  31727. <item>
  31728. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  31729. <description>
  31730. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  31731. that it takes an additional pointer argument. This pointer is a
  31732. copy of the pointer that was specified at the last call to
  31733. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  31734. function is <c>null</c>. The delegate prototype for this
  31735. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  31736. </description>
  31737. </item>
  31738. <item>
  31739. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  31740. <description>
  31741. The end callback is invoked at the end of a primitive. The
  31742. default end callback function is <c>null</c>. The delegate
  31743. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  31744. </description>
  31745. </item>
  31746. <item>
  31747. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  31748. <description>
  31749. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  31750. except that it takes an additional pointer argument. This
  31751. pointer is a copy of the pointer that was specified at the last
  31752. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  31753. callback function is <c>null</c>. The delegate prototype for
  31754. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  31755. </description>
  31756. </item>
  31757. <item>
  31758. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  31759. <description>
  31760. The error function is called when an error is encountered. Its
  31761. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  31762. the specific error that occurred. There are 37 errors unique to
  31763. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  31764. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  31765. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  31766. The delegate prototype for this callback is
  31767. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  31768. </description>
  31769. </item>
  31770. <item>
  31771. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  31772. <description>
  31773. The normal callback is invoked as the vertex normal is generated.
  31774. The components of the normal are stored in the parameter
  31775. <i>normalData</i>. In the case of a NURBS curve, the callback
  31776. function is effective only when the user provides a normal map
  31777. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  31778. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  31779. provided, then the generated normal is computed from the normal
  31780. map. If a normal map is not provided then a surface normal is
  31781. computed in a manner similar to that described for evaluators
  31782. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  31783. normal callback function is <c>null</c>. The delegate
  31784. prototype for this callback is
  31785. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  31786. </description>
  31787. </item>
  31788. <item>
  31789. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  31790. <description>
  31791. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  31792. that it takes an additional pointer argument. This pointer is a
  31793. copy of the pointer that was specified at the last call to
  31794. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  31795. function is <c>null</c>. The delegate prototype for this
  31796. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  31797. </description>
  31798. </item>
  31799. <item>
  31800. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  31801. <description>
  31802. The texture callback is invoked as the texture coordinates of a
  31803. vertex are generated. These coordinates are stored in the
  31804. parameter <i>texCoord</i>. The number of texture coordinates can
  31805. be 1, 2, 3, or 4 depending on which type of texture map is
  31806. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  31807. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  31808. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  31809. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  31810. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  31811. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  31812. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  31813. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  31814. specified, this callback function will not be called. The
  31815. default texture callback function is <c>null</c>. The delegate
  31816. prototype for this callback is
  31817. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  31818. </description>
  31819. </item>
  31820. <item>
  31821. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  31822. <description>
  31823. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  31824. callback, except that it takes an additional pointer argument.
  31825. This pointer is a copy of the pointer that was specified at the
  31826. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  31827. callback function is <c>null</c>. The delegate prototype for
  31828. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  31829. </description>
  31830. </item>
  31831. <item>
  31832. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  31833. <description>
  31834. The vertex callback indicates a vertex of the primitive. The
  31835. coordinates of the vertex are stored in the parameter
  31836. <i>vertexData</i>. All the generated vertices have dimension 3,
  31837. that is, homogeneous coordinates have been transformed into
  31838. affine coordinates. The default vertex callback function is
  31839. <c>null</c>. The delegate prototype for this callback is
  31840. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  31841. </description>
  31842. </item>
  31843. <item>
  31844. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  31845. <description>
  31846. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  31847. except that it takes an additional pointer argument. This
  31848. pointer is a copy of the pointer that was specified at the last
  31849. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  31850. callback function is <c>null</c>. The delegate prototype for
  31851. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  31852. </description>
  31853. </item>
  31854. </list>
  31855. </para>
  31856. </param>
  31857. <param name="func">
  31858. The function that the callback invokes.
  31859. </param>
  31860. <remarks>
  31861. <para>
  31862. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  31863. object. If the specified callback is already defined, then it is replaced.
  31864. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  31865. the related data, if any, will be lost.
  31866. </para>
  31867. <para>
  31868. Except the error callback, these callbacks are used by NURBS tessellator
  31869. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  31870. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  31871. primitives resulting from the tessellation. Note that there are two
  31872. versions of each callback: one with a user data pointer and one without. If
  31873. both versions for a particular callback are specified then the callback with
  31874. the user data pointer will be used. Note that <i>userData</i> is a copy of
  31875. the pointer that was specified at the last call to
  31876. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  31877. </para>
  31878. <para>
  31879. The error callback function is effective no matter which value that
  31880. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  31881. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  31882. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  31883. </para>
  31884. <para>
  31885. <b>NOTES</b>
  31886. </para>
  31887. <para>
  31888. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  31889. greater.
  31890. </para>
  31891. <para>
  31892. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  31893. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  31894. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  31895. accepted values for <i>func</i> are available only if the GLU version is 1.3
  31896. or greater.
  31897. </para>
  31898. </remarks>
  31899. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  31900. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  31901. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  31902. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  31903. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  31904. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  31905. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  31906. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  31907. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  31908. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  31909. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  31910. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  31911. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  31912. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  31913. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  31914. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  31915. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  31916. </member>
  31917. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginDataCallback)">
  31918. <summary>
  31919. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  31920. </summary>
  31921. <param name="nurb">
  31922. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  31923. </param>
  31924. <param name="which">
  31925. <para>
  31926. The callback being defined. The legal callbacks are as follows:
  31927. </para>
  31928. <para>
  31929. <list type="table">
  31930. <listheader>
  31931. <term>Value</term>
  31932. <description>Description</description>
  31933. </listheader>
  31934. <item>
  31935. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  31936. <description>
  31937. The begin callback indicates the start of a primitive. The
  31938. function takes a single argument of type <see cref="T:System.Int32"/>,
  31939. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  31940. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  31941. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  31942. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  31943. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  31944. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  31945. function is <c>null</c>. The delegate prototype for this
  31946. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  31947. </description>
  31948. </item>
  31949. <item>
  31950. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  31951. <description>
  31952. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  31953. that it takes an additional pointer argument. This pointer is a
  31954. copy of the pointer that was specified at the last call to
  31955. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  31956. function is <c>null</c>. The delegate prototype for this
  31957. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  31958. </description>
  31959. </item>
  31960. <item>
  31961. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  31962. <description>
  31963. The color callback is invoked as the color of a vertex is
  31964. generated. The components of the color are stored in the
  31965. parameter <i>colorData</i>. This callback is effective only when
  31966. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  31967. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  31968. contains four components: R,G,B,A. The default color callback
  31969. function is <c>null</c>. The delegate prototype for this
  31970. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  31971. </description>
  31972. </item>
  31973. <item>
  31974. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  31975. <description>
  31976. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  31977. that it takes an additional pointer argument. This pointer is a
  31978. copy of the pointer that was specified at the last call to
  31979. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  31980. function is <c>null</c>. The delegate prototype for this
  31981. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  31982. </description>
  31983. </item>
  31984. <item>
  31985. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  31986. <description>
  31987. The end callback is invoked at the end of a primitive. The
  31988. default end callback function is <c>null</c>. The delegate
  31989. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  31990. </description>
  31991. </item>
  31992. <item>
  31993. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  31994. <description>
  31995. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  31996. except that it takes an additional pointer argument. This
  31997. pointer is a copy of the pointer that was specified at the last
  31998. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  31999. callback function is <c>null</c>. The delegate prototype for
  32000. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  32001. </description>
  32002. </item>
  32003. <item>
  32004. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  32005. <description>
  32006. The error function is called when an error is encountered. Its
  32007. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  32008. the specific error that occurred. There are 37 errors unique to
  32009. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  32010. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  32011. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  32012. The delegate prototype for this callback is
  32013. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  32014. </description>
  32015. </item>
  32016. <item>
  32017. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  32018. <description>
  32019. The normal callback is invoked as the vertex normal is generated.
  32020. The components of the normal are stored in the parameter
  32021. <i>normalData</i>. In the case of a NURBS curve, the callback
  32022. function is effective only when the user provides a normal map
  32023. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  32024. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  32025. provided, then the generated normal is computed from the normal
  32026. map. If a normal map is not provided then a surface normal is
  32027. computed in a manner similar to that described for evaluators
  32028. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  32029. normal callback function is <c>null</c>. The delegate
  32030. prototype for this callback is
  32031. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  32032. </description>
  32033. </item>
  32034. <item>
  32035. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  32036. <description>
  32037. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  32038. that it takes an additional pointer argument. This pointer is a
  32039. copy of the pointer that was specified at the last call to
  32040. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32041. function is <c>null</c>. The delegate prototype for this
  32042. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  32043. </description>
  32044. </item>
  32045. <item>
  32046. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  32047. <description>
  32048. The texture callback is invoked as the texture coordinates of a
  32049. vertex are generated. These coordinates are stored in the
  32050. parameter <i>texCoord</i>. The number of texture coordinates can
  32051. be 1, 2, 3, or 4 depending on which type of texture map is
  32052. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  32053. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  32054. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  32055. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  32056. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  32057. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  32058. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  32059. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  32060. specified, this callback function will not be called. The
  32061. default texture callback function is <c>null</c>. The delegate
  32062. prototype for this callback is
  32063. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  32064. </description>
  32065. </item>
  32066. <item>
  32067. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  32068. <description>
  32069. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  32070. callback, except that it takes an additional pointer argument.
  32071. This pointer is a copy of the pointer that was specified at the
  32072. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32073. callback function is <c>null</c>. The delegate prototype for
  32074. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  32075. </description>
  32076. </item>
  32077. <item>
  32078. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  32079. <description>
  32080. The vertex callback indicates a vertex of the primitive. The
  32081. coordinates of the vertex are stored in the parameter
  32082. <i>vertexData</i>. All the generated vertices have dimension 3,
  32083. that is, homogeneous coordinates have been transformed into
  32084. affine coordinates. The default vertex callback function is
  32085. <c>null</c>. The delegate prototype for this callback is
  32086. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  32087. </description>
  32088. </item>
  32089. <item>
  32090. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  32091. <description>
  32092. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  32093. except that it takes an additional pointer argument. This
  32094. pointer is a copy of the pointer that was specified at the last
  32095. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32096. callback function is <c>null</c>. The delegate prototype for
  32097. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  32098. </description>
  32099. </item>
  32100. </list>
  32101. </para>
  32102. </param>
  32103. <param name="func">
  32104. The function that the callback invokes.
  32105. </param>
  32106. <remarks>
  32107. <para>
  32108. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  32109. object. If the specified callback is already defined, then it is replaced.
  32110. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  32111. the related data, if any, will be lost.
  32112. </para>
  32113. <para>
  32114. Except the error callback, these callbacks are used by NURBS tessellator
  32115. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  32116. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  32117. primitives resulting from the tessellation. Note that there are two
  32118. versions of each callback: one with a user data pointer and one without. If
  32119. both versions for a particular callback are specified then the callback with
  32120. the user data pointer will be used. Note that <i>userData</i> is a copy of
  32121. the pointer that was specified at the last call to
  32122. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  32123. </para>
  32124. <para>
  32125. The error callback function is effective no matter which value that
  32126. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  32127. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  32128. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  32129. </para>
  32130. <para>
  32131. <b>NOTES</b>
  32132. </para>
  32133. <para>
  32134. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  32135. greater.
  32136. </para>
  32137. <para>
  32138. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  32139. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  32140. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  32141. accepted values for <i>func</i> are available only if the GLU version is 1.3
  32142. or greater.
  32143. </para>
  32144. </remarks>
  32145. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  32146. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  32147. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  32148. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  32149. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  32150. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  32151. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  32152. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  32153. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  32154. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  32155. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  32156. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  32157. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  32158. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  32159. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  32160. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  32161. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  32162. </member>
  32163. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsColorCallback)">
  32164. <summary>
  32165. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  32166. </summary>
  32167. <param name="nurb">
  32168. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  32169. </param>
  32170. <param name="which">
  32171. <para>
  32172. The callback being defined. The legal callbacks are as follows:
  32173. </para>
  32174. <para>
  32175. <list type="table">
  32176. <listheader>
  32177. <term>Value</term>
  32178. <description>Description</description>
  32179. </listheader>
  32180. <item>
  32181. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  32182. <description>
  32183. The begin callback indicates the start of a primitive. The
  32184. function takes a single argument of type <see cref="T:System.Int32"/>,
  32185. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  32186. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  32187. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  32188. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  32189. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  32190. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  32191. function is <c>null</c>. The delegate prototype for this
  32192. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  32193. </description>
  32194. </item>
  32195. <item>
  32196. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  32197. <description>
  32198. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  32199. that it takes an additional pointer argument. This pointer is a
  32200. copy of the pointer that was specified at the last call to
  32201. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32202. function is <c>null</c>. The delegate prototype for this
  32203. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  32204. </description>
  32205. </item>
  32206. <item>
  32207. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  32208. <description>
  32209. The color callback is invoked as the color of a vertex is
  32210. generated. The components of the color are stored in the
  32211. parameter <i>colorData</i>. This callback is effective only when
  32212. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  32213. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  32214. contains four components: R,G,B,A. The default color callback
  32215. function is <c>null</c>. The delegate prototype for this
  32216. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  32217. </description>
  32218. </item>
  32219. <item>
  32220. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  32221. <description>
  32222. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  32223. that it takes an additional pointer argument. This pointer is a
  32224. copy of the pointer that was specified at the last call to
  32225. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32226. function is <c>null</c>. The delegate prototype for this
  32227. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  32228. </description>
  32229. </item>
  32230. <item>
  32231. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  32232. <description>
  32233. The end callback is invoked at the end of a primitive. The
  32234. default end callback function is <c>null</c>. The delegate
  32235. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  32236. </description>
  32237. </item>
  32238. <item>
  32239. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  32240. <description>
  32241. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  32242. except that it takes an additional pointer argument. This
  32243. pointer is a copy of the pointer that was specified at the last
  32244. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32245. callback function is <c>null</c>. The delegate prototype for
  32246. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  32247. </description>
  32248. </item>
  32249. <item>
  32250. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  32251. <description>
  32252. The error function is called when an error is encountered. Its
  32253. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  32254. the specific error that occurred. There are 37 errors unique to
  32255. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  32256. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  32257. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  32258. The delegate prototype for this callback is
  32259. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  32260. </description>
  32261. </item>
  32262. <item>
  32263. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  32264. <description>
  32265. The normal callback is invoked as the vertex normal is generated.
  32266. The components of the normal are stored in the parameter
  32267. <i>normalData</i>. In the case of a NURBS curve, the callback
  32268. function is effective only when the user provides a normal map
  32269. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  32270. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  32271. provided, then the generated normal is computed from the normal
  32272. map. If a normal map is not provided then a surface normal is
  32273. computed in a manner similar to that described for evaluators
  32274. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  32275. normal callback function is <c>null</c>. The delegate
  32276. prototype for this callback is
  32277. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  32278. </description>
  32279. </item>
  32280. <item>
  32281. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  32282. <description>
  32283. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  32284. that it takes an additional pointer argument. This pointer is a
  32285. copy of the pointer that was specified at the last call to
  32286. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32287. function is <c>null</c>. The delegate prototype for this
  32288. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  32289. </description>
  32290. </item>
  32291. <item>
  32292. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  32293. <description>
  32294. The texture callback is invoked as the texture coordinates of a
  32295. vertex are generated. These coordinates are stored in the
  32296. parameter <i>texCoord</i>. The number of texture coordinates can
  32297. be 1, 2, 3, or 4 depending on which type of texture map is
  32298. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  32299. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  32300. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  32301. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  32302. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  32303. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  32304. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  32305. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  32306. specified, this callback function will not be called. The
  32307. default texture callback function is <c>null</c>. The delegate
  32308. prototype for this callback is
  32309. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  32310. </description>
  32311. </item>
  32312. <item>
  32313. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  32314. <description>
  32315. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  32316. callback, except that it takes an additional pointer argument.
  32317. This pointer is a copy of the pointer that was specified at the
  32318. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32319. callback function is <c>null</c>. The delegate prototype for
  32320. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  32321. </description>
  32322. </item>
  32323. <item>
  32324. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  32325. <description>
  32326. The vertex callback indicates a vertex of the primitive. The
  32327. coordinates of the vertex are stored in the parameter
  32328. <i>vertexData</i>. All the generated vertices have dimension 3,
  32329. that is, homogeneous coordinates have been transformed into
  32330. affine coordinates. The default vertex callback function is
  32331. <c>null</c>. The delegate prototype for this callback is
  32332. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  32333. </description>
  32334. </item>
  32335. <item>
  32336. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  32337. <description>
  32338. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  32339. except that it takes an additional pointer argument. This
  32340. pointer is a copy of the pointer that was specified at the last
  32341. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32342. callback function is <c>null</c>. The delegate prototype for
  32343. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  32344. </description>
  32345. </item>
  32346. </list>
  32347. </para>
  32348. </param>
  32349. <param name="func">
  32350. The function that the callback invokes.
  32351. </param>
  32352. <remarks>
  32353. <para>
  32354. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  32355. object. If the specified callback is already defined, then it is replaced.
  32356. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  32357. the related data, if any, will be lost.
  32358. </para>
  32359. <para>
  32360. Except the error callback, these callbacks are used by NURBS tessellator
  32361. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  32362. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  32363. primitives resulting from the tessellation. Note that there are two
  32364. versions of each callback: one with a user data pointer and one without. If
  32365. both versions for a particular callback are specified then the callback with
  32366. the user data pointer will be used. Note that <i>userData</i> is a copy of
  32367. the pointer that was specified at the last call to
  32368. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  32369. </para>
  32370. <para>
  32371. The error callback function is effective no matter which value that
  32372. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  32373. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  32374. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  32375. </para>
  32376. <para>
  32377. <b>NOTES</b>
  32378. </para>
  32379. <para>
  32380. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  32381. greater.
  32382. </para>
  32383. <para>
  32384. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  32385. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  32386. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  32387. accepted values for <i>func</i> are available only if the GLU version is 1.3
  32388. or greater.
  32389. </para>
  32390. </remarks>
  32391. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  32392. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  32393. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  32394. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  32395. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  32396. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  32397. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  32398. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  32399. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  32400. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  32401. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  32402. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  32403. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  32404. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  32405. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  32406. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  32407. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  32408. </member>
  32409. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsColorDataCallback)">
  32410. <summary>
  32411. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  32412. </summary>
  32413. <param name="nurb">
  32414. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  32415. </param>
  32416. <param name="which">
  32417. <para>
  32418. The callback being defined. The legal callbacks are as follows:
  32419. </para>
  32420. <para>
  32421. <list type="table">
  32422. <listheader>
  32423. <term>Value</term>
  32424. <description>Description</description>
  32425. </listheader>
  32426. <item>
  32427. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  32428. <description>
  32429. The begin callback indicates the start of a primitive. The
  32430. function takes a single argument of type <see cref="T:System.Int32"/>,
  32431. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  32432. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  32433. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  32434. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  32435. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  32436. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  32437. function is <c>null</c>. The delegate prototype for this
  32438. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  32439. </description>
  32440. </item>
  32441. <item>
  32442. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  32443. <description>
  32444. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  32445. that it takes an additional pointer argument. This pointer is a
  32446. copy of the pointer that was specified at the last call to
  32447. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32448. function is <c>null</c>. The delegate prototype for this
  32449. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  32450. </description>
  32451. </item>
  32452. <item>
  32453. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  32454. <description>
  32455. The color callback is invoked as the color of a vertex is
  32456. generated. The components of the color are stored in the
  32457. parameter <i>colorData</i>. This callback is effective only when
  32458. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  32459. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  32460. contains four components: R,G,B,A. The default color callback
  32461. function is <c>null</c>. The delegate prototype for this
  32462. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  32463. </description>
  32464. </item>
  32465. <item>
  32466. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  32467. <description>
  32468. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  32469. that it takes an additional pointer argument. This pointer is a
  32470. copy of the pointer that was specified at the last call to
  32471. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32472. function is <c>null</c>. The delegate prototype for this
  32473. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  32474. </description>
  32475. </item>
  32476. <item>
  32477. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  32478. <description>
  32479. The end callback is invoked at the end of a primitive. The
  32480. default end callback function is <c>null</c>. The delegate
  32481. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  32482. </description>
  32483. </item>
  32484. <item>
  32485. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  32486. <description>
  32487. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  32488. except that it takes an additional pointer argument. This
  32489. pointer is a copy of the pointer that was specified at the last
  32490. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32491. callback function is <c>null</c>. The delegate prototype for
  32492. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  32493. </description>
  32494. </item>
  32495. <item>
  32496. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  32497. <description>
  32498. The error function is called when an error is encountered. Its
  32499. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  32500. the specific error that occurred. There are 37 errors unique to
  32501. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  32502. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  32503. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  32504. The delegate prototype for this callback is
  32505. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  32506. </description>
  32507. </item>
  32508. <item>
  32509. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  32510. <description>
  32511. The normal callback is invoked as the vertex normal is generated.
  32512. The components of the normal are stored in the parameter
  32513. <i>normalData</i>. In the case of a NURBS curve, the callback
  32514. function is effective only when the user provides a normal map
  32515. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  32516. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  32517. provided, then the generated normal is computed from the normal
  32518. map. If a normal map is not provided then a surface normal is
  32519. computed in a manner similar to that described for evaluators
  32520. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  32521. normal callback function is <c>null</c>. The delegate
  32522. prototype for this callback is
  32523. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  32524. </description>
  32525. </item>
  32526. <item>
  32527. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  32528. <description>
  32529. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  32530. that it takes an additional pointer argument. This pointer is a
  32531. copy of the pointer that was specified at the last call to
  32532. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32533. function is <c>null</c>. The delegate prototype for this
  32534. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  32535. </description>
  32536. </item>
  32537. <item>
  32538. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  32539. <description>
  32540. The texture callback is invoked as the texture coordinates of a
  32541. vertex are generated. These coordinates are stored in the
  32542. parameter <i>texCoord</i>. The number of texture coordinates can
  32543. be 1, 2, 3, or 4 depending on which type of texture map is
  32544. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  32545. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  32546. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  32547. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  32548. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  32549. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  32550. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  32551. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  32552. specified, this callback function will not be called. The
  32553. default texture callback function is <c>null</c>. The delegate
  32554. prototype for this callback is
  32555. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  32556. </description>
  32557. </item>
  32558. <item>
  32559. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  32560. <description>
  32561. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  32562. callback, except that it takes an additional pointer argument.
  32563. This pointer is a copy of the pointer that was specified at the
  32564. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32565. callback function is <c>null</c>. The delegate prototype for
  32566. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  32567. </description>
  32568. </item>
  32569. <item>
  32570. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  32571. <description>
  32572. The vertex callback indicates a vertex of the primitive. The
  32573. coordinates of the vertex are stored in the parameter
  32574. <i>vertexData</i>. All the generated vertices have dimension 3,
  32575. that is, homogeneous coordinates have been transformed into
  32576. affine coordinates. The default vertex callback function is
  32577. <c>null</c>. The delegate prototype for this callback is
  32578. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  32579. </description>
  32580. </item>
  32581. <item>
  32582. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  32583. <description>
  32584. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  32585. except that it takes an additional pointer argument. This
  32586. pointer is a copy of the pointer that was specified at the last
  32587. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32588. callback function is <c>null</c>. The delegate prototype for
  32589. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  32590. </description>
  32591. </item>
  32592. </list>
  32593. </para>
  32594. </param>
  32595. <param name="func">
  32596. The function that the callback invokes.
  32597. </param>
  32598. <remarks>
  32599. <para>
  32600. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  32601. object. If the specified callback is already defined, then it is replaced.
  32602. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  32603. the related data, if any, will be lost.
  32604. </para>
  32605. <para>
  32606. Except the error callback, these callbacks are used by NURBS tessellator
  32607. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  32608. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  32609. primitives resulting from the tessellation. Note that there are two
  32610. versions of each callback: one with a user data pointer and one without. If
  32611. both versions for a particular callback are specified then the callback with
  32612. the user data pointer will be used. Note that <i>userData</i> is a copy of
  32613. the pointer that was specified at the last call to
  32614. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  32615. </para>
  32616. <para>
  32617. The error callback function is effective no matter which value that
  32618. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  32619. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  32620. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  32621. </para>
  32622. <para>
  32623. <b>NOTES</b>
  32624. </para>
  32625. <para>
  32626. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  32627. greater.
  32628. </para>
  32629. <para>
  32630. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  32631. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  32632. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  32633. accepted values for <i>func</i> are available only if the GLU version is 1.3
  32634. or greater.
  32635. </para>
  32636. </remarks>
  32637. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  32638. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  32639. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  32640. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  32641. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  32642. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  32643. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  32644. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  32645. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  32646. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  32647. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  32648. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  32649. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  32650. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  32651. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  32652. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  32653. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  32654. </member>
  32655. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsEndCallback)">
  32656. <summary>
  32657. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  32658. </summary>
  32659. <param name="nurb">
  32660. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  32661. </param>
  32662. <param name="which">
  32663. <para>
  32664. The callback being defined. The legal callbacks are as follows:
  32665. </para>
  32666. <para>
  32667. <list type="table">
  32668. <listheader>
  32669. <term>Value</term>
  32670. <description>Description</description>
  32671. </listheader>
  32672. <item>
  32673. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  32674. <description>
  32675. The begin callback indicates the start of a primitive. The
  32676. function takes a single argument of type <see cref="T:System.Int32"/>,
  32677. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  32678. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  32679. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  32680. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  32681. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  32682. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  32683. function is <c>null</c>. The delegate prototype for this
  32684. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  32685. </description>
  32686. </item>
  32687. <item>
  32688. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  32689. <description>
  32690. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  32691. that it takes an additional pointer argument. This pointer is a
  32692. copy of the pointer that was specified at the last call to
  32693. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32694. function is <c>null</c>. The delegate prototype for this
  32695. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  32696. </description>
  32697. </item>
  32698. <item>
  32699. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  32700. <description>
  32701. The color callback is invoked as the color of a vertex is
  32702. generated. The components of the color are stored in the
  32703. parameter <i>colorData</i>. This callback is effective only when
  32704. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  32705. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  32706. contains four components: R,G,B,A. The default color callback
  32707. function is <c>null</c>. The delegate prototype for this
  32708. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  32709. </description>
  32710. </item>
  32711. <item>
  32712. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  32713. <description>
  32714. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  32715. that it takes an additional pointer argument. This pointer is a
  32716. copy of the pointer that was specified at the last call to
  32717. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32718. function is <c>null</c>. The delegate prototype for this
  32719. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  32720. </description>
  32721. </item>
  32722. <item>
  32723. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  32724. <description>
  32725. The end callback is invoked at the end of a primitive. The
  32726. default end callback function is <c>null</c>. The delegate
  32727. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  32728. </description>
  32729. </item>
  32730. <item>
  32731. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  32732. <description>
  32733. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  32734. except that it takes an additional pointer argument. This
  32735. pointer is a copy of the pointer that was specified at the last
  32736. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32737. callback function is <c>null</c>. The delegate prototype for
  32738. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  32739. </description>
  32740. </item>
  32741. <item>
  32742. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  32743. <description>
  32744. The error function is called when an error is encountered. Its
  32745. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  32746. the specific error that occurred. There are 37 errors unique to
  32747. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  32748. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  32749. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  32750. The delegate prototype for this callback is
  32751. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  32752. </description>
  32753. </item>
  32754. <item>
  32755. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  32756. <description>
  32757. The normal callback is invoked as the vertex normal is generated.
  32758. The components of the normal are stored in the parameter
  32759. <i>normalData</i>. In the case of a NURBS curve, the callback
  32760. function is effective only when the user provides a normal map
  32761. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  32762. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  32763. provided, then the generated normal is computed from the normal
  32764. map. If a normal map is not provided then a surface normal is
  32765. computed in a manner similar to that described for evaluators
  32766. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  32767. normal callback function is <c>null</c>. The delegate
  32768. prototype for this callback is
  32769. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  32770. </description>
  32771. </item>
  32772. <item>
  32773. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  32774. <description>
  32775. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  32776. that it takes an additional pointer argument. This pointer is a
  32777. copy of the pointer that was specified at the last call to
  32778. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32779. function is <c>null</c>. The delegate prototype for this
  32780. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  32781. </description>
  32782. </item>
  32783. <item>
  32784. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  32785. <description>
  32786. The texture callback is invoked as the texture coordinates of a
  32787. vertex are generated. These coordinates are stored in the
  32788. parameter <i>texCoord</i>. The number of texture coordinates can
  32789. be 1, 2, 3, or 4 depending on which type of texture map is
  32790. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  32791. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  32792. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  32793. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  32794. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  32795. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  32796. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  32797. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  32798. specified, this callback function will not be called. The
  32799. default texture callback function is <c>null</c>. The delegate
  32800. prototype for this callback is
  32801. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  32802. </description>
  32803. </item>
  32804. <item>
  32805. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  32806. <description>
  32807. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  32808. callback, except that it takes an additional pointer argument.
  32809. This pointer is a copy of the pointer that was specified at the
  32810. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32811. callback function is <c>null</c>. The delegate prototype for
  32812. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  32813. </description>
  32814. </item>
  32815. <item>
  32816. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  32817. <description>
  32818. The vertex callback indicates a vertex of the primitive. The
  32819. coordinates of the vertex are stored in the parameter
  32820. <i>vertexData</i>. All the generated vertices have dimension 3,
  32821. that is, homogeneous coordinates have been transformed into
  32822. affine coordinates. The default vertex callback function is
  32823. <c>null</c>. The delegate prototype for this callback is
  32824. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  32825. </description>
  32826. </item>
  32827. <item>
  32828. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  32829. <description>
  32830. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  32831. except that it takes an additional pointer argument. This
  32832. pointer is a copy of the pointer that was specified at the last
  32833. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32834. callback function is <c>null</c>. The delegate prototype for
  32835. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  32836. </description>
  32837. </item>
  32838. </list>
  32839. </para>
  32840. </param>
  32841. <param name="func">
  32842. The function that the callback invokes.
  32843. </param>
  32844. <remarks>
  32845. <para>
  32846. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  32847. object. If the specified callback is already defined, then it is replaced.
  32848. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  32849. the related data, if any, will be lost.
  32850. </para>
  32851. <para>
  32852. Except the error callback, these callbacks are used by NURBS tessellator
  32853. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  32854. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  32855. primitives resulting from the tessellation. Note that there are two
  32856. versions of each callback: one with a user data pointer and one without. If
  32857. both versions for a particular callback are specified then the callback with
  32858. the user data pointer will be used. Note that <i>userData</i> is a copy of
  32859. the pointer that was specified at the last call to
  32860. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  32861. </para>
  32862. <para>
  32863. The error callback function is effective no matter which value that
  32864. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  32865. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  32866. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  32867. </para>
  32868. <para>
  32869. <b>NOTES</b>
  32870. </para>
  32871. <para>
  32872. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  32873. greater.
  32874. </para>
  32875. <para>
  32876. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  32877. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  32878. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  32879. accepted values for <i>func</i> are available only if the GLU version is 1.3
  32880. or greater.
  32881. </para>
  32882. </remarks>
  32883. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  32884. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  32885. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  32886. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  32887. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  32888. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  32889. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  32890. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  32891. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  32892. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  32893. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  32894. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  32895. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  32896. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  32897. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  32898. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  32899. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  32900. </member>
  32901. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsEndDataCallback)">
  32902. <summary>
  32903. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  32904. </summary>
  32905. <param name="nurb">
  32906. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  32907. </param>
  32908. <param name="which">
  32909. <para>
  32910. The callback being defined. The legal callbacks are as follows:
  32911. </para>
  32912. <para>
  32913. <list type="table">
  32914. <listheader>
  32915. <term>Value</term>
  32916. <description>Description</description>
  32917. </listheader>
  32918. <item>
  32919. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  32920. <description>
  32921. The begin callback indicates the start of a primitive. The
  32922. function takes a single argument of type <see cref="T:System.Int32"/>,
  32923. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  32924. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  32925. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  32926. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  32927. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  32928. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  32929. function is <c>null</c>. The delegate prototype for this
  32930. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  32931. </description>
  32932. </item>
  32933. <item>
  32934. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  32935. <description>
  32936. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  32937. that it takes an additional pointer argument. This pointer is a
  32938. copy of the pointer that was specified at the last call to
  32939. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32940. function is <c>null</c>. The delegate prototype for this
  32941. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  32942. </description>
  32943. </item>
  32944. <item>
  32945. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  32946. <description>
  32947. The color callback is invoked as the color of a vertex is
  32948. generated. The components of the color are stored in the
  32949. parameter <i>colorData</i>. This callback is effective only when
  32950. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  32951. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  32952. contains four components: R,G,B,A. The default color callback
  32953. function is <c>null</c>. The delegate prototype for this
  32954. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  32955. </description>
  32956. </item>
  32957. <item>
  32958. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  32959. <description>
  32960. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  32961. that it takes an additional pointer argument. This pointer is a
  32962. copy of the pointer that was specified at the last call to
  32963. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  32964. function is <c>null</c>. The delegate prototype for this
  32965. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  32966. </description>
  32967. </item>
  32968. <item>
  32969. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  32970. <description>
  32971. The end callback is invoked at the end of a primitive. The
  32972. default end callback function is <c>null</c>. The delegate
  32973. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  32974. </description>
  32975. </item>
  32976. <item>
  32977. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  32978. <description>
  32979. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  32980. except that it takes an additional pointer argument. This
  32981. pointer is a copy of the pointer that was specified at the last
  32982. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  32983. callback function is <c>null</c>. The delegate prototype for
  32984. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  32985. </description>
  32986. </item>
  32987. <item>
  32988. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  32989. <description>
  32990. The error function is called when an error is encountered. Its
  32991. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  32992. the specific error that occurred. There are 37 errors unique to
  32993. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  32994. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  32995. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  32996. The delegate prototype for this callback is
  32997. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  32998. </description>
  32999. </item>
  33000. <item>
  33001. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  33002. <description>
  33003. The normal callback is invoked as the vertex normal is generated.
  33004. The components of the normal are stored in the parameter
  33005. <i>normalData</i>. In the case of a NURBS curve, the callback
  33006. function is effective only when the user provides a normal map
  33007. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  33008. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  33009. provided, then the generated normal is computed from the normal
  33010. map. If a normal map is not provided then a surface normal is
  33011. computed in a manner similar to that described for evaluators
  33012. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  33013. normal callback function is <c>null</c>. The delegate
  33014. prototype for this callback is
  33015. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  33016. </description>
  33017. </item>
  33018. <item>
  33019. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  33020. <description>
  33021. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  33022. that it takes an additional pointer argument. This pointer is a
  33023. copy of the pointer that was specified at the last call to
  33024. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33025. function is <c>null</c>. The delegate prototype for this
  33026. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  33027. </description>
  33028. </item>
  33029. <item>
  33030. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  33031. <description>
  33032. The texture callback is invoked as the texture coordinates of a
  33033. vertex are generated. These coordinates are stored in the
  33034. parameter <i>texCoord</i>. The number of texture coordinates can
  33035. be 1, 2, 3, or 4 depending on which type of texture map is
  33036. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  33037. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  33038. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  33039. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  33040. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  33041. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  33042. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  33043. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  33044. specified, this callback function will not be called. The
  33045. default texture callback function is <c>null</c>. The delegate
  33046. prototype for this callback is
  33047. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  33048. </description>
  33049. </item>
  33050. <item>
  33051. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  33052. <description>
  33053. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  33054. callback, except that it takes an additional pointer argument.
  33055. This pointer is a copy of the pointer that was specified at the
  33056. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33057. callback function is <c>null</c>. The delegate prototype for
  33058. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  33059. </description>
  33060. </item>
  33061. <item>
  33062. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  33063. <description>
  33064. The vertex callback indicates a vertex of the primitive. The
  33065. coordinates of the vertex are stored in the parameter
  33066. <i>vertexData</i>. All the generated vertices have dimension 3,
  33067. that is, homogeneous coordinates have been transformed into
  33068. affine coordinates. The default vertex callback function is
  33069. <c>null</c>. The delegate prototype for this callback is
  33070. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  33071. </description>
  33072. </item>
  33073. <item>
  33074. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  33075. <description>
  33076. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  33077. except that it takes an additional pointer argument. This
  33078. pointer is a copy of the pointer that was specified at the last
  33079. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33080. callback function is <c>null</c>. The delegate prototype for
  33081. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  33082. </description>
  33083. </item>
  33084. </list>
  33085. </para>
  33086. </param>
  33087. <param name="func">
  33088. The function that the callback invokes.
  33089. </param>
  33090. <remarks>
  33091. <para>
  33092. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  33093. object. If the specified callback is already defined, then it is replaced.
  33094. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  33095. the related data, if any, will be lost.
  33096. </para>
  33097. <para>
  33098. Except the error callback, these callbacks are used by NURBS tessellator
  33099. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  33100. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  33101. primitives resulting from the tessellation. Note that there are two
  33102. versions of each callback: one with a user data pointer and one without. If
  33103. both versions for a particular callback are specified then the callback with
  33104. the user data pointer will be used. Note that <i>userData</i> is a copy of
  33105. the pointer that was specified at the last call to
  33106. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  33107. </para>
  33108. <para>
  33109. The error callback function is effective no matter which value that
  33110. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  33111. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  33112. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  33113. </para>
  33114. <para>
  33115. <b>NOTES</b>
  33116. </para>
  33117. <para>
  33118. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  33119. greater.
  33120. </para>
  33121. <para>
  33122. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  33123. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  33124. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  33125. accepted values for <i>func</i> are available only if the GLU version is 1.3
  33126. or greater.
  33127. </para>
  33128. </remarks>
  33129. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  33130. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  33131. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  33132. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  33133. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  33134. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  33135. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  33136. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  33137. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  33138. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  33139. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  33140. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  33141. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  33142. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  33143. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  33144. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  33145. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  33146. </member>
  33147. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsErrorCallback)">
  33148. <summary>
  33149. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  33150. </summary>
  33151. <param name="nurb">
  33152. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  33153. </param>
  33154. <param name="which">
  33155. <para>
  33156. The callback being defined. The legal callbacks are as follows:
  33157. </para>
  33158. <para>
  33159. <list type="table">
  33160. <listheader>
  33161. <term>Value</term>
  33162. <description>Description</description>
  33163. </listheader>
  33164. <item>
  33165. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  33166. <description>
  33167. The begin callback indicates the start of a primitive. The
  33168. function takes a single argument of type <see cref="T:System.Int32"/>,
  33169. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  33170. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  33171. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  33172. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  33173. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  33174. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  33175. function is <c>null</c>. The delegate prototype for this
  33176. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  33177. </description>
  33178. </item>
  33179. <item>
  33180. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  33181. <description>
  33182. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  33183. that it takes an additional pointer argument. This pointer is a
  33184. copy of the pointer that was specified at the last call to
  33185. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33186. function is <c>null</c>. The delegate prototype for this
  33187. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  33188. </description>
  33189. </item>
  33190. <item>
  33191. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  33192. <description>
  33193. The color callback is invoked as the color of a vertex is
  33194. generated. The components of the color are stored in the
  33195. parameter <i>colorData</i>. This callback is effective only when
  33196. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  33197. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  33198. contains four components: R,G,B,A. The default color callback
  33199. function is <c>null</c>. The delegate prototype for this
  33200. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  33201. </description>
  33202. </item>
  33203. <item>
  33204. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  33205. <description>
  33206. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  33207. that it takes an additional pointer argument. This pointer is a
  33208. copy of the pointer that was specified at the last call to
  33209. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33210. function is <c>null</c>. The delegate prototype for this
  33211. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  33212. </description>
  33213. </item>
  33214. <item>
  33215. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  33216. <description>
  33217. The end callback is invoked at the end of a primitive. The
  33218. default end callback function is <c>null</c>. The delegate
  33219. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  33220. </description>
  33221. </item>
  33222. <item>
  33223. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  33224. <description>
  33225. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  33226. except that it takes an additional pointer argument. This
  33227. pointer is a copy of the pointer that was specified at the last
  33228. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33229. callback function is <c>null</c>. The delegate prototype for
  33230. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  33231. </description>
  33232. </item>
  33233. <item>
  33234. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  33235. <description>
  33236. The error function is called when an error is encountered. Its
  33237. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  33238. the specific error that occurred. There are 37 errors unique to
  33239. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  33240. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  33241. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  33242. The delegate prototype for this callback is
  33243. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  33244. </description>
  33245. </item>
  33246. <item>
  33247. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  33248. <description>
  33249. The normal callback is invoked as the vertex normal is generated.
  33250. The components of the normal are stored in the parameter
  33251. <i>normalData</i>. In the case of a NURBS curve, the callback
  33252. function is effective only when the user provides a normal map
  33253. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  33254. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  33255. provided, then the generated normal is computed from the normal
  33256. map. If a normal map is not provided then a surface normal is
  33257. computed in a manner similar to that described for evaluators
  33258. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  33259. normal callback function is <c>null</c>. The delegate
  33260. prototype for this callback is
  33261. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  33262. </description>
  33263. </item>
  33264. <item>
  33265. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  33266. <description>
  33267. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  33268. that it takes an additional pointer argument. This pointer is a
  33269. copy of the pointer that was specified at the last call to
  33270. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33271. function is <c>null</c>. The delegate prototype for this
  33272. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  33273. </description>
  33274. </item>
  33275. <item>
  33276. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  33277. <description>
  33278. The texture callback is invoked as the texture coordinates of a
  33279. vertex are generated. These coordinates are stored in the
  33280. parameter <i>texCoord</i>. The number of texture coordinates can
  33281. be 1, 2, 3, or 4 depending on which type of texture map is
  33282. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  33283. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  33284. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  33285. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  33286. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  33287. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  33288. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  33289. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  33290. specified, this callback function will not be called. The
  33291. default texture callback function is <c>null</c>. The delegate
  33292. prototype for this callback is
  33293. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  33294. </description>
  33295. </item>
  33296. <item>
  33297. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  33298. <description>
  33299. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  33300. callback, except that it takes an additional pointer argument.
  33301. This pointer is a copy of the pointer that was specified at the
  33302. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33303. callback function is <c>null</c>. The delegate prototype for
  33304. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  33305. </description>
  33306. </item>
  33307. <item>
  33308. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  33309. <description>
  33310. The vertex callback indicates a vertex of the primitive. The
  33311. coordinates of the vertex are stored in the parameter
  33312. <i>vertexData</i>. All the generated vertices have dimension 3,
  33313. that is, homogeneous coordinates have been transformed into
  33314. affine coordinates. The default vertex callback function is
  33315. <c>null</c>. The delegate prototype for this callback is
  33316. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  33317. </description>
  33318. </item>
  33319. <item>
  33320. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  33321. <description>
  33322. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  33323. except that it takes an additional pointer argument. This
  33324. pointer is a copy of the pointer that was specified at the last
  33325. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33326. callback function is <c>null</c>. The delegate prototype for
  33327. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  33328. </description>
  33329. </item>
  33330. </list>
  33331. </para>
  33332. </param>
  33333. <param name="func">
  33334. The function that the callback invokes.
  33335. </param>
  33336. <remarks>
  33337. <para>
  33338. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  33339. object. If the specified callback is already defined, then it is replaced.
  33340. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  33341. the related data, if any, will be lost.
  33342. </para>
  33343. <para>
  33344. Except the error callback, these callbacks are used by NURBS tessellator
  33345. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  33346. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  33347. primitives resulting from the tessellation. Note that there are two
  33348. versions of each callback: one with a user data pointer and one without. If
  33349. both versions for a particular callback are specified then the callback with
  33350. the user data pointer will be used. Note that <i>userData</i> is a copy of
  33351. the pointer that was specified at the last call to
  33352. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  33353. </para>
  33354. <para>
  33355. The error callback function is effective no matter which value that
  33356. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  33357. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  33358. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  33359. </para>
  33360. <para>
  33361. <b>NOTES</b>
  33362. </para>
  33363. <para>
  33364. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  33365. greater.
  33366. </para>
  33367. <para>
  33368. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  33369. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  33370. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  33371. accepted values for <i>func</i> are available only if the GLU version is 1.3
  33372. or greater.
  33373. </para>
  33374. </remarks>
  33375. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  33376. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  33377. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  33378. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  33379. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  33380. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  33381. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  33382. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  33383. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  33384. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  33385. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  33386. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  33387. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  33388. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  33389. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  33390. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  33391. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  33392. </member>
  33393. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsNormalCallback)">
  33394. <summary>
  33395. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  33396. </summary>
  33397. <param name="nurb">
  33398. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  33399. </param>
  33400. <param name="which">
  33401. <para>
  33402. The callback being defined. The legal callbacks are as follows:
  33403. </para>
  33404. <para>
  33405. <list type="table">
  33406. <listheader>
  33407. <term>Value</term>
  33408. <description>Description</description>
  33409. </listheader>
  33410. <item>
  33411. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  33412. <description>
  33413. The begin callback indicates the start of a primitive. The
  33414. function takes a single argument of type <see cref="T:System.Int32"/>,
  33415. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  33416. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  33417. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  33418. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  33419. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  33420. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  33421. function is <c>null</c>. The delegate prototype for this
  33422. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  33423. </description>
  33424. </item>
  33425. <item>
  33426. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  33427. <description>
  33428. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  33429. that it takes an additional pointer argument. This pointer is a
  33430. copy of the pointer that was specified at the last call to
  33431. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33432. function is <c>null</c>. The delegate prototype for this
  33433. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  33434. </description>
  33435. </item>
  33436. <item>
  33437. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  33438. <description>
  33439. The color callback is invoked as the color of a vertex is
  33440. generated. The components of the color are stored in the
  33441. parameter <i>colorData</i>. This callback is effective only when
  33442. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  33443. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  33444. contains four components: R,G,B,A. The default color callback
  33445. function is <c>null</c>. The delegate prototype for this
  33446. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  33447. </description>
  33448. </item>
  33449. <item>
  33450. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  33451. <description>
  33452. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  33453. that it takes an additional pointer argument. This pointer is a
  33454. copy of the pointer that was specified at the last call to
  33455. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33456. function is <c>null</c>. The delegate prototype for this
  33457. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  33458. </description>
  33459. </item>
  33460. <item>
  33461. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  33462. <description>
  33463. The end callback is invoked at the end of a primitive. The
  33464. default end callback function is <c>null</c>. The delegate
  33465. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  33466. </description>
  33467. </item>
  33468. <item>
  33469. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  33470. <description>
  33471. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  33472. except that it takes an additional pointer argument. This
  33473. pointer is a copy of the pointer that was specified at the last
  33474. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33475. callback function is <c>null</c>. The delegate prototype for
  33476. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  33477. </description>
  33478. </item>
  33479. <item>
  33480. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  33481. <description>
  33482. The error function is called when an error is encountered. Its
  33483. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  33484. the specific error that occurred. There are 37 errors unique to
  33485. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  33486. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  33487. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  33488. The delegate prototype for this callback is
  33489. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  33490. </description>
  33491. </item>
  33492. <item>
  33493. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  33494. <description>
  33495. The normal callback is invoked as the vertex normal is generated.
  33496. The components of the normal are stored in the parameter
  33497. <i>normalData</i>. In the case of a NURBS curve, the callback
  33498. function is effective only when the user provides a normal map
  33499. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  33500. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  33501. provided, then the generated normal is computed from the normal
  33502. map. If a normal map is not provided then a surface normal is
  33503. computed in a manner similar to that described for evaluators
  33504. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  33505. normal callback function is <c>null</c>. The delegate
  33506. prototype for this callback is
  33507. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  33508. </description>
  33509. </item>
  33510. <item>
  33511. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  33512. <description>
  33513. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  33514. that it takes an additional pointer argument. This pointer is a
  33515. copy of the pointer that was specified at the last call to
  33516. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33517. function is <c>null</c>. The delegate prototype for this
  33518. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  33519. </description>
  33520. </item>
  33521. <item>
  33522. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  33523. <description>
  33524. The texture callback is invoked as the texture coordinates of a
  33525. vertex are generated. These coordinates are stored in the
  33526. parameter <i>texCoord</i>. The number of texture coordinates can
  33527. be 1, 2, 3, or 4 depending on which type of texture map is
  33528. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  33529. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  33530. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  33531. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  33532. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  33533. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  33534. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  33535. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  33536. specified, this callback function will not be called. The
  33537. default texture callback function is <c>null</c>. The delegate
  33538. prototype for this callback is
  33539. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  33540. </description>
  33541. </item>
  33542. <item>
  33543. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  33544. <description>
  33545. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  33546. callback, except that it takes an additional pointer argument.
  33547. This pointer is a copy of the pointer that was specified at the
  33548. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33549. callback function is <c>null</c>. The delegate prototype for
  33550. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  33551. </description>
  33552. </item>
  33553. <item>
  33554. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  33555. <description>
  33556. The vertex callback indicates a vertex of the primitive. The
  33557. coordinates of the vertex are stored in the parameter
  33558. <i>vertexData</i>. All the generated vertices have dimension 3,
  33559. that is, homogeneous coordinates have been transformed into
  33560. affine coordinates. The default vertex callback function is
  33561. <c>null</c>. The delegate prototype for this callback is
  33562. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  33563. </description>
  33564. </item>
  33565. <item>
  33566. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  33567. <description>
  33568. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  33569. except that it takes an additional pointer argument. This
  33570. pointer is a copy of the pointer that was specified at the last
  33571. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33572. callback function is <c>null</c>. The delegate prototype for
  33573. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  33574. </description>
  33575. </item>
  33576. </list>
  33577. </para>
  33578. </param>
  33579. <param name="func">
  33580. The function that the callback invokes.
  33581. </param>
  33582. <remarks>
  33583. <para>
  33584. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  33585. object. If the specified callback is already defined, then it is replaced.
  33586. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  33587. the related data, if any, will be lost.
  33588. </para>
  33589. <para>
  33590. Except the error callback, these callbacks are used by NURBS tessellator
  33591. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  33592. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  33593. primitives resulting from the tessellation. Note that there are two
  33594. versions of each callback: one with a user data pointer and one without. If
  33595. both versions for a particular callback are specified then the callback with
  33596. the user data pointer will be used. Note that <i>userData</i> is a copy of
  33597. the pointer that was specified at the last call to
  33598. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  33599. </para>
  33600. <para>
  33601. The error callback function is effective no matter which value that
  33602. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  33603. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  33604. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  33605. </para>
  33606. <para>
  33607. <b>NOTES</b>
  33608. </para>
  33609. <para>
  33610. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  33611. greater.
  33612. </para>
  33613. <para>
  33614. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  33615. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  33616. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  33617. accepted values for <i>func</i> are available only if the GLU version is 1.3
  33618. or greater.
  33619. </para>
  33620. </remarks>
  33621. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  33622. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  33623. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  33624. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  33625. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  33626. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  33627. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  33628. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  33629. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  33630. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  33631. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  33632. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  33633. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  33634. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  33635. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  33636. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  33637. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  33638. </member>
  33639. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsNormalDataCallback)">
  33640. <summary>
  33641. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  33642. </summary>
  33643. <param name="nurb">
  33644. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  33645. </param>
  33646. <param name="which">
  33647. <para>
  33648. The callback being defined. The legal callbacks are as follows:
  33649. </para>
  33650. <para>
  33651. <list type="table">
  33652. <listheader>
  33653. <term>Value</term>
  33654. <description>Description</description>
  33655. </listheader>
  33656. <item>
  33657. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  33658. <description>
  33659. The begin callback indicates the start of a primitive. The
  33660. function takes a single argument of type <see cref="T:System.Int32"/>,
  33661. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  33662. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  33663. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  33664. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  33665. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  33666. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  33667. function is <c>null</c>. The delegate prototype for this
  33668. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  33669. </description>
  33670. </item>
  33671. <item>
  33672. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  33673. <description>
  33674. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  33675. that it takes an additional pointer argument. This pointer is a
  33676. copy of the pointer that was specified at the last call to
  33677. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33678. function is <c>null</c>. The delegate prototype for this
  33679. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  33680. </description>
  33681. </item>
  33682. <item>
  33683. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  33684. <description>
  33685. The color callback is invoked as the color of a vertex is
  33686. generated. The components of the color are stored in the
  33687. parameter <i>colorData</i>. This callback is effective only when
  33688. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  33689. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  33690. contains four components: R,G,B,A. The default color callback
  33691. function is <c>null</c>. The delegate prototype for this
  33692. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  33693. </description>
  33694. </item>
  33695. <item>
  33696. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  33697. <description>
  33698. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  33699. that it takes an additional pointer argument. This pointer is a
  33700. copy of the pointer that was specified at the last call to
  33701. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33702. function is <c>null</c>. The delegate prototype for this
  33703. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  33704. </description>
  33705. </item>
  33706. <item>
  33707. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  33708. <description>
  33709. The end callback is invoked at the end of a primitive. The
  33710. default end callback function is <c>null</c>. The delegate
  33711. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  33712. </description>
  33713. </item>
  33714. <item>
  33715. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  33716. <description>
  33717. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  33718. except that it takes an additional pointer argument. This
  33719. pointer is a copy of the pointer that was specified at the last
  33720. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33721. callback function is <c>null</c>. The delegate prototype for
  33722. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  33723. </description>
  33724. </item>
  33725. <item>
  33726. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  33727. <description>
  33728. The error function is called when an error is encountered. Its
  33729. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  33730. the specific error that occurred. There are 37 errors unique to
  33731. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  33732. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  33733. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  33734. The delegate prototype for this callback is
  33735. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  33736. </description>
  33737. </item>
  33738. <item>
  33739. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  33740. <description>
  33741. The normal callback is invoked as the vertex normal is generated.
  33742. The components of the normal are stored in the parameter
  33743. <i>normalData</i>. In the case of a NURBS curve, the callback
  33744. function is effective only when the user provides a normal map
  33745. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  33746. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  33747. provided, then the generated normal is computed from the normal
  33748. map. If a normal map is not provided then a surface normal is
  33749. computed in a manner similar to that described for evaluators
  33750. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  33751. normal callback function is <c>null</c>. The delegate
  33752. prototype for this callback is
  33753. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  33754. </description>
  33755. </item>
  33756. <item>
  33757. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  33758. <description>
  33759. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  33760. that it takes an additional pointer argument. This pointer is a
  33761. copy of the pointer that was specified at the last call to
  33762. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33763. function is <c>null</c>. The delegate prototype for this
  33764. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  33765. </description>
  33766. </item>
  33767. <item>
  33768. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  33769. <description>
  33770. The texture callback is invoked as the texture coordinates of a
  33771. vertex are generated. These coordinates are stored in the
  33772. parameter <i>texCoord</i>. The number of texture coordinates can
  33773. be 1, 2, 3, or 4 depending on which type of texture map is
  33774. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  33775. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  33776. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  33777. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  33778. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  33779. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  33780. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  33781. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  33782. specified, this callback function will not be called. The
  33783. default texture callback function is <c>null</c>. The delegate
  33784. prototype for this callback is
  33785. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  33786. </description>
  33787. </item>
  33788. <item>
  33789. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  33790. <description>
  33791. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  33792. callback, except that it takes an additional pointer argument.
  33793. This pointer is a copy of the pointer that was specified at the
  33794. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33795. callback function is <c>null</c>. The delegate prototype for
  33796. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  33797. </description>
  33798. </item>
  33799. <item>
  33800. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  33801. <description>
  33802. The vertex callback indicates a vertex of the primitive. The
  33803. coordinates of the vertex are stored in the parameter
  33804. <i>vertexData</i>. All the generated vertices have dimension 3,
  33805. that is, homogeneous coordinates have been transformed into
  33806. affine coordinates. The default vertex callback function is
  33807. <c>null</c>. The delegate prototype for this callback is
  33808. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  33809. </description>
  33810. </item>
  33811. <item>
  33812. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  33813. <description>
  33814. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  33815. except that it takes an additional pointer argument. This
  33816. pointer is a copy of the pointer that was specified at the last
  33817. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33818. callback function is <c>null</c>. The delegate prototype for
  33819. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  33820. </description>
  33821. </item>
  33822. </list>
  33823. </para>
  33824. </param>
  33825. <param name="func">
  33826. The function that the callback invokes.
  33827. </param>
  33828. <remarks>
  33829. <para>
  33830. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  33831. object. If the specified callback is already defined, then it is replaced.
  33832. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  33833. the related data, if any, will be lost.
  33834. </para>
  33835. <para>
  33836. Except the error callback, these callbacks are used by NURBS tessellator
  33837. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  33838. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  33839. primitives resulting from the tessellation. Note that there are two
  33840. versions of each callback: one with a user data pointer and one without. If
  33841. both versions for a particular callback are specified then the callback with
  33842. the user data pointer will be used. Note that <i>userData</i> is a copy of
  33843. the pointer that was specified at the last call to
  33844. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  33845. </para>
  33846. <para>
  33847. The error callback function is effective no matter which value that
  33848. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  33849. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  33850. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  33851. </para>
  33852. <para>
  33853. <b>NOTES</b>
  33854. </para>
  33855. <para>
  33856. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  33857. greater.
  33858. </para>
  33859. <para>
  33860. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  33861. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  33862. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  33863. accepted values for <i>func</i> are available only if the GLU version is 1.3
  33864. or greater.
  33865. </para>
  33866. </remarks>
  33867. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  33868. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  33869. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  33870. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  33871. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  33872. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  33873. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  33874. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  33875. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  33876. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  33877. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  33878. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  33879. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  33880. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  33881. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  33882. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  33883. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  33884. </member>
  33885. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsTexCoordCallback)">
  33886. <summary>
  33887. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  33888. </summary>
  33889. <param name="nurb">
  33890. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  33891. </param>
  33892. <param name="which">
  33893. <para>
  33894. The callback being defined. The legal callbacks are as follows:
  33895. </para>
  33896. <para>
  33897. <list type="table">
  33898. <listheader>
  33899. <term>Value</term>
  33900. <description>Description</description>
  33901. </listheader>
  33902. <item>
  33903. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  33904. <description>
  33905. The begin callback indicates the start of a primitive. The
  33906. function takes a single argument of type <see cref="T:System.Int32"/>,
  33907. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  33908. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  33909. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  33910. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  33911. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  33912. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  33913. function is <c>null</c>. The delegate prototype for this
  33914. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  33915. </description>
  33916. </item>
  33917. <item>
  33918. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  33919. <description>
  33920. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  33921. that it takes an additional pointer argument. This pointer is a
  33922. copy of the pointer that was specified at the last call to
  33923. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33924. function is <c>null</c>. The delegate prototype for this
  33925. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  33926. </description>
  33927. </item>
  33928. <item>
  33929. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  33930. <description>
  33931. The color callback is invoked as the color of a vertex is
  33932. generated. The components of the color are stored in the
  33933. parameter <i>colorData</i>. This callback is effective only when
  33934. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  33935. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  33936. contains four components: R,G,B,A. The default color callback
  33937. function is <c>null</c>. The delegate prototype for this
  33938. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  33939. </description>
  33940. </item>
  33941. <item>
  33942. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  33943. <description>
  33944. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  33945. that it takes an additional pointer argument. This pointer is a
  33946. copy of the pointer that was specified at the last call to
  33947. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  33948. function is <c>null</c>. The delegate prototype for this
  33949. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  33950. </description>
  33951. </item>
  33952. <item>
  33953. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  33954. <description>
  33955. The end callback is invoked at the end of a primitive. The
  33956. default end callback function is <c>null</c>. The delegate
  33957. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  33958. </description>
  33959. </item>
  33960. <item>
  33961. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  33962. <description>
  33963. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  33964. except that it takes an additional pointer argument. This
  33965. pointer is a copy of the pointer that was specified at the last
  33966. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  33967. callback function is <c>null</c>. The delegate prototype for
  33968. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  33969. </description>
  33970. </item>
  33971. <item>
  33972. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  33973. <description>
  33974. The error function is called when an error is encountered. Its
  33975. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  33976. the specific error that occurred. There are 37 errors unique to
  33977. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  33978. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  33979. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  33980. The delegate prototype for this callback is
  33981. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  33982. </description>
  33983. </item>
  33984. <item>
  33985. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  33986. <description>
  33987. The normal callback is invoked as the vertex normal is generated.
  33988. The components of the normal are stored in the parameter
  33989. <i>normalData</i>. In the case of a NURBS curve, the callback
  33990. function is effective only when the user provides a normal map
  33991. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  33992. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  33993. provided, then the generated normal is computed from the normal
  33994. map. If a normal map is not provided then a surface normal is
  33995. computed in a manner similar to that described for evaluators
  33996. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  33997. normal callback function is <c>null</c>. The delegate
  33998. prototype for this callback is
  33999. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  34000. </description>
  34001. </item>
  34002. <item>
  34003. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  34004. <description>
  34005. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  34006. that it takes an additional pointer argument. This pointer is a
  34007. copy of the pointer that was specified at the last call to
  34008. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34009. function is <c>null</c>. The delegate prototype for this
  34010. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  34011. </description>
  34012. </item>
  34013. <item>
  34014. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  34015. <description>
  34016. The texture callback is invoked as the texture coordinates of a
  34017. vertex are generated. These coordinates are stored in the
  34018. parameter <i>texCoord</i>. The number of texture coordinates can
  34019. be 1, 2, 3, or 4 depending on which type of texture map is
  34020. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  34021. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  34022. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  34023. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  34024. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  34025. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  34026. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  34027. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  34028. specified, this callback function will not be called. The
  34029. default texture callback function is <c>null</c>. The delegate
  34030. prototype for this callback is
  34031. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  34032. </description>
  34033. </item>
  34034. <item>
  34035. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  34036. <description>
  34037. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  34038. callback, except that it takes an additional pointer argument.
  34039. This pointer is a copy of the pointer that was specified at the
  34040. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34041. callback function is <c>null</c>. The delegate prototype for
  34042. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  34043. </description>
  34044. </item>
  34045. <item>
  34046. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  34047. <description>
  34048. The vertex callback indicates a vertex of the primitive. The
  34049. coordinates of the vertex are stored in the parameter
  34050. <i>vertexData</i>. All the generated vertices have dimension 3,
  34051. that is, homogeneous coordinates have been transformed into
  34052. affine coordinates. The default vertex callback function is
  34053. <c>null</c>. The delegate prototype for this callback is
  34054. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  34055. </description>
  34056. </item>
  34057. <item>
  34058. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  34059. <description>
  34060. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  34061. except that it takes an additional pointer argument. This
  34062. pointer is a copy of the pointer that was specified at the last
  34063. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34064. callback function is <c>null</c>. The delegate prototype for
  34065. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  34066. </description>
  34067. </item>
  34068. </list>
  34069. </para>
  34070. </param>
  34071. <param name="func">
  34072. The function that the callback invokes.
  34073. </param>
  34074. <remarks>
  34075. <para>
  34076. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  34077. object. If the specified callback is already defined, then it is replaced.
  34078. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  34079. the related data, if any, will be lost.
  34080. </para>
  34081. <para>
  34082. Except the error callback, these callbacks are used by NURBS tessellator
  34083. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  34084. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  34085. primitives resulting from the tessellation. Note that there are two
  34086. versions of each callback: one with a user data pointer and one without. If
  34087. both versions for a particular callback are specified then the callback with
  34088. the user data pointer will be used. Note that <i>userData</i> is a copy of
  34089. the pointer that was specified at the last call to
  34090. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  34091. </para>
  34092. <para>
  34093. The error callback function is effective no matter which value that
  34094. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  34095. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  34096. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  34097. </para>
  34098. <para>
  34099. <b>NOTES</b>
  34100. </para>
  34101. <para>
  34102. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  34103. greater.
  34104. </para>
  34105. <para>
  34106. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  34107. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  34108. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  34109. accepted values for <i>func</i> are available only if the GLU version is 1.3
  34110. or greater.
  34111. </para>
  34112. </remarks>
  34113. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  34114. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  34115. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  34116. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  34117. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  34118. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  34119. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  34120. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  34121. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  34122. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  34123. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  34124. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  34125. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  34126. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  34127. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34128. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  34129. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  34130. </member>
  34131. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsTexCoordDataCallback)">
  34132. <summary>
  34133. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  34134. </summary>
  34135. <param name="nurb">
  34136. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34137. </param>
  34138. <param name="which">
  34139. <para>
  34140. The callback being defined. The legal callbacks are as follows:
  34141. </para>
  34142. <para>
  34143. <list type="table">
  34144. <listheader>
  34145. <term>Value</term>
  34146. <description>Description</description>
  34147. </listheader>
  34148. <item>
  34149. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  34150. <description>
  34151. The begin callback indicates the start of a primitive. The
  34152. function takes a single argument of type <see cref="T:System.Int32"/>,
  34153. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  34154. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  34155. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  34156. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  34157. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  34158. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  34159. function is <c>null</c>. The delegate prototype for this
  34160. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  34161. </description>
  34162. </item>
  34163. <item>
  34164. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  34165. <description>
  34166. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  34167. that it takes an additional pointer argument. This pointer is a
  34168. copy of the pointer that was specified at the last call to
  34169. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34170. function is <c>null</c>. The delegate prototype for this
  34171. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  34172. </description>
  34173. </item>
  34174. <item>
  34175. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  34176. <description>
  34177. The color callback is invoked as the color of a vertex is
  34178. generated. The components of the color are stored in the
  34179. parameter <i>colorData</i>. This callback is effective only when
  34180. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  34181. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  34182. contains four components: R,G,B,A. The default color callback
  34183. function is <c>null</c>. The delegate prototype for this
  34184. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  34185. </description>
  34186. </item>
  34187. <item>
  34188. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  34189. <description>
  34190. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  34191. that it takes an additional pointer argument. This pointer is a
  34192. copy of the pointer that was specified at the last call to
  34193. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34194. function is <c>null</c>. The delegate prototype for this
  34195. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  34196. </description>
  34197. </item>
  34198. <item>
  34199. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  34200. <description>
  34201. The end callback is invoked at the end of a primitive. The
  34202. default end callback function is <c>null</c>. The delegate
  34203. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  34204. </description>
  34205. </item>
  34206. <item>
  34207. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  34208. <description>
  34209. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  34210. except that it takes an additional pointer argument. This
  34211. pointer is a copy of the pointer that was specified at the last
  34212. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34213. callback function is <c>null</c>. The delegate prototype for
  34214. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  34215. </description>
  34216. </item>
  34217. <item>
  34218. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  34219. <description>
  34220. The error function is called when an error is encountered. Its
  34221. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  34222. the specific error that occurred. There are 37 errors unique to
  34223. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  34224. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  34225. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  34226. The delegate prototype for this callback is
  34227. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  34228. </description>
  34229. </item>
  34230. <item>
  34231. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  34232. <description>
  34233. The normal callback is invoked as the vertex normal is generated.
  34234. The components of the normal are stored in the parameter
  34235. <i>normalData</i>. In the case of a NURBS curve, the callback
  34236. function is effective only when the user provides a normal map
  34237. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  34238. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  34239. provided, then the generated normal is computed from the normal
  34240. map. If a normal map is not provided then a surface normal is
  34241. computed in a manner similar to that described for evaluators
  34242. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  34243. normal callback function is <c>null</c>. The delegate
  34244. prototype for this callback is
  34245. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  34246. </description>
  34247. </item>
  34248. <item>
  34249. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  34250. <description>
  34251. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  34252. that it takes an additional pointer argument. This pointer is a
  34253. copy of the pointer that was specified at the last call to
  34254. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34255. function is <c>null</c>. The delegate prototype for this
  34256. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  34257. </description>
  34258. </item>
  34259. <item>
  34260. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  34261. <description>
  34262. The texture callback is invoked as the texture coordinates of a
  34263. vertex are generated. These coordinates are stored in the
  34264. parameter <i>texCoord</i>. The number of texture coordinates can
  34265. be 1, 2, 3, or 4 depending on which type of texture map is
  34266. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  34267. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  34268. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  34269. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  34270. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  34271. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  34272. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  34273. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  34274. specified, this callback function will not be called. The
  34275. default texture callback function is <c>null</c>. The delegate
  34276. prototype for this callback is
  34277. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  34278. </description>
  34279. </item>
  34280. <item>
  34281. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  34282. <description>
  34283. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  34284. callback, except that it takes an additional pointer argument.
  34285. This pointer is a copy of the pointer that was specified at the
  34286. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34287. callback function is <c>null</c>. The delegate prototype for
  34288. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  34289. </description>
  34290. </item>
  34291. <item>
  34292. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  34293. <description>
  34294. The vertex callback indicates a vertex of the primitive. The
  34295. coordinates of the vertex are stored in the parameter
  34296. <i>vertexData</i>. All the generated vertices have dimension 3,
  34297. that is, homogeneous coordinates have been transformed into
  34298. affine coordinates. The default vertex callback function is
  34299. <c>null</c>. The delegate prototype for this callback is
  34300. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  34301. </description>
  34302. </item>
  34303. <item>
  34304. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  34305. <description>
  34306. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  34307. except that it takes an additional pointer argument. This
  34308. pointer is a copy of the pointer that was specified at the last
  34309. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34310. callback function is <c>null</c>. The delegate prototype for
  34311. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  34312. </description>
  34313. </item>
  34314. </list>
  34315. </para>
  34316. </param>
  34317. <param name="func">
  34318. The function that the callback invokes.
  34319. </param>
  34320. <remarks>
  34321. <para>
  34322. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  34323. object. If the specified callback is already defined, then it is replaced.
  34324. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  34325. the related data, if any, will be lost.
  34326. </para>
  34327. <para>
  34328. Except the error callback, these callbacks are used by NURBS tessellator
  34329. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  34330. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  34331. primitives resulting from the tessellation. Note that there are two
  34332. versions of each callback: one with a user data pointer and one without. If
  34333. both versions for a particular callback are specified then the callback with
  34334. the user data pointer will be used. Note that <i>userData</i> is a copy of
  34335. the pointer that was specified at the last call to
  34336. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  34337. </para>
  34338. <para>
  34339. The error callback function is effective no matter which value that
  34340. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  34341. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  34342. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  34343. </para>
  34344. <para>
  34345. <b>NOTES</b>
  34346. </para>
  34347. <para>
  34348. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  34349. greater.
  34350. </para>
  34351. <para>
  34352. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  34353. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  34354. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  34355. accepted values for <i>func</i> are available only if the GLU version is 1.3
  34356. or greater.
  34357. </para>
  34358. </remarks>
  34359. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  34360. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  34361. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  34362. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  34363. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  34364. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  34365. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  34366. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  34367. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  34368. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  34369. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  34370. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  34371. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  34372. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  34373. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34374. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  34375. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  34376. </member>
  34377. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsVertexCallback)">
  34378. <summary>
  34379. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  34380. </summary>
  34381. <param name="nurb">
  34382. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34383. </param>
  34384. <param name="which">
  34385. <para>
  34386. The callback being defined. The legal callbacks are as follows:
  34387. </para>
  34388. <para>
  34389. <list type="table">
  34390. <listheader>
  34391. <term>Value</term>
  34392. <description>Description</description>
  34393. </listheader>
  34394. <item>
  34395. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  34396. <description>
  34397. The begin callback indicates the start of a primitive. The
  34398. function takes a single argument of type <see cref="T:System.Int32"/>,
  34399. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  34400. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  34401. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  34402. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  34403. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  34404. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  34405. function is <c>null</c>. The delegate prototype for this
  34406. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  34407. </description>
  34408. </item>
  34409. <item>
  34410. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  34411. <description>
  34412. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  34413. that it takes an additional pointer argument. This pointer is a
  34414. copy of the pointer that was specified at the last call to
  34415. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34416. function is <c>null</c>. The delegate prototype for this
  34417. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  34418. </description>
  34419. </item>
  34420. <item>
  34421. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  34422. <description>
  34423. The color callback is invoked as the color of a vertex is
  34424. generated. The components of the color are stored in the
  34425. parameter <i>colorData</i>. This callback is effective only when
  34426. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  34427. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  34428. contains four components: R,G,B,A. The default color callback
  34429. function is <c>null</c>. The delegate prototype for this
  34430. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  34431. </description>
  34432. </item>
  34433. <item>
  34434. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  34435. <description>
  34436. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  34437. that it takes an additional pointer argument. This pointer is a
  34438. copy of the pointer that was specified at the last call to
  34439. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34440. function is <c>null</c>. The delegate prototype for this
  34441. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  34442. </description>
  34443. </item>
  34444. <item>
  34445. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  34446. <description>
  34447. The end callback is invoked at the end of a primitive. The
  34448. default end callback function is <c>null</c>. The delegate
  34449. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  34450. </description>
  34451. </item>
  34452. <item>
  34453. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  34454. <description>
  34455. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  34456. except that it takes an additional pointer argument. This
  34457. pointer is a copy of the pointer that was specified at the last
  34458. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34459. callback function is <c>null</c>. The delegate prototype for
  34460. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  34461. </description>
  34462. </item>
  34463. <item>
  34464. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  34465. <description>
  34466. The error function is called when an error is encountered. Its
  34467. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  34468. the specific error that occurred. There are 37 errors unique to
  34469. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  34470. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  34471. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  34472. The delegate prototype for this callback is
  34473. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  34474. </description>
  34475. </item>
  34476. <item>
  34477. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  34478. <description>
  34479. The normal callback is invoked as the vertex normal is generated.
  34480. The components of the normal are stored in the parameter
  34481. <i>normalData</i>. In the case of a NURBS curve, the callback
  34482. function is effective only when the user provides a normal map
  34483. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  34484. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  34485. provided, then the generated normal is computed from the normal
  34486. map. If a normal map is not provided then a surface normal is
  34487. computed in a manner similar to that described for evaluators
  34488. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  34489. normal callback function is <c>null</c>. The delegate
  34490. prototype for this callback is
  34491. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  34492. </description>
  34493. </item>
  34494. <item>
  34495. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  34496. <description>
  34497. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  34498. that it takes an additional pointer argument. This pointer is a
  34499. copy of the pointer that was specified at the last call to
  34500. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34501. function is <c>null</c>. The delegate prototype for this
  34502. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  34503. </description>
  34504. </item>
  34505. <item>
  34506. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  34507. <description>
  34508. The texture callback is invoked as the texture coordinates of a
  34509. vertex are generated. These coordinates are stored in the
  34510. parameter <i>texCoord</i>. The number of texture coordinates can
  34511. be 1, 2, 3, or 4 depending on which type of texture map is
  34512. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  34513. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  34514. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  34515. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  34516. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  34517. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  34518. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  34519. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  34520. specified, this callback function will not be called. The
  34521. default texture callback function is <c>null</c>. The delegate
  34522. prototype for this callback is
  34523. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  34524. </description>
  34525. </item>
  34526. <item>
  34527. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  34528. <description>
  34529. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  34530. callback, except that it takes an additional pointer argument.
  34531. This pointer is a copy of the pointer that was specified at the
  34532. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34533. callback function is <c>null</c>. The delegate prototype for
  34534. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  34535. </description>
  34536. </item>
  34537. <item>
  34538. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  34539. <description>
  34540. The vertex callback indicates a vertex of the primitive. The
  34541. coordinates of the vertex are stored in the parameter
  34542. <i>vertexData</i>. All the generated vertices have dimension 3,
  34543. that is, homogeneous coordinates have been transformed into
  34544. affine coordinates. The default vertex callback function is
  34545. <c>null</c>. The delegate prototype for this callback is
  34546. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  34547. </description>
  34548. </item>
  34549. <item>
  34550. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  34551. <description>
  34552. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  34553. except that it takes an additional pointer argument. This
  34554. pointer is a copy of the pointer that was specified at the last
  34555. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34556. callback function is <c>null</c>. The delegate prototype for
  34557. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  34558. </description>
  34559. </item>
  34560. </list>
  34561. </para>
  34562. </param>
  34563. <param name="func">
  34564. The function that the callback invokes.
  34565. </param>
  34566. <remarks>
  34567. <para>
  34568. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  34569. object. If the specified callback is already defined, then it is replaced.
  34570. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  34571. the related data, if any, will be lost.
  34572. </para>
  34573. <para>
  34574. Except the error callback, these callbacks are used by NURBS tessellator
  34575. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  34576. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  34577. primitives resulting from the tessellation. Note that there are two
  34578. versions of each callback: one with a user data pointer and one without. If
  34579. both versions for a particular callback are specified then the callback with
  34580. the user data pointer will be used. Note that <i>userData</i> is a copy of
  34581. the pointer that was specified at the last call to
  34582. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  34583. </para>
  34584. <para>
  34585. The error callback function is effective no matter which value that
  34586. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  34587. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  34588. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  34589. </para>
  34590. <para>
  34591. <b>NOTES</b>
  34592. </para>
  34593. <para>
  34594. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  34595. greater.
  34596. </para>
  34597. <para>
  34598. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  34599. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  34600. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  34601. accepted values for <i>func</i> are available only if the GLU version is 1.3
  34602. or greater.
  34603. </para>
  34604. </remarks>
  34605. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  34606. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  34607. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  34608. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  34609. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  34610. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  34611. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  34612. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  34613. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  34614. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  34615. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  34616. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  34617. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  34618. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  34619. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34620. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  34621. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  34622. </member>
  34623. <member name="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsVertexDataCallback)">
  34624. <summary>
  34625. The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
  34626. </summary>
  34627. <param name="nurb">
  34628. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34629. </param>
  34630. <param name="which">
  34631. <para>
  34632. The callback being defined. The legal callbacks are as follows:
  34633. </para>
  34634. <para>
  34635. <list type="table">
  34636. <listheader>
  34637. <term>Value</term>
  34638. <description>Description</description>
  34639. </listheader>
  34640. <item>
  34641. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/></term>
  34642. <description>
  34643. The begin callback indicates the start of a primitive. The
  34644. function takes a single argument of type <see cref="T:System.Int32"/>,
  34645. which can be one of <see cref="F:Tao.OpenGl.Gl.GL_LINES"/>,
  34646. <see cref="F:Tao.OpenGl.Gl.GL_LINE_STRIP"/>,
  34647. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  34648. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>,
  34649. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>, or
  34650. <see cref="F:Tao.OpenGl.Gl.GL_QUAD_STRIP"/>. The default begin callback
  34651. function is <c>null</c>. The delegate prototype for this
  34652. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>.
  34653. </description>
  34654. </item>
  34655. <item>
  34656. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN_DATA"/></term>
  34657. <description>
  34658. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_BEGIN"/> callback except
  34659. that it takes an additional pointer argument. This pointer is a
  34660. copy of the pointer that was specified at the last call to
  34661. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34662. function is <c>null</c>. The delegate prototype for this
  34663. callback is <see cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>.
  34664. </description>
  34665. </item>
  34666. <item>
  34667. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/></term>
  34668. <description>
  34669. The color callback is invoked as the color of a vertex is
  34670. generated. The components of the color are stored in the
  34671. parameter <i>colorData</i>. This callback is effective only when
  34672. the user provides a color map (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>
  34673. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>). <i>colorData</i>
  34674. contains four components: R,G,B,A. The default color callback
  34675. function is <c>null</c>. The delegate prototype for this
  34676. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>.
  34677. </description>
  34678. </item>
  34679. <item>
  34680. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR_DATA"/></term>
  34681. <description>
  34682. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_COLOR"/> callback except
  34683. that it takes an additional pointer argument. This pointer is a
  34684. copy of the pointer that was specified at the last call to
  34685. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34686. function is <c>null</c>. The delegate prototype for this
  34687. callback is <see cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>.
  34688. </description>
  34689. </item>
  34690. <item>
  34691. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/></term>
  34692. <description>
  34693. The end callback is invoked at the end of a primitive. The
  34694. default end callback function is <c>null</c>. The delegate
  34695. prototype for this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>.
  34696. </description>
  34697. </item>
  34698. <item>
  34699. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END_DATA"/></term>
  34700. <description>
  34701. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_END"/> callback,
  34702. except that it takes an additional pointer argument. This
  34703. pointer is a copy of the pointer that was specified at the last
  34704. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34705. callback function is <c>null</c>. The delegate prototype for
  34706. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>.
  34707. </description>
  34708. </item>
  34709. <item>
  34710. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/></term>
  34711. <description>
  34712. The error function is called when an error is encountered. Its
  34713. single argument is of type <see cref="T:System.Int32"/>, and it indicates
  34714. the specific error that occurred. There are 37 errors unique to
  34715. NURBS named <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR1"/> through
  34716. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR37"/>. Character strings describing
  34717. these errors can be retrieved with <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>.
  34718. The delegate prototype for this callback is
  34719. <see cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>.
  34720. </description>
  34721. </item>
  34722. <item>
  34723. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/></term>
  34724. <description>
  34725. The normal callback is invoked as the vertex normal is generated.
  34726. The components of the normal are stored in the parameter
  34727. <i>normalData</i>. In the case of a NURBS curve, the callback
  34728. function is effective only when the user provides a normal map
  34729. (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_NORMAL"/>). In the case of a NURBS
  34730. surface, if a normal map (<see cref="F:Tao.OpenGl.Gl.GL_MAP2_NORMAL"/>) is
  34731. provided, then the generated normal is computed from the normal
  34732. map. If a normal map is not provided then a surface normal is
  34733. computed in a manner similar to that described for evaluators
  34734. when <see cref="F:Tao.OpenGl.Gl.GL_AUTO_NORMAL"/> is enabled. The default
  34735. normal callback function is <c>null</c>. The delegate
  34736. prototype for this callback is
  34737. <see cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>.
  34738. </description>
  34739. </item>
  34740. <item>
  34741. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL_DATA"/></term>
  34742. <description>
  34743. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_NORMAL"/> callback except
  34744. that it takes an additional pointer argument. This pointer is a
  34745. copy of the pointer that was specified at the last call to
  34746. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default callback
  34747. function is <c>null</c>. The delegate prototype for this
  34748. callback is <see cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>.
  34749. </description>
  34750. </item>
  34751. <item>
  34752. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/></term>
  34753. <description>
  34754. The texture callback is invoked as the texture coordinates of a
  34755. vertex are generated. These coordinates are stored in the
  34756. parameter <i>texCoord</i>. The number of texture coordinates can
  34757. be 1, 2, 3, or 4 depending on which type of texture map is
  34758. specified (<see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_1"/>,
  34759. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_2"/>,
  34760. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_3"/>,
  34761. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_TEXTURE_COORD_4"/>,
  34762. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_1"/>,
  34763. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_2"/>,
  34764. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_3"/>,
  34765. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_TEXTURE_COORD_4"/>). If no texture map is
  34766. specified, this callback function will not be called. The
  34767. default texture callback function is <c>null</c>. The delegate
  34768. prototype for this callback is
  34769. <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>.
  34770. </description>
  34771. </item>
  34772. <item>
  34773. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD_DATA"/></term>
  34774. <description>
  34775. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TEXTURE_COORD"/>
  34776. callback, except that it takes an additional pointer argument.
  34777. This pointer is a copy of the pointer that was specified at the
  34778. last call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34779. callback function is <c>null</c>. The delegate prototype for
  34780. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>.
  34781. </description>
  34782. </item>
  34783. <item>
  34784. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/></term>
  34785. <description>
  34786. The vertex callback indicates a vertex of the primitive. The
  34787. coordinates of the vertex are stored in the parameter
  34788. <i>vertexData</i>. All the generated vertices have dimension 3,
  34789. that is, homogeneous coordinates have been transformed into
  34790. affine coordinates. The default vertex callback function is
  34791. <c>null</c>. The delegate prototype for this callback is
  34792. <see cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>.
  34793. </description>
  34794. </item>
  34795. <item>
  34796. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX_DATA"/></term>
  34797. <description>
  34798. This is the same as the <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_VERTEX"/> callback,
  34799. except that it takes an additional pointer argument. This
  34800. pointer is a copy of the pointer that was specified at the last
  34801. call to <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>. The default
  34802. callback function is <c>null</c>. The delegate prototype for
  34803. this callback is <see cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>.
  34804. </description>
  34805. </item>
  34806. </list>
  34807. </para>
  34808. </param>
  34809. <param name="func">
  34810. The function that the callback invokes.
  34811. </param>
  34812. <remarks>
  34813. <para>
  34814. <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
  34815. object. If the specified callback is already defined, then it is replaced.
  34816. If <i>func</i> is <c>null</c>, then this callback will not get invoked and
  34817. the related data, if any, will be lost.
  34818. </para>
  34819. <para>
  34820. Except the error callback, these callbacks are used by NURBS tessellator
  34821. (when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  34822. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>) to return back the OpenGL polygon
  34823. primitives resulting from the tessellation. Note that there are two
  34824. versions of each callback: one with a user data pointer and one without. If
  34825. both versions for a particular callback are specified then the callback with
  34826. the user data pointer will be used. Note that <i>userData</i> is a copy of
  34827. the pointer that was specified at the last call to
  34828. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>.
  34829. </para>
  34830. <para>
  34831. The error callback function is effective no matter which value that
  34832. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to. All other callback functions are
  34833. effective only when <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to
  34834. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  34835. </para>
  34836. <para>
  34837. <b>NOTES</b>
  34838. </para>
  34839. <para>
  34840. <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
  34841. greater.
  34842. </para>
  34843. <para>
  34844. GLU version 1.2 supports only the <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> parameter for
  34845. <i>which</i>. The <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/> value is deprecated in GLU
  34846. version 1.3 in favor of <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_ERROR"/>. All other
  34847. accepted values for <i>func</i> are available only if the GLU version is 1.3
  34848. or greater.
  34849. </para>
  34850. </remarks>
  34851. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginCallback"/>
  34852. <seealso cref="T:Tao.OpenGl.Glu.NurbsBeginDataCallback"/>
  34853. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorCallback"/>
  34854. <seealso cref="T:Tao.OpenGl.Glu.NurbsColorDataCallback"/>
  34855. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndCallback"/>
  34856. <seealso cref="T:Tao.OpenGl.Glu.NurbsEndDataCallback"/>
  34857. <seealso cref="T:Tao.OpenGl.Glu.NurbsErrorCallback"/>
  34858. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalCallback"/>
  34859. <seealso cref="T:Tao.OpenGl.Glu.NurbsNormalDataCallback"/>
  34860. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordCallback"/>
  34861. <seealso cref="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback"/>
  34862. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexCallback"/>
  34863. <seealso cref="T:Tao.OpenGl.Glu.NurbsVertexDataCallback"/>
  34864. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  34865. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34866. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])"/>
  34867. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)"/>
  34868. </member>
  34869. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])">
  34870. <summary>
  34871. Sets a user data pointer.
  34872. </summary>
  34873. <param name="nurb">
  34874. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34875. </param>
  34876. <param name="userData">
  34877. A pointer to the user's data.
  34878. </param>
  34879. <remarks>
  34880. <para>
  34881. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  34882. data to NURBS tessellator. A copy of this pointer will be passed by the
  34883. tessellator in the NURBS callback functions (set by
  34884. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  34885. </para>
  34886. <para>
  34887. <b>NOTES</b>
  34888. </para>
  34889. <para>
  34890. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  34891. greater.
  34892. </para>
  34893. </remarks>
  34894. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34895. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  34896. </member>
  34897. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[0:,0:])">
  34898. <summary>
  34899. Sets a user data pointer.
  34900. </summary>
  34901. <param name="nurb">
  34902. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34903. </param>
  34904. <param name="userData">
  34905. A pointer to the user's data.
  34906. </param>
  34907. <remarks>
  34908. <para>
  34909. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  34910. data to NURBS tessellator. A copy of this pointer will be passed by the
  34911. tessellator in the NURBS callback functions (set by
  34912. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  34913. </para>
  34914. <para>
  34915. <b>NOTES</b>
  34916. </para>
  34917. <para>
  34918. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  34919. greater.
  34920. </para>
  34921. </remarks>
  34922. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34923. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  34924. </member>
  34925. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Byte[0:,0:,0:])">
  34926. <summary>
  34927. Sets a user data pointer.
  34928. </summary>
  34929. <param name="nurb">
  34930. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34931. </param>
  34932. <param name="userData">
  34933. A pointer to the user's data.
  34934. </param>
  34935. <remarks>
  34936. <para>
  34937. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  34938. data to NURBS tessellator. A copy of this pointer will be passed by the
  34939. tessellator in the NURBS callback functions (set by
  34940. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  34941. </para>
  34942. <para>
  34943. <b>NOTES</b>
  34944. </para>
  34945. <para>
  34946. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  34947. greater.
  34948. </para>
  34949. </remarks>
  34950. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34951. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  34952. </member>
  34953. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Double[])">
  34954. <summary>
  34955. Sets a user data pointer.
  34956. </summary>
  34957. <param name="nurb">
  34958. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34959. </param>
  34960. <param name="userData">
  34961. A pointer to the user's data.
  34962. </param>
  34963. <remarks>
  34964. <para>
  34965. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  34966. data to NURBS tessellator. A copy of this pointer will be passed by the
  34967. tessellator in the NURBS callback functions (set by
  34968. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  34969. </para>
  34970. <para>
  34971. <b>NOTES</b>
  34972. </para>
  34973. <para>
  34974. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  34975. greater.
  34976. </para>
  34977. </remarks>
  34978. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  34979. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  34980. </member>
  34981. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Double[0:,0:])">
  34982. <summary>
  34983. Sets a user data pointer.
  34984. </summary>
  34985. <param name="nurb">
  34986. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  34987. </param>
  34988. <param name="userData">
  34989. A pointer to the user's data.
  34990. </param>
  34991. <remarks>
  34992. <para>
  34993. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  34994. data to NURBS tessellator. A copy of this pointer will be passed by the
  34995. tessellator in the NURBS callback functions (set by
  34996. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  34997. </para>
  34998. <para>
  34999. <b>NOTES</b>
  35000. </para>
  35001. <para>
  35002. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35003. greater.
  35004. </para>
  35005. </remarks>
  35006. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35007. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35008. </member>
  35009. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Double[0:,0:,0:])">
  35010. <summary>
  35011. Sets a user data pointer.
  35012. </summary>
  35013. <param name="nurb">
  35014. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35015. </param>
  35016. <param name="userData">
  35017. A pointer to the user's data.
  35018. </param>
  35019. <remarks>
  35020. <para>
  35021. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35022. data to NURBS tessellator. A copy of this pointer will be passed by the
  35023. tessellator in the NURBS callback functions (set by
  35024. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35025. </para>
  35026. <para>
  35027. <b>NOTES</b>
  35028. </para>
  35029. <para>
  35030. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35031. greater.
  35032. </para>
  35033. </remarks>
  35034. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35035. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35036. </member>
  35037. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Int16[])">
  35038. <summary>
  35039. Sets a user data pointer.
  35040. </summary>
  35041. <param name="nurb">
  35042. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35043. </param>
  35044. <param name="userData">
  35045. A pointer to the user's data.
  35046. </param>
  35047. <remarks>
  35048. <para>
  35049. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35050. data to NURBS tessellator. A copy of this pointer will be passed by the
  35051. tessellator in the NURBS callback functions (set by
  35052. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35053. </para>
  35054. <para>
  35055. <b>NOTES</b>
  35056. </para>
  35057. <para>
  35058. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35059. greater.
  35060. </para>
  35061. </remarks>
  35062. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35063. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35064. </member>
  35065. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Int16[0:,0:])">
  35066. <summary>
  35067. Sets a user data pointer.
  35068. </summary>
  35069. <param name="nurb">
  35070. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35071. </param>
  35072. <param name="userData">
  35073. A pointer to the user's data.
  35074. </param>
  35075. <remarks>
  35076. <para>
  35077. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35078. data to NURBS tessellator. A copy of this pointer will be passed by the
  35079. tessellator in the NURBS callback functions (set by
  35080. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35081. </para>
  35082. <para>
  35083. <b>NOTES</b>
  35084. </para>
  35085. <para>
  35086. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35087. greater.
  35088. </para>
  35089. </remarks>
  35090. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35091. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35092. </member>
  35093. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Int16[0:,0:,0:])">
  35094. <summary>
  35095. Sets a user data pointer.
  35096. </summary>
  35097. <param name="nurb">
  35098. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35099. </param>
  35100. <param name="userData">
  35101. A pointer to the user's data.
  35102. </param>
  35103. <remarks>
  35104. <para>
  35105. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35106. data to NURBS tessellator. A copy of this pointer will be passed by the
  35107. tessellator in the NURBS callback functions (set by
  35108. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35109. </para>
  35110. <para>
  35111. <b>NOTES</b>
  35112. </para>
  35113. <para>
  35114. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35115. greater.
  35116. </para>
  35117. </remarks>
  35118. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35119. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35120. </member>
  35121. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Int32[])">
  35122. <summary>
  35123. Sets a user data pointer.
  35124. </summary>
  35125. <param name="nurb">
  35126. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35127. </param>
  35128. <param name="userData">
  35129. A pointer to the user's data.
  35130. </param>
  35131. <remarks>
  35132. <para>
  35133. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35134. data to NURBS tessellator. A copy of this pointer will be passed by the
  35135. tessellator in the NURBS callback functions (set by
  35136. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35137. </para>
  35138. <para>
  35139. <b>NOTES</b>
  35140. </para>
  35141. <para>
  35142. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35143. greater.
  35144. </para>
  35145. </remarks>
  35146. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35147. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35148. </member>
  35149. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Int32[0:,0:])">
  35150. <summary>
  35151. Sets a user data pointer.
  35152. </summary>
  35153. <param name="nurb">
  35154. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35155. </param>
  35156. <param name="userData">
  35157. A pointer to the user's data.
  35158. </param>
  35159. <remarks>
  35160. <para>
  35161. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35162. data to NURBS tessellator. A copy of this pointer will be passed by the
  35163. tessellator in the NURBS callback functions (set by
  35164. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35165. </para>
  35166. <para>
  35167. <b>NOTES</b>
  35168. </para>
  35169. <para>
  35170. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35171. greater.
  35172. </para>
  35173. </remarks>
  35174. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35175. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35176. </member>
  35177. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Int32[0:,0:,0:])">
  35178. <summary>
  35179. Sets a user data pointer.
  35180. </summary>
  35181. <param name="nurb">
  35182. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35183. </param>
  35184. <param name="userData">
  35185. A pointer to the user's data.
  35186. </param>
  35187. <remarks>
  35188. <para>
  35189. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35190. data to NURBS tessellator. A copy of this pointer will be passed by the
  35191. tessellator in the NURBS callback functions (set by
  35192. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35193. </para>
  35194. <para>
  35195. <b>NOTES</b>
  35196. </para>
  35197. <para>
  35198. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35199. greater.
  35200. </para>
  35201. </remarks>
  35202. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35203. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35204. </member>
  35205. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Single[])">
  35206. <summary>
  35207. Sets a user data pointer.
  35208. </summary>
  35209. <param name="nurb">
  35210. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35211. </param>
  35212. <param name="userData">
  35213. A pointer to the user's data.
  35214. </param>
  35215. <remarks>
  35216. <para>
  35217. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35218. data to NURBS tessellator. A copy of this pointer will be passed by the
  35219. tessellator in the NURBS callback functions (set by
  35220. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35221. </para>
  35222. <para>
  35223. <b>NOTES</b>
  35224. </para>
  35225. <para>
  35226. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35227. greater.
  35228. </para>
  35229. </remarks>
  35230. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35231. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35232. </member>
  35233. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Single[0:,0:])">
  35234. <summary>
  35235. Sets a user data pointer.
  35236. </summary>
  35237. <param name="nurb">
  35238. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35239. </param>
  35240. <param name="userData">
  35241. A pointer to the user's data.
  35242. </param>
  35243. <remarks>
  35244. <para>
  35245. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35246. data to NURBS tessellator. A copy of this pointer will be passed by the
  35247. tessellator in the NURBS callback functions (set by
  35248. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35249. </para>
  35250. <para>
  35251. <b>NOTES</b>
  35252. </para>
  35253. <para>
  35254. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35255. greater.
  35256. </para>
  35257. </remarks>
  35258. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35259. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35260. </member>
  35261. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Single[0:,0:,0:])">
  35262. <summary>
  35263. Sets a user data pointer.
  35264. </summary>
  35265. <param name="nurb">
  35266. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35267. </param>
  35268. <param name="userData">
  35269. A pointer to the user's data.
  35270. </param>
  35271. <remarks>
  35272. <para>
  35273. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35274. data to NURBS tessellator. A copy of this pointer will be passed by the
  35275. tessellator in the NURBS callback functions (set by
  35276. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35277. </para>
  35278. <para>
  35279. <b>NOTES</b>
  35280. </para>
  35281. <para>
  35282. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35283. greater.
  35284. </para>
  35285. </remarks>
  35286. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35287. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35288. </member>
  35289. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.UInt16[])">
  35290. <summary>
  35291. Sets a user data pointer.
  35292. </summary>
  35293. <param name="nurb">
  35294. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35295. </param>
  35296. <param name="userData">
  35297. A pointer to the user's data.
  35298. </param>
  35299. <remarks>
  35300. <para>
  35301. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35302. data to NURBS tessellator. A copy of this pointer will be passed by the
  35303. tessellator in the NURBS callback functions (set by
  35304. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35305. </para>
  35306. <para>
  35307. <b>NOTES</b>
  35308. </para>
  35309. <para>
  35310. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35311. greater.
  35312. </para>
  35313. </remarks>
  35314. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35315. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35316. </member>
  35317. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.UInt16[0:,0:])">
  35318. <summary>
  35319. Sets a user data pointer.
  35320. </summary>
  35321. <param name="nurb">
  35322. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35323. </param>
  35324. <param name="userData">
  35325. A pointer to the user's data.
  35326. </param>
  35327. <remarks>
  35328. <para>
  35329. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35330. data to NURBS tessellator. A copy of this pointer will be passed by the
  35331. tessellator in the NURBS callback functions (set by
  35332. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35333. </para>
  35334. <para>
  35335. <b>NOTES</b>
  35336. </para>
  35337. <para>
  35338. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35339. greater.
  35340. </para>
  35341. </remarks>
  35342. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35343. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35344. </member>
  35345. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.UInt16[0:,0:,0:])">
  35346. <summary>
  35347. Sets a user data pointer.
  35348. </summary>
  35349. <param name="nurb">
  35350. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35351. </param>
  35352. <param name="userData">
  35353. A pointer to the user's data.
  35354. </param>
  35355. <remarks>
  35356. <para>
  35357. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35358. data to NURBS tessellator. A copy of this pointer will be passed by the
  35359. tessellator in the NURBS callback functions (set by
  35360. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35361. </para>
  35362. <para>
  35363. <b>NOTES</b>
  35364. </para>
  35365. <para>
  35366. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35367. greater.
  35368. </para>
  35369. </remarks>
  35370. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35371. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35372. </member>
  35373. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.UInt32[])">
  35374. <summary>
  35375. Sets a user data pointer.
  35376. </summary>
  35377. <param name="nurb">
  35378. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35379. </param>
  35380. <param name="userData">
  35381. A pointer to the user's data.
  35382. </param>
  35383. <remarks>
  35384. <para>
  35385. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35386. data to NURBS tessellator. A copy of this pointer will be passed by the
  35387. tessellator in the NURBS callback functions (set by
  35388. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35389. </para>
  35390. <para>
  35391. <b>NOTES</b>
  35392. </para>
  35393. <para>
  35394. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35395. greater.
  35396. </para>
  35397. </remarks>
  35398. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35399. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35400. </member>
  35401. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.UInt32[0:,0:])">
  35402. <summary>
  35403. Sets a user data pointer.
  35404. </summary>
  35405. <param name="nurb">
  35406. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35407. </param>
  35408. <param name="userData">
  35409. A pointer to the user's data.
  35410. </param>
  35411. <remarks>
  35412. <para>
  35413. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35414. data to NURBS tessellator. A copy of this pointer will be passed by the
  35415. tessellator in the NURBS callback functions (set by
  35416. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35417. </para>
  35418. <para>
  35419. <b>NOTES</b>
  35420. </para>
  35421. <para>
  35422. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35423. greater.
  35424. </para>
  35425. </remarks>
  35426. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35427. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35428. </member>
  35429. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.UInt32[0:,0:,0:])">
  35430. <summary>
  35431. Sets a user data pointer.
  35432. </summary>
  35433. <param name="nurb">
  35434. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35435. </param>
  35436. <param name="userData">
  35437. A pointer to the user's data.
  35438. </param>
  35439. <remarks>
  35440. <para>
  35441. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35442. data to NURBS tessellator. A copy of this pointer will be passed by the
  35443. tessellator in the NURBS callback functions (set by
  35444. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35445. </para>
  35446. <para>
  35447. <b>NOTES</b>
  35448. </para>
  35449. <para>
  35450. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35451. greater.
  35452. </para>
  35453. </remarks>
  35454. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35455. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35456. </member>
  35457. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.IntPtr)">
  35458. <summary>
  35459. Sets a user data pointer.
  35460. </summary>
  35461. <param name="nurb">
  35462. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35463. </param>
  35464. <param name="userData">
  35465. A pointer to the user's data.
  35466. </param>
  35467. <remarks>
  35468. <para>
  35469. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35470. data to NURBS tessellator. A copy of this pointer will be passed by the
  35471. tessellator in the NURBS callback functions (set by
  35472. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35473. </para>
  35474. <para>
  35475. <b>NOTES</b>
  35476. </para>
  35477. <para>
  35478. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35479. greater.
  35480. </para>
  35481. </remarks>
  35482. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35483. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35484. </member>
  35485. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs,System.Void*)">
  35486. <summary>
  35487. Sets a user data pointer.
  35488. </summary>
  35489. <param name="nurb">
  35490. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35491. </param>
  35492. <param name="userData">
  35493. A pointer to the user's data.
  35494. </param>
  35495. <remarks>
  35496. <para>
  35497. <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
  35498. data to NURBS tessellator. A copy of this pointer will be passed by the
  35499. tessellator in the NURBS callback functions (set by
  35500. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35501. </para>
  35502. <para>
  35503. <b>NOTES</b>
  35504. </para>
  35505. <para>
  35506. <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
  35507. greater.
  35508. </para>
  35509. </remarks>
  35510. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  35511. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35512. </member>
  35513. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Byte[])">
  35514. <summary>
  35515. Sets a user data pointer.
  35516. </summary>
  35517. <param name="nurb">
  35518. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35519. </param>
  35520. <param name="userData">
  35521. A pointer to the user's data.
  35522. </param>
  35523. <remarks>
  35524. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35525. data to NURBS tessellator. A copy of this pointer will be passed by the
  35526. tessellator in the NURBS callback functions (set by
  35527. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35528. </remarks>
  35529. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35530. </member>
  35531. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Byte[0:,0:])">
  35532. <summary>
  35533. Sets a user data pointer.
  35534. </summary>
  35535. <param name="nurb">
  35536. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35537. </param>
  35538. <param name="userData">
  35539. A pointer to the user's data.
  35540. </param>
  35541. <remarks>
  35542. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35543. data to NURBS tessellator. A copy of this pointer will be passed by the
  35544. tessellator in the NURBS callback functions (set by
  35545. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35546. </remarks>
  35547. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35548. </member>
  35549. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Byte[0:,0:,0:])">
  35550. <summary>
  35551. Sets a user data pointer.
  35552. </summary>
  35553. <param name="nurb">
  35554. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35555. </param>
  35556. <param name="userData">
  35557. A pointer to the user's data.
  35558. </param>
  35559. <remarks>
  35560. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35561. data to NURBS tessellator. A copy of this pointer will be passed by the
  35562. tessellator in the NURBS callback functions (set by
  35563. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35564. </remarks>
  35565. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35566. </member>
  35567. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Double[])">
  35568. <summary>
  35569. Sets a user data pointer.
  35570. </summary>
  35571. <param name="nurb">
  35572. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35573. </param>
  35574. <param name="userData">
  35575. A pointer to the user's data.
  35576. </param>
  35577. <remarks>
  35578. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35579. data to NURBS tessellator. A copy of this pointer will be passed by the
  35580. tessellator in the NURBS callback functions (set by
  35581. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35582. </remarks>
  35583. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35584. </member>
  35585. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Double[0:,0:])">
  35586. <summary>
  35587. Sets a user data pointer.
  35588. </summary>
  35589. <param name="nurb">
  35590. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35591. </param>
  35592. <param name="userData">
  35593. A pointer to the user's data.
  35594. </param>
  35595. <remarks>
  35596. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35597. data to NURBS tessellator. A copy of this pointer will be passed by the
  35598. tessellator in the NURBS callback functions (set by
  35599. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35600. </remarks>
  35601. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35602. </member>
  35603. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Double[0:,0:,0:])">
  35604. <summary>
  35605. Sets a user data pointer.
  35606. </summary>
  35607. <param name="nurb">
  35608. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35609. </param>
  35610. <param name="userData">
  35611. A pointer to the user's data.
  35612. </param>
  35613. <remarks>
  35614. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35615. data to NURBS tessellator. A copy of this pointer will be passed by the
  35616. tessellator in the NURBS callback functions (set by
  35617. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35618. </remarks>
  35619. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35620. </member>
  35621. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Int16[])">
  35622. <summary>
  35623. Sets a user data pointer.
  35624. </summary>
  35625. <param name="nurb">
  35626. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35627. </param>
  35628. <param name="userData">
  35629. A pointer to the user's data.
  35630. </param>
  35631. <remarks>
  35632. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35633. data to NURBS tessellator. A copy of this pointer will be passed by the
  35634. tessellator in the NURBS callback functions (set by
  35635. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35636. </remarks>
  35637. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35638. </member>
  35639. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Int16[0:,0:])">
  35640. <summary>
  35641. Sets a user data pointer.
  35642. </summary>
  35643. <param name="nurb">
  35644. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35645. </param>
  35646. <param name="userData">
  35647. A pointer to the user's data.
  35648. </param>
  35649. <remarks>
  35650. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35651. data to NURBS tessellator. A copy of this pointer will be passed by the
  35652. tessellator in the NURBS callback functions (set by
  35653. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35654. </remarks>
  35655. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35656. </member>
  35657. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Int16[0:,0:,0:])">
  35658. <summary>
  35659. Sets a user data pointer.
  35660. </summary>
  35661. <param name="nurb">
  35662. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35663. </param>
  35664. <param name="userData">
  35665. A pointer to the user's data.
  35666. </param>
  35667. <remarks>
  35668. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35669. data to NURBS tessellator. A copy of this pointer will be passed by the
  35670. tessellator in the NURBS callback functions (set by
  35671. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35672. </remarks>
  35673. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35674. </member>
  35675. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Int32[])">
  35676. <summary>
  35677. Sets a user data pointer.
  35678. </summary>
  35679. <param name="nurb">
  35680. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35681. </param>
  35682. <param name="userData">
  35683. A pointer to the user's data.
  35684. </param>
  35685. <remarks>
  35686. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35687. data to NURBS tessellator. A copy of this pointer will be passed by the
  35688. tessellator in the NURBS callback functions (set by
  35689. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35690. </remarks>
  35691. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35692. </member>
  35693. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Int32[0:,0:])">
  35694. <summary>
  35695. Sets a user data pointer.
  35696. </summary>
  35697. <param name="nurb">
  35698. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35699. </param>
  35700. <param name="userData">
  35701. A pointer to the user's data.
  35702. </param>
  35703. <remarks>
  35704. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35705. data to NURBS tessellator. A copy of this pointer will be passed by the
  35706. tessellator in the NURBS callback functions (set by
  35707. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35708. </remarks>
  35709. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35710. </member>
  35711. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Int32[0:,0:,0:])">
  35712. <summary>
  35713. Sets a user data pointer.
  35714. </summary>
  35715. <param name="nurb">
  35716. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35717. </param>
  35718. <param name="userData">
  35719. A pointer to the user's data.
  35720. </param>
  35721. <remarks>
  35722. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35723. data to NURBS tessellator. A copy of this pointer will be passed by the
  35724. tessellator in the NURBS callback functions (set by
  35725. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35726. </remarks>
  35727. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35728. </member>
  35729. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Single[])">
  35730. <summary>
  35731. Sets a user data pointer.
  35732. </summary>
  35733. <param name="nurb">
  35734. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35735. </param>
  35736. <param name="userData">
  35737. A pointer to the user's data.
  35738. </param>
  35739. <remarks>
  35740. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35741. data to NURBS tessellator. A copy of this pointer will be passed by the
  35742. tessellator in the NURBS callback functions (set by
  35743. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35744. </remarks>
  35745. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35746. </member>
  35747. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Single[0:,0:])">
  35748. <summary>
  35749. Sets a user data pointer.
  35750. </summary>
  35751. <param name="nurb">
  35752. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35753. </param>
  35754. <param name="userData">
  35755. A pointer to the user's data.
  35756. </param>
  35757. <remarks>
  35758. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35759. data to NURBS tessellator. A copy of this pointer will be passed by the
  35760. tessellator in the NURBS callback functions (set by
  35761. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35762. </remarks>
  35763. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35764. </member>
  35765. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Single[0:,0:,0:])">
  35766. <summary>
  35767. Sets a user data pointer.
  35768. </summary>
  35769. <param name="nurb">
  35770. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35771. </param>
  35772. <param name="userData">
  35773. A pointer to the user's data.
  35774. </param>
  35775. <remarks>
  35776. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35777. data to NURBS tessellator. A copy of this pointer will be passed by the
  35778. tessellator in the NURBS callback functions (set by
  35779. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35780. </remarks>
  35781. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35782. </member>
  35783. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.UInt16[])">
  35784. <summary>
  35785. Sets a user data pointer.
  35786. </summary>
  35787. <param name="nurb">
  35788. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35789. </param>
  35790. <param name="userData">
  35791. A pointer to the user's data.
  35792. </param>
  35793. <remarks>
  35794. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35795. data to NURBS tessellator. A copy of this pointer will be passed by the
  35796. tessellator in the NURBS callback functions (set by
  35797. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35798. </remarks>
  35799. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35800. </member>
  35801. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.UInt16[0:,0:])">
  35802. <summary>
  35803. Sets a user data pointer.
  35804. </summary>
  35805. <param name="nurb">
  35806. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35807. </param>
  35808. <param name="userData">
  35809. A pointer to the user's data.
  35810. </param>
  35811. <remarks>
  35812. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35813. data to NURBS tessellator. A copy of this pointer will be passed by the
  35814. tessellator in the NURBS callback functions (set by
  35815. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35816. </remarks>
  35817. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35818. </member>
  35819. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.UInt16[0:,0:,0:])">
  35820. <summary>
  35821. Sets a user data pointer.
  35822. </summary>
  35823. <param name="nurb">
  35824. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35825. </param>
  35826. <param name="userData">
  35827. A pointer to the user's data.
  35828. </param>
  35829. <remarks>
  35830. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35831. data to NURBS tessellator. A copy of this pointer will be passed by the
  35832. tessellator in the NURBS callback functions (set by
  35833. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35834. </remarks>
  35835. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35836. </member>
  35837. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.UInt32[])">
  35838. <summary>
  35839. Sets a user data pointer.
  35840. </summary>
  35841. <param name="nurb">
  35842. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35843. </param>
  35844. <param name="userData">
  35845. A pointer to the user's data.
  35846. </param>
  35847. <remarks>
  35848. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35849. data to NURBS tessellator. A copy of this pointer will be passed by the
  35850. tessellator in the NURBS callback functions (set by
  35851. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35852. </remarks>
  35853. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35854. </member>
  35855. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.UInt32[0:,0:])">
  35856. <summary>
  35857. Sets a user data pointer.
  35858. </summary>
  35859. <param name="nurb">
  35860. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35861. </param>
  35862. <param name="userData">
  35863. A pointer to the user's data.
  35864. </param>
  35865. <remarks>
  35866. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35867. data to NURBS tessellator. A copy of this pointer will be passed by the
  35868. tessellator in the NURBS callback functions (set by
  35869. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35870. </remarks>
  35871. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35872. </member>
  35873. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.UInt32[0:,0:,0:])">
  35874. <summary>
  35875. Sets a user data pointer.
  35876. </summary>
  35877. <param name="nurb">
  35878. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35879. </param>
  35880. <param name="userData">
  35881. A pointer to the user's data.
  35882. </param>
  35883. <remarks>
  35884. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35885. data to NURBS tessellator. A copy of this pointer will be passed by the
  35886. tessellator in the NURBS callback functions (set by
  35887. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35888. </remarks>
  35889. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35890. </member>
  35891. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.IntPtr)">
  35892. <summary>
  35893. Sets a user data pointer.
  35894. </summary>
  35895. <param name="nurb">
  35896. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35897. </param>
  35898. <param name="userData">
  35899. A pointer to the user's data.
  35900. </param>
  35901. <remarks>
  35902. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35903. data to NURBS tessellator. A copy of this pointer will be passed by the
  35904. tessellator in the NURBS callback functions (set by
  35905. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35906. </remarks>
  35907. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35908. </member>
  35909. <member name="M:Tao.OpenGl.Glu.gluNurbsCallbackDataEXT(Tao.OpenGl.Glu.GLUnurbs,System.Void*)">
  35910. <summary>
  35911. Sets a user data pointer.
  35912. </summary>
  35913. <param name="nurb">
  35914. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35915. </param>
  35916. <param name="userData">
  35917. A pointer to the user's data.
  35918. </param>
  35919. <remarks>
  35920. <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
  35921. data to NURBS tessellator. A copy of this pointer will be passed by the
  35922. tessellator in the NURBS callback functions (set by
  35923. <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>).
  35924. </remarks>
  35925. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  35926. </member>
  35927. <member name="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)">
  35928. <summary>
  35929. Defines the shape of a NURBS curve.
  35930. </summary>
  35931. <param name="nurb">
  35932. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  35933. </param>
  35934. <param name="knotCount">
  35935. The number of knots in <i>knot</i>. The <i>knotCount</i> parameter equals
  35936. the number of control points plus the order.
  35937. </param>
  35938. <param name="knots">
  35939. An array of <i>knotCount</i> nondecreasing knot values.
  35940. </param>
  35941. <param name="stride">
  35942. The offset (as a number of single precision–floating-point values) between
  35943. successive curve control points.
  35944. </param>
  35945. <param name="control">
  35946. A pointer to an array of control points. The coordinates must agree with
  35947. <i>type</i>.
  35948. </param>
  35949. <param name="order">
  35950. The order of the NURBS curve. The <i>order</i> parameter equals degree + 1;
  35951. hence a cubic curve has an order of 4.
  35952. </param>
  35953. <param name="type">
  35954. The type of the curve. If this curve is defined within a
  35955. <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair, then the type
  35956. can be any of the valid one-dimensional evaluator types (such as
  35957. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>).
  35958. Between a <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/> pair, the
  35959. only valid types are <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/> and
  35960. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>.
  35961. </param>
  35962. <remarks>
  35963. <para>
  35964. Use <b>gluNurbsCurve</b> to describe a NURBS curve.
  35965. </para>
  35966. <para>
  35967. When <b>gluNurbsCurve</b> appears between a
  35968. <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair, it is used to
  35969. describe a curve to be rendered. Positional, texture, and color coordinates
  35970. are associated by presenting each as a separate <b>gluNurbsCurve</b> between
  35971. a <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair. No more than
  35972. one call to <b>gluNurbsCurve</b> for each of color, position, and texture
  35973. data can be made within a single
  35974. <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair. Exactly one
  35975. call must be made to describe the position of the curve (a type of
  35976. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_4"/>).
  35977. </para>
  35978. <para>
  35979. When <b>gluNurbsCurve</b> appears between a
  35980. <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/> pair, it is used to
  35981. describe a trimming curve on a NURBS surface. If <i>type</i> is
  35982. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/>, then it describes a curve in two-dimensional
  35983. (u and v) parameter space. If it is <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>, then it
  35984. describes a curve in two-dimensional homogeneous (u, v, and w) parameter
  35985. space. See the <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> reference page for more
  35986. discussion about trimming curves.
  35987. </para>
  35988. <para>
  35989. <b>NOTES</b>
  35990. </para>
  35991. <para>
  35992. To define trim curves which stitch well, use <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>.
  35993. </para>
  35994. <para>
  35995. <b>EXAMPLE</b>
  35996. </para>
  35997. <para>
  35998. The following commands render a textured NURBS curve with normals:
  35999. </para>
  36000. <para>
  36001. <code>
  36002. Glu.gluBeginCurve(nobj);
  36003. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
  36004. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
  36005. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
  36006. Glu.gluEndCurve(nobj);
  36007. </code>
  36008. </para>
  36009. </remarks>
  36010. <seealso cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  36011. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36012. <seealso cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  36013. <seealso cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36014. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  36015. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36016. </member>
  36017. <member name="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[0:,0:],System.Int32,System.Int32)">
  36018. <summary>
  36019. Defines the shape of a NURBS curve.
  36020. </summary>
  36021. <param name="nurb">
  36022. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  36023. </param>
  36024. <param name="knotCount">
  36025. The number of knots in <i>knot</i>. The <i>knotCount</i> parameter equals
  36026. the number of control points plus the order.
  36027. </param>
  36028. <param name="knots">
  36029. An array of <i>knotCount</i> nondecreasing knot values.
  36030. </param>
  36031. <param name="stride">
  36032. The offset (as a number of single precision–floating-point values) between
  36033. successive curve control points.
  36034. </param>
  36035. <param name="control">
  36036. A pointer to an array of control points. The coordinates must agree with
  36037. <i>type</i>.
  36038. </param>
  36039. <param name="order">
  36040. The order of the NURBS curve. The <i>order</i> parameter equals degree + 1;
  36041. hence a cubic curve has an order of 4.
  36042. </param>
  36043. <param name="type">
  36044. The type of the curve. If this curve is defined within a
  36045. <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair, then the type
  36046. can be any of the valid one-dimensional evaluator types (such as
  36047. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP1_COLOR_4"/>).
  36048. Between a <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/> pair, the
  36049. only valid types are <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/> and
  36050. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>.
  36051. </param>
  36052. <remarks>
  36053. <para>
  36054. Use <b>gluNurbsCurve</b> to describe a NURBS curve.
  36055. </para>
  36056. <para>
  36057. When <b>gluNurbsCurve</b> appears between a
  36058. <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair, it is used to
  36059. describe a curve to be rendered. Positional, texture, and color coordinates
  36060. are associated by presenting each as a separate <b>gluNurbsCurve</b> between
  36061. a <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair. No more than
  36062. one call to <b>gluNurbsCurve</b> for each of color, position, and texture
  36063. data can be made within a single
  36064. <see cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/> pair. Exactly one
  36065. call must be made to describe the position of the curve (a type of
  36066. <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP1_VERTEX_4"/>).
  36067. </para>
  36068. <para>
  36069. When <b>gluNurbsCurve</b> appears between a
  36070. <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/> pair, it is used to
  36071. describe a trimming curve on a NURBS surface. If <i>type</i> is
  36072. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/>, then it describes a curve in two-dimensional
  36073. (u and v) parameter space. If it is <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>, then it
  36074. describes a curve in two-dimensional homogeneous (u, v, and w) parameter
  36075. space. See the <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> reference page for more
  36076. discussion about trimming curves.
  36077. </para>
  36078. <para>
  36079. <b>NOTES</b>
  36080. </para>
  36081. <para>
  36082. To define trim curves which stitch well, use <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>.
  36083. </para>
  36084. <para>
  36085. <b>EXAMPLE</b>
  36086. </para>
  36087. <para>
  36088. The following commands render a textured NURBS curve with normals:
  36089. </para>
  36090. <para>
  36091. <code>
  36092. Glu.gluBeginCurve(nobj);
  36093. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
  36094. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
  36095. Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
  36096. Glu.gluEndCurve(nobj);
  36097. </code>
  36098. </para>
  36099. </remarks>
  36100. <seealso cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  36101. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36102. <seealso cref="M:Tao.OpenGl.Glu.gluEndCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  36103. <seealso cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36104. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  36105. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36106. </member>
  36107. <member name="M:Tao.OpenGl.Glu.gluNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single)">
  36108. <summary>
  36109. Sets a NURBS property.
  36110. </summary>
  36111. <param name="nurb">
  36112. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  36113. </param>
  36114. <param name="property">
  36115. The property to be set. Valid values are
  36116. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE"/>,
  36117. <see cref="F:Tao.OpenGl.Glu.GLU_CULLING"/>, <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/>,
  36118. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/>,
  36119. <see cref="F:Tao.OpenGl.Glu.GLU_U_STEP"/>, <see cref="F:Tao.OpenGl.Glu.GLU_V_STEP"/>, or
  36120. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/>.
  36121. </param>
  36122. <param name="val">
  36123. The value of the indicated property. It may be a numeric value, or one of
  36124. <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_POLYGON"/>, <see cref="F:Tao.OpenGl.Glu.GLU_FILL"/>,
  36125. <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_PATCH"/>, <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>,
  36126. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, <see cref="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH"/>,
  36127. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_ERROR"/>, <see cref="F:Tao.OpenGl.Glu.GLU_DOMAIN_DISTANCE"/>,
  36128. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_RENDERER"/>, or <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>.
  36129. </param>
  36130. <remarks>
  36131. <para>
  36132. <b>gluNurbsProperty</b> is used to control properties stored in a NURBS
  36133. object. These properties affect the way that a NURBS curve is rendered. The
  36134. accepted values for property are as follows:
  36135. </para>
  36136. <para>
  36137. <list type="table">
  36138. <listheader>
  36139. <term>Value</term>
  36140. <description>Description</description>
  36141. </listheader>
  36142. <item>
  36143. <term><see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/></term>
  36144. <description>
  36145. <i>val</i> should be set to be either
  36146. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_RENDERER"/> or
  36147. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>. When set to
  36148. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_RENDERER"/>, NURBS objects are tessellated
  36149. into OpenGL primitives and sent to the pipeline for rendering.
  36150. When set to <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>, NURBS objects
  36151. are tessellated into OpenGL primitives but the vertices, normals,
  36152. colors, and/or textures are retrieved back through a callback
  36153. interface (see <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>). This allows the
  36154. user to cache the tessellated results for further processing.
  36155. The initial value is <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_RENDERER"/>.
  36156. </description>
  36157. </item>
  36158. <item>
  36159. <term><see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/></term>
  36160. <description>
  36161. <para>
  36162. Specifies how a NURBS surface should be tessellated.
  36163. <i>val</i> may be one of <see cref="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH"/>,
  36164. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_ERROR"/>,
  36165. <see cref="F:Tao.OpenGl.Glu.GLU_DOMAIN_DISTANCE"/>,
  36166. <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PATH_LENGTH"/>, or
  36167. <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PARAMETRIC_ERROR"/>. When set to
  36168. <see cref="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH"/>, the surface is rendered so
  36169. that the maximum length, in pixels, of the edges of the
  36170. tessellation polygons is no greater than what is specified by
  36171. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/>.
  36172. </para>
  36173. <para>
  36174. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_ERROR"/> specifies that the
  36175. surface is rendered in such a way that the value specified by
  36176. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/> describes the maximum
  36177. distance, in pixels, between the tessellation polygons and
  36178. the surfaces they approximate.
  36179. </para>
  36180. <para>
  36181. <see cref="F:Tao.OpenGl.Glu.GLU_DOMAIN_DISTANCE"/> allows users to specify,
  36182. in parametric coordinates, how many sample points per unit
  36183. length are taken in u, v direction.
  36184. </para>
  36185. <para>
  36186. <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PATH_LENGTH"/> is similar to
  36187. <see cref="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH"/> except that it is view
  36188. independent, that is, the surface is rendered so that the
  36189. maximum length, in object space, of edges of the tessellation
  36190. polygons is no greater than what is specified by
  36191. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/>.
  36192. </para>
  36193. <para>
  36194. <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PARAMETRIC_ERROR"/> is similar to
  36195. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_ERROR"/> except that it is view
  36196. independent, that is, the surface is rendered in such a way
  36197. that the value specified by
  36198. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/> describes the maximum
  36199. distance, in object space, between the tessellation polygons
  36200. and the surfaces they approximate.
  36201. </para>
  36202. <para>
  36203. The initial value of <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/> is
  36204. <see cref="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH"/>.
  36205. </para>
  36206. </description>
  36207. </item>
  36208. <item>
  36209. <term><see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_TOLERANCE"/></term>
  36210. <description>
  36211. Specifies the maximum length, in pixels or in object space length
  36212. unit, to use when the sampling method is set to
  36213. <see cref="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH"/> or
  36214. <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PATH_LENGTH"/>. The NURBS code is
  36215. conservative when rendering a curve or surface, so the actual
  36216. length can be somewhat shorter. The initial value is 50.0
  36217. pixels.
  36218. </description>
  36219. </item>
  36220. <item>
  36221. <term><see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/></term>
  36222. <description>
  36223. Specifies the maximum distance, in pixels or in object space
  36224. length unit, to use when the sampling method is
  36225. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_ERROR"/> or
  36226. <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PARAMETRIC_ERROR"/>. The initial value is
  36227. 0.5.
  36228. </description>
  36229. </item>
  36230. <item>
  36231. <term><see cref="F:Tao.OpenGl.Glu.GLU_U_STEP"/></term>
  36232. <description>
  36233. Specifies the number of sample points per unit length taken along
  36234. the u axis in parametric coordinates. It is needed when
  36235. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/> is set to
  36236. <see cref="F:Tao.OpenGl.Glu.GLU_DOMAIN_DISTANCE"/>. The initial value is 100.
  36237. </description>
  36238. </item>
  36239. <item>
  36240. <term><see cref="F:Tao.OpenGl.Glu.GLU_V_STEP"/></term>
  36241. <description>
  36242. Specifies the number of sample points per unit length taken along
  36243. the v axis in parametric coordinate. It is needed when
  36244. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/> is set to
  36245. <see cref="F:Tao.OpenGl.Glu.GLU_DOMAIN_DISTANCE"/>. The initial value is 100.
  36246. </description>
  36247. </item>
  36248. <item>
  36249. <term><see cref="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE"/></term>
  36250. <description>
  36251. <para>
  36252. <i>val</i> can be set to <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_POLYGON"/>,
  36253. <see cref="F:Tao.OpenGl.Glu.GLU_FILL"/>, or <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_PATCH"/>.
  36254. When <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  36255. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_RENDERER"/>, <i>val</i> defines how a
  36256. NURBS surface should be rendered. When <i>val</i> is set to
  36257. <see cref="F:Tao.OpenGl.Glu.GLU_FILL"/>, the surface is rendered as a set of
  36258. polygons. When <i>val</i> is set to
  36259. <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_POLYGON"/>, the NURBS library draws
  36260. only the outlines of the polygons created by tessellation.
  36261. When <i>val</i> is set to
  36262. <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_PATCH"/> just the outlines of patches
  36263. and trim curves defined by the user are drawn.
  36264. </para>
  36265. <para>
  36266. When <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is set to be
  36267. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_TESSELLATOR"/>, <i>val</i> defines how
  36268. a NURBS surface should be tessellated. When
  36269. <see cref="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE"/> is set to
  36270. <see cref="F:Tao.OpenGl.Glu.GLU_FILL"/> or
  36271. <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_POLYGON"/>, the NURBS surface is
  36272. tessellated into OpenGL triangle primitives which can be
  36273. retrieved back through callback functions. If
  36274. <see cref="F:Tao.OpenGl.Glu.GLU_DISPLAY_MODE"/> is set to
  36275. <see cref="F:Tao.OpenGl.Glu.GLU_OUTLINE_PATCH"/>, only the outlines of the
  36276. patches and trim curves are generated as a sequence of
  36277. line strips which can be retrieved back through callback
  36278. functions.
  36279. </para>
  36280. <para>
  36281. The initial value is <see cref="F:Tao.OpenGl.Glu.GLU_FILL"/>.
  36282. </para>
  36283. </description>
  36284. </item>
  36285. <item>
  36286. <term><see cref="F:Tao.OpenGl.Glu.GLU_CULLING"/></term>
  36287. <description>
  36288. <i>val</i> is a boolean value that, when set to
  36289. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, indicates that a NURBS curve should be
  36290. discarded prior to tessellation if its control points lie outside
  36291. the current viewport. The initial value is
  36292. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>.
  36293. </description>
  36294. </item>
  36295. <item>
  36296. <term><see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/></term>
  36297. <description>
  36298. <para>
  36299. <i>val</i> is a boolean value. When set to
  36300. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, the NURBS code downloads the
  36301. projection matrix, the modelview matrix, and the viewport
  36302. from the GL server to compute sampling and culling matrices
  36303. for each NURBS curve that is rendered. Sampling and culling
  36304. matrices are required to determine the tessellation of a
  36305. NURBS surface into line segments or polygons and to cull a
  36306. NURBS surface if it lies outside the viewport.
  36307. </para>
  36308. <para>
  36309. If this mode is set to <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the
  36310. program needs to provide a projection matrix, a modelview
  36311. matrix, and a viewport for the NURBS renderer to use to
  36312. construct sampling and culling matrices. This can be done
  36313. with the <see cref="M:Tao.OpenGl.Glu.gluLoadSamplingMatrices(Tao.OpenGl.Glu.GLUnurbs,System.Single[],System.Single[],System.Int32[])"/> function.
  36314. This mode is initially set to <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>.
  36315. Changing it from <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> to
  36316. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> does not affect the sampling and
  36317. culling matrices until <see cref="M:Tao.OpenGl.Glu.gluLoadSamplingMatrices(Tao.OpenGl.Glu.GLUnurbs,System.Single[],System.Single[],System.Int32[])"/>
  36318. is called.
  36319. </para>
  36320. </description>
  36321. </item>
  36322. </list>
  36323. </para>
  36324. <para>
  36325. <b>NOTES</b>
  36326. </para>
  36327. <para>
  36328. If <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/> is true, sampling and culling may be
  36329. executed incorrectly if NURBS routines are compiled into a display list.
  36330. </para>
  36331. <para>
  36332. A <i>property</i> of <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_TOLERANCE"/>,
  36333. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/>, <see cref="F:Tao.OpenGl.Glu.GLU_U_STEP"/>, or
  36334. <see cref="F:Tao.OpenGl.Glu.GLU_V_STEP"/>, or a <i>val</i> of <see cref="F:Tao.OpenGl.Glu.GLU_PATH_LENGTH"/>,
  36335. <see cref="F:Tao.OpenGl.Glu.GLU_PARAMETRIC_ERROR"/>, <see cref="F:Tao.OpenGl.Glu.GLU_DOMAIN_DISTANCE"/> are
  36336. only available if the GLU version is 1.1 or greater. They are not valid
  36337. parameters in GLU 1.0.
  36338. </para>
  36339. <para>
  36340. <see cref="M:Tao.OpenGl.Glu.gluGetString(System.Int32)"/> can be used to determine the GLU version.
  36341. </para>
  36342. <para>
  36343. <see cref="F:Tao.OpenGl.Glu.GLU_NURBS_MODE"/> is only availble if the GLU version is 1.3 or
  36344. greater.
  36345. </para>
  36346. <para>
  36347. The <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PATH_LENGTH"/> and
  36348. <see cref="F:Tao.OpenGl.Glu.GLU_OBJECT_PARAMETRIC_ERROR"/> values for the
  36349. <see cref="F:Tao.OpenGl.Glu.GLU_SAMPLING_METHOD"/> property are only available if the GLU
  36350. version is 1.3 or greater.
  36351. </para>
  36352. </remarks>
  36353. <seealso cref="M:Tao.OpenGl.Glu.gluGetNurbsProperty(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[])"/>
  36354. <seealso cref="M:Tao.OpenGl.Glu.gluGetString(System.Int32)"/>
  36355. <seealso cref="M:Tao.OpenGl.Glu.gluLoadSamplingMatrices(Tao.OpenGl.Glu.GLUnurbs,System.Single[],System.Single[],System.Int32[])"/>
  36356. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  36357. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  36358. </member>
  36359. <member name="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[],System.Int32,System.Int32,System.Int32)">
  36360. <summary>
  36361. Defines the shape of a NURBS surface.
  36362. </summary>
  36363. <param name="nurb">
  36364. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  36365. </param>
  36366. <param name="sKnotCount">
  36367. The number of knots in the parametric u direction.
  36368. </param>
  36369. <param name="sKnots">
  36370. An array of <i>sKnotCount</i> nondecreasing knot values in the parametric
  36371. u direction
  36372. </param>
  36373. <param name="tKnotCount">
  36374. The number of knots in the parametric v direction.
  36375. </param>
  36376. <param name="tKnots">
  36377. An array of <i>tKnotCount</i> nondecreasing knot values in the parametric
  36378. v direction.
  36379. </param>
  36380. <param name="sStride">
  36381. The offset (as a number of single precision–floating-point values) between
  36382. successive control points in the parametric u direction in <i>control</i>.
  36383. </param>
  36384. <param name="tStride">
  36385. The offset (in single precision–floating-point values) between successive
  36386. control points in the parametric v direction in <i>control</i>.
  36387. </param>
  36388. <param name="control">
  36389. An array containing control points for the NURBS surface. The offsets
  36390. between successive control points in the parametric u and v directions are
  36391. given by <i>sStride</i> and <i>tStride</i>.
  36392. </param>
  36393. <param name="sOrder">
  36394. The order of the NURBS surface in the parametric u direction. The order is
  36395. one more than the degree, hence a surface that is cubic in u has a u order of
  36396. 4.
  36397. </param>
  36398. <param name="tOrder">
  36399. The order of the NURBS surface in the parametric v direction. The order is
  36400. one more than the degree, hence a surface that is cubic in v has a v order of
  36401. 4.
  36402. </param>
  36403. <param name="type">
  36404. The type of the surface. The <i>type</i> parameter can be any of the valid
  36405. two-dimensional evaluator types (such as <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/>
  36406. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>).
  36407. </param>
  36408. <remarks>
  36409. <para>
  36410. Use <b>gluNurbsSurface</b> within a NURBS (Non-Uniform Rational B-Spline)
  36411. surface definition to describe the shape of a NURBS surface (before any
  36412. trimming). To mark the beginning of a NURBS surface definition, use the
  36413. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/> command. To mark the end of a NURBS surface
  36414. definition, use the <see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> command. Call
  36415. <b>gluNurbsSurface</b> within a NURBS surface definition only.
  36416. </para>
  36417. <para>
  36418. Positional, texture, and color coordinates are associated with a surface by
  36419. presenting each as a separate <b>gluNurbsSurface</b> between a
  36420. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> pair. No more
  36421. than one call to <b>gluNurbsSurface</b> for each of color, position, and
  36422. texture data can be made within a single
  36423. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> pair. Exactly
  36424. one call must be made to describe the position of the surface (a type of
  36425. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_4"/>).
  36426. </para>
  36427. <para>
  36428. A NURBS surface can be trimmed by using the commands
  36429. <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/> and <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/> between calls to
  36430. <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> and <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>.
  36431. </para>
  36432. <para>
  36433. Note that a <b>gluNurbsSurface</b> with <i>sKnotCount</i> knots in the u
  36434. direction and <i>tKnotCount</i> knots in the v direction with orders
  36435. <i>sOrder</i> and <i>tOrder</i> must have (<i>sKnotCount</i> - <i>sOrder</i>)
  36436. multiplied by (<i>tKnotCount</i> - <i>tOrder</i>) control points.
  36437. </para>
  36438. <para>
  36439. <b>EXAMPLE</b>
  36440. </para>
  36441. <para>
  36442. <code>
  36443. Glu.gluBeginSurface(nobj);
  36444. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_TEXTURE_COORD_2);
  36445. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_NORMAL);
  36446. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_VERTEX_4);
  36447. Glu.gluEndSurface(nobj);
  36448. </code>
  36449. </para>
  36450. </remarks>
  36451. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  36452. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36453. <seealso cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  36454. <seealso cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36455. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  36456. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36457. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36458. </member>
  36459. <member name="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[0:,0:],System.Int32,System.Int32,System.Int32)">
  36460. <summary>
  36461. Defines the shape of a NURBS surface.
  36462. </summary>
  36463. <param name="nurb">
  36464. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  36465. </param>
  36466. <param name="sKnotCount">
  36467. The number of knots in the parametric u direction.
  36468. </param>
  36469. <param name="sKnots">
  36470. An array of <i>sKnotCount</i> nondecreasing knot values in the parametric
  36471. u direction
  36472. </param>
  36473. <param name="tKnotCount">
  36474. The number of knots in the parametric v direction.
  36475. </param>
  36476. <param name="tKnots">
  36477. An array of <i>tKnotCount</i> nondecreasing knot values in the parametric
  36478. v direction.
  36479. </param>
  36480. <param name="sStride">
  36481. The offset (as a number of single precision–floating-point values) between
  36482. successive control points in the parametric u direction in <i>control</i>.
  36483. </param>
  36484. <param name="tStride">
  36485. The offset (in single precision–floating-point values) between successive
  36486. control points in the parametric v direction in <i>control</i>.
  36487. </param>
  36488. <param name="control">
  36489. An array containing control points for the NURBS surface. The offsets
  36490. between successive control points in the parametric u and v directions are
  36491. given by <i>sStride</i> and <i>tStride</i>.
  36492. </param>
  36493. <param name="sOrder">
  36494. The order of the NURBS surface in the parametric u direction. The order is
  36495. one more than the degree, hence a surface that is cubic in u has a u order of
  36496. 4.
  36497. </param>
  36498. <param name="tOrder">
  36499. The order of the NURBS surface in the parametric v direction. The order is
  36500. one more than the degree, hence a surface that is cubic in v has a v order of
  36501. 4.
  36502. </param>
  36503. <param name="type">
  36504. The type of the surface. The <i>type</i> parameter can be any of the valid
  36505. two-dimensional evaluator types (such as <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/>
  36506. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>).
  36507. </param>
  36508. <remarks>
  36509. <para>
  36510. Use <b>gluNurbsSurface</b> within a NURBS (Non-Uniform Rational B-Spline)
  36511. surface definition to describe the shape of a NURBS surface (before any
  36512. trimming). To mark the beginning of a NURBS surface definition, use the
  36513. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/> command. To mark the end of a NURBS surface
  36514. definition, use the <see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> command. Call
  36515. <b>gluNurbsSurface</b> within a NURBS surface definition only.
  36516. </para>
  36517. <para>
  36518. Positional, texture, and color coordinates are associated with a surface by
  36519. presenting each as a separate <b>gluNurbsSurface</b> between a
  36520. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> pair. No more
  36521. than one call to <b>gluNurbsSurface</b> for each of color, position, and
  36522. texture data can be made within a single
  36523. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> pair. Exactly
  36524. one call must be made to describe the position of the surface (a type of
  36525. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_4"/>).
  36526. </para>
  36527. <para>
  36528. A NURBS surface can be trimmed by using the commands
  36529. <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/> and <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/> between calls to
  36530. <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> and <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>.
  36531. </para>
  36532. <para>
  36533. Note that a <b>gluNurbsSurface</b> with <i>sKnotCount</i> knots in the u
  36534. direction and <i>tKnotCount</i> knots in the v direction with orders
  36535. <i>sOrder</i> and <i>tOrder</i> must have (<i>sKnotCount</i> - <i>sOrder</i>)
  36536. multiplied by (<i>tKnotCount</i> - <i>tOrder</i>) control points.
  36537. </para>
  36538. <para>
  36539. <b>EXAMPLE</b>
  36540. </para>
  36541. <para>
  36542. <code>
  36543. Glu.gluBeginSurface(nobj);
  36544. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_TEXTURE_COORD_2);
  36545. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_NORMAL);
  36546. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_VERTEX_4);
  36547. Glu.gluEndSurface(nobj);
  36548. </code>
  36549. </para>
  36550. </remarks>
  36551. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  36552. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36553. <seealso cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  36554. <seealso cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36555. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  36556. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36557. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36558. </member>
  36559. <member name="M:Tao.OpenGl.Glu.gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32,System.Single[0:,0:,0:],System.Int32,System.Int32,System.Int32)">
  36560. <summary>
  36561. Defines the shape of a NURBS surface.
  36562. </summary>
  36563. <param name="nurb">
  36564. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  36565. </param>
  36566. <param name="sKnotCount">
  36567. The number of knots in the parametric u direction.
  36568. </param>
  36569. <param name="sKnots">
  36570. An array of <i>sKnotCount</i> nondecreasing knot values in the parametric
  36571. u direction
  36572. </param>
  36573. <param name="tKnotCount">
  36574. The number of knots in the parametric v direction.
  36575. </param>
  36576. <param name="tKnots">
  36577. An array of <i>tKnotCount</i> nondecreasing knot values in the parametric
  36578. v direction.
  36579. </param>
  36580. <param name="sStride">
  36581. The offset (as a number of single precision–floating-point values) between
  36582. successive control points in the parametric u direction in <i>control</i>.
  36583. </param>
  36584. <param name="tStride">
  36585. The offset (in single precision–floating-point values) between successive
  36586. control points in the parametric v direction in <i>control</i>.
  36587. </param>
  36588. <param name="control">
  36589. An array containing control points for the NURBS surface. The offsets
  36590. between successive control points in the parametric u and v directions are
  36591. given by <i>sStride</i> and <i>tStride</i>.
  36592. </param>
  36593. <param name="sOrder">
  36594. The order of the NURBS surface in the parametric u direction. The order is
  36595. one more than the degree, hence a surface that is cubic in u has a u order of
  36596. 4.
  36597. </param>
  36598. <param name="tOrder">
  36599. The order of the NURBS surface in the parametric v direction. The order is
  36600. one more than the degree, hence a surface that is cubic in v has a v order of
  36601. 4.
  36602. </param>
  36603. <param name="type">
  36604. The type of the surface. The <i>type</i> parameter can be any of the valid
  36605. two-dimensional evaluator types (such as <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/>
  36606. or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_COLOR_4"/>).
  36607. </param>
  36608. <remarks>
  36609. <para>
  36610. Use <b>gluNurbsSurface</b> within a NURBS (Non-Uniform Rational B-Spline)
  36611. surface definition to describe the shape of a NURBS surface (before any
  36612. trimming). To mark the beginning of a NURBS surface definition, use the
  36613. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/> command. To mark the end of a NURBS surface
  36614. definition, use the <see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> command. Call
  36615. <b>gluNurbsSurface</b> within a NURBS surface definition only.
  36616. </para>
  36617. <para>
  36618. Positional, texture, and color coordinates are associated with a surface by
  36619. presenting each as a separate <b>gluNurbsSurface</b> between a
  36620. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> pair. No more
  36621. than one call to <b>gluNurbsSurface</b> for each of color, position, and
  36622. texture data can be made within a single
  36623. <see cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>/<see cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/> pair. Exactly
  36624. one call must be made to describe the position of the surface (a type of
  36625. <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_3"/> or <see cref="F:Tao.OpenGl.Gl.GL_MAP2_VERTEX_4"/>).
  36626. </para>
  36627. <para>
  36628. A NURBS surface can be trimmed by using the commands
  36629. <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/> and <see cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/> between calls to
  36630. <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> and <see cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>.
  36631. </para>
  36632. <para>
  36633. Note that a <b>gluNurbsSurface</b> with <i>sKnotCount</i> knots in the u
  36634. direction and <i>tKnotCount</i> knots in the v direction with orders
  36635. <i>sOrder</i> and <i>tOrder</i> must have (<i>sKnotCount</i> - <i>sOrder</i>)
  36636. multiplied by (<i>tKnotCount</i> - <i>tOrder</i>) control points.
  36637. </para>
  36638. <para>
  36639. <b>EXAMPLE</b>
  36640. </para>
  36641. <para>
  36642. <code>
  36643. Glu.gluBeginSurface(nobj);
  36644. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_TEXTURE_COORD_2);
  36645. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_NORMAL);
  36646. Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_VERTEX_4);
  36647. Glu.gluEndSurface(nobj);
  36648. </code>
  36649. </para>
  36650. </remarks>
  36651. <seealso cref="M:Tao.OpenGl.Glu.gluBeginSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  36652. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36653. <seealso cref="M:Tao.OpenGl.Glu.gluEndSurface(Tao.OpenGl.Glu.GLUnurbs)"/>
  36654. <seealso cref="M:Tao.OpenGl.Glu.gluEndTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  36655. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  36656. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36657. <seealso cref="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)"/>
  36658. </member>
  36659. <member name="M:Tao.OpenGl.Glu.gluOrtho2D(System.Double,System.Double,System.Double,System.Double)">
  36660. <summary>
  36661. Defines a 2D orthographic projection matrix.
  36662. </summary>
  36663. <param name="left">
  36664. The coordinates for the leftvertical clipping planes.
  36665. </param>
  36666. <param name="right">
  36667. The coordinates for the right vertical clipping planes.
  36668. </param>
  36669. <param name="bottom">
  36670. The coordinates for the bottom horizontal clipping planes.
  36671. </param>
  36672. <param name="top">
  36673. The coordinates for the top horizontal clipping planes.
  36674. </param>
  36675. <remarks>
  36676. The <b>gluOrtho2D</b> function sets up a two-dimensional orthographic viewing
  36677. region. This is equivalent to calling <see cref="M:Tao.OpenGl.Gl.glOrtho(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)"/> with
  36678. <i>near</i> = –1 and <i>far</i> = 1.
  36679. </remarks>
  36680. <seealso cref="M:Tao.OpenGl.Gl.glOrtho(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)"/>
  36681. <seealso cref="M:Tao.OpenGl.Glu.gluPerspective(System.Double,System.Double,System.Double,System.Double)"/>
  36682. </member>
  36683. <member name="M:Tao.OpenGl.Glu.gluPartialDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32,System.Double,System.Double)">
  36684. <summary>
  36685. Draws an arc of a disk.
  36686. </summary>
  36687. <param name="quad">
  36688. A quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  36689. </param>
  36690. <param name="innerRadius">
  36691. The inner radius of the partial disk (can be zero).
  36692. </param>
  36693. <param name="outerRadius">
  36694. The outer radius of the partial disk.
  36695. </param>
  36696. <param name="slices">
  36697. The number of subdivisions around the z-axis.
  36698. </param>
  36699. <param name="loops">
  36700. The number of concentric rings about the origin into which the partial disk
  36701. is subdivided.
  36702. </param>
  36703. <param name="startAngle">
  36704. The starting angle, in degrees, of the disk portion.
  36705. </param>
  36706. <param name="sweepAngle">
  36707. The sweep angle, in degrees, of the disk portion.
  36708. </param>
  36709. <remarks>
  36710. <para>
  36711. <b>gluPartialDisk</b> renders a partial disk on the z = 0 plane. A partial
  36712. disk is similar to a full disk, except that only the subset of the disk from
  36713. <i>startAngle</i> through <i>startAngle</i> + <i>sweepAngle</i> is included
  36714. (where 0 degrees is along the +y axis, 90 degrees along the +x axis, 180
  36715. degrees along the -y axis, and 270 degrees along the -x axis).
  36716. </para>
  36717. <para>
  36718. The partial disk has a radius of <i>outerRadius</i>, and contains a
  36719. concentric circular hole with a radius of <i>innerRadius</i>. If
  36720. <i>innerRadius</i> is 0, then no hole is generated. The partial disk is
  36721. subdivided around the z axis into slices (like pizza slices), and also about
  36722. the z axis into rings (as specified by <i>slices</i> and <i>loops</i>,
  36723. respectively).
  36724. </para>
  36725. <para>
  36726. With respect to orientation, the +z side of the partial disk is considered
  36727. to be outside (see <see cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>). This means that if
  36728. the orientation is set to <see cref="F:Tao.OpenGl.Glu.GLU_OUTSIDE"/>, then any normals
  36729. generated point along the +z axis. Otherwise, they point along the -z axis.
  36730. </para>
  36731. <para>
  36732. If texturing is turned on (with <see cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>), texture
  36733. coordinates are generated linearly such that where r = <i>outerRadius</i>,
  36734. the value at (r, 0, 0) is (1.0, 0.5), at (0, r, 0) it is (0.5, 1.0), at
  36735. (-r, 0, 0) it is (0.0, 0.5), and at (0, -r, 0) it is (0.5, 0.0).
  36736. </para>
  36737. </remarks>
  36738. <seealso cref="M:Tao.OpenGl.Glu.gluCylinder(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Double,System.Int32,System.Int32)"/>
  36739. <seealso cref="M:Tao.OpenGl.Glu.gluDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32)"/>
  36740. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  36741. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  36742. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  36743. <seealso cref="M:Tao.OpenGl.Glu.gluSphere(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Int32,System.Int32)"/>
  36744. </member>
  36745. <member name="M:Tao.OpenGl.Glu.gluPerspective(System.Double,System.Double,System.Double,System.Double)">
  36746. <summary>
  36747. Sets up a perspective projection matrix.
  36748. </summary>
  36749. <param name="fovY">
  36750. The field of view angle, in degrees, in the y-direction.
  36751. </param>
  36752. <param name="aspectRatio">
  36753. The aspect ratio that determines the field of view in the x-direction. The
  36754. aspect ratio is the ratio of x (width) to y (height).
  36755. </param>
  36756. <param name="zNear">
  36757. The distance from the viewer to the near clipping plane (always positive).
  36758. </param>
  36759. <param name="zFar">
  36760. The distance from the viewer to the far clipping plane (always positive).
  36761. </param>
  36762. <remarks>
  36763. <para>
  36764. The <b>gluPerspective</b> subroutine specifies a viewing frustum into the
  36765. world coordinate system. Generally, the aspect ratio used with this
  36766. subroutine should match that of its associated viewport. For example, an
  36767. aspect ratio value of aspect = 2.0 means the viewer's angle of view is twice
  36768. as wide in x as it is in y. If the viewport is twice as wide as it is tall,
  36769. it displays the image without distortion.
  36770. </para>
  36771. <para>
  36772. The matrix generated by <b>gluPerspective</b> is multipled by the current
  36773. matrix, just as if Gl.glMultMatrix* were called with the generated matrix.
  36774. To load the perspective matrix onto the current matrix stack instead,
  36775. precede the call to <b>gluPerspective</b> with a call to
  36776. <see cref="M:Tao.OpenGl.Gl.glLoadIdentity"/>.
  36777. </para>
  36778. <para>
  36779. Given f defined as follows:
  36780. </para>
  36781. <para>
  36782. <c>f = cotangent(fovY / 2)</c>
  36783. </para>
  36784. <para>
  36785. The generated matrix is:
  36786. </para>
  36787. <para>
  36788. <code>
  36789. ( f )
  36790. | ------ 0 0 0 |
  36791. | aspectRatio |
  36792. | |
  36793. | |
  36794. | 0 f 0 0 |
  36795. | |
  36796. | |
  36797. | zFar+zNear 2*zFar*zNear |
  36798. | 0 0 ---------- ------------ |
  36799. | zNear-zFar zNear-zFar |
  36800. | |
  36801. | |
  36802. | 0 0 -1 0 |
  36803. ( )
  36804. </code>
  36805. </para>
  36806. <para>
  36807. <b>NOTES</b>
  36808. </para>
  36809. <para>
  36810. Depth buffer precision is affected by the values specified for <i>zNear</i>
  36811. and <i>zFar</i>. The greater the ratio of <i>zFar</i> to <i>zNear</i> is,
  36812. the less effective the depth buffer will be at distinguishing between
  36813. surfaces that are near each other. If <c>r = zFar / zNear</c> roughly
  36814. <c>log2(r)</c> bits of depth buffer precision are lost. Because r approaches
  36815. infinity as <i>zNear</i> approaches 0, <i>zNear</i> must never be set to 0.
  36816. </para>
  36817. </remarks>
  36818. <seealso cref="M:Tao.OpenGl.Gl.glFrustum(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)"/>
  36819. <seealso cref="M:Tao.OpenGl.Gl.glLoadIdentity"/>
  36820. <seealso cref="M:Tao.OpenGl.Glu.gluOrtho2D(System.Double,System.Double,System.Double,System.Double)"/>
  36821. </member>
  36822. <member name="M:Tao.OpenGl.Glu.gluPickMatrix(System.Double,System.Double,System.Double,System.Double,System.Int32[])">
  36823. <summary>
  36824. Defines a picking region.
  36825. </summary>
  36826. <param name="x">
  36827. The center of a picking region in x axis window coordinates.
  36828. </param>
  36829. <param name="y">
  36830. The center of a picking region in y axis window coordinates.
  36831. </param>
  36832. <param name="width">
  36833. The width of the picking region in window coordinates.
  36834. </param>
  36835. <param name="height">
  36836. The height of the picking region in window coordinates.
  36837. </param>
  36838. <param name="viewport">
  36839. The current viewport (as from a <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> call).
  36840. </param>
  36841. <remarks>
  36842. <para>
  36843. <b>gluPickMatrix</b> creates a projection matrix that can be used to restrict
  36844. drawing to a small region of the viewport. This is typically useful to
  36845. determine what objects are being drawn near the cursor. Use
  36846. <b>gluPickMatrix</b> to restrict drawing to a small region around the cursor.
  36847. Then, enter selection mode (with <see cref="M:Tao.OpenGl.Gl.glRenderMode(System.Int32)"/>) and rerender
  36848. the scene. All primitives that would have been drawn near the cursor are
  36849. identified and stored in the selection buffer.
  36850. </para>
  36851. <para>
  36852. The matrix created by <b>gluPickMatrix</b> is multiplied by the current
  36853. matrix just as if Gl.glMultMatrix* is called with the generated matrix.
  36854. To effectively use the generated pick matrix for picking, first call
  36855. <see cref="M:Tao.OpenGl.Gl.glLoadIdentity"/> to load an identity matrix onto the
  36856. perspective matrix stack. Then call <b>gluPickMatrix</b>, and finally, call
  36857. a command (such as <see cref="M:Tao.OpenGl.Glu.gluPerspective(System.Double,System.Double,System.Double,System.Double)"/>) to multiply the perspective
  36858. matrix by the pick matrix.
  36859. </para>
  36860. <para>
  36861. When using <b>gluPickMatrix</b> to pick NURBS, be careful to turn off the
  36862. NURBS property <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/>. If
  36863. <see cref="F:Tao.OpenGl.Glu.GLU_AUTO_LOAD_MATRIX"/> is not turned off, then any NURBS
  36864. surface rendered is subdivided differently with the pick matrix than the way
  36865. it was subdivided without the pick matrix.
  36866. </para>
  36867. <para>
  36868. <b>EXAMPLE</b>
  36869. </para>
  36870. <para>
  36871. When rendering a scene as follows:
  36872. </para>
  36873. <para>
  36874. <code>
  36875. Gl.glMatrixMode(Gl.GL_PROJECTION);
  36876. Gl.glLoadIdentity();
  36877. Glu.gluPerspective(. . .);
  36878. Gl.glMatrixMode(Gl.GL_MODELVIEW);
  36879. // Draw the scene
  36880. </code>
  36881. </para>
  36882. <para>
  36883. The following code selects a portion of the viewport:
  36884. </para>
  36885. <para>
  36886. <code>
  36887. Gl.glMatrixMode(Gl.GL_PROJECTION);
  36888. Gl.glLoadIdentity();
  36889. Glu.gluPickMatrix(x, y, width, height, viewport);
  36890. Glu.gluPerspective(. . .);
  36891. Gl.glMatrixMode(Gl.GL_MODELVIEW);
  36892. // Draw the scene
  36893. </code>
  36894. </para>
  36895. </remarks>
  36896. <seealso cref="M:Tao.OpenGl.Gl.glLoadIdentity"/>
  36897. <seealso cref="M:Tao.OpenGl.Gl.glRenderMode(System.Int32)"/>
  36898. <seealso cref="M:Tao.OpenGl.Glu.gluPerspective(System.Double,System.Double,System.Double,System.Double)"/>
  36899. </member>
  36900. <member name="M:Tao.OpenGl.Glu.gluProject(System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double@,System.Double@,System.Double@)">
  36901. <summary>
  36902. Maps object coordinates to window coordinates.
  36903. </summary>
  36904. <param name="objX">
  36905. The object's x axis coordinate.
  36906. </param>
  36907. <param name="objY">
  36908. The object's y axis coordinate.
  36909. </param>
  36910. <param name="objZ">
  36911. The object's z axis coordinate.
  36912. </param>
  36913. <param name="modelMatrix">
  36914. The current modelview matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/> call).
  36915. </param>
  36916. <param name="projectionMatrix">
  36917. The current projection matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/>
  36918. call).
  36919. </param>
  36920. <param name="viewport">
  36921. The current viewport (as from a <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> call).
  36922. </param>
  36923. <param name="winX">
  36924. The computed window's x axis coordinate.
  36925. </param>
  36926. <param name="winY">
  36927. The computed window's y axis coordinate.
  36928. </param>
  36929. <param name="winZ">
  36930. The computed window's z axis coordinate.
  36931. </param>
  36932. <returns>
  36933. Returns <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> indicates success, a return value of
  36934. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> indicates failure.
  36935. </returns>
  36936. <remarks>
  36937. <para>
  36938. <b>gluProject</b> transforms the specified object coordinates into window
  36939. coordinates using <i>modelMatrix</i>, <i>projectionMatrix</i>, and
  36940. <i>viewport</i>. The result is stored in <i>winX</i>, <i>winY</i>, and
  36941. <i>winZ</i>. A return value of <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> indicates success,
  36942. a return value of <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> indicates failure.
  36943. </para>
  36944. <para>
  36945. To compute the coordinates, let <c>v = (objX, objY, objZ, 1.0)</c>
  36946. represented as a matrix with 4 rows and 1 column. Then <b>gluProject</b>
  36947. computes v' as follows:
  36948. </para>
  36949. <para>
  36950. <c>v' = P x M x v</c>
  36951. </para>
  36952. <para>
  36953. Where P is the current projection matrix <i>projectionMatrix</i>, M is the
  36954. current modelview matrix <i>modelMatrix</i> (both represented as 4x4 matrices
  36955. in column-major order) and 'x' represents matrix multiplication.
  36956. </para>
  36957. <para>
  36958. The window coordinates are then computed as follows:
  36959. </para>
  36960. <para>
  36961. <code>
  36962. winX = view(0) + view(2) * (v'(0) + 1) / 2
  36963. winY = view(1) + view(3) * (v'(1) + 1) / 2
  36964. winZ = (v'(2) + 1) / 2
  36965. </code>
  36966. </para>
  36967. </remarks>
  36968. <seealso cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/>
  36969. <seealso cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/>
  36970. <seealso cref="M:Tao.OpenGl.Glu.gluUnProject(System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double@,System.Double@,System.Double@)"/>
  36971. </member>
  36972. <member name="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Int32)">
  36973. <summary>
  36974. Describes a piecewise linear NURBS trimming curve.
  36975. </summary>
  36976. <param name="nurb">
  36977. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  36978. </param>
  36979. <param name="count">
  36980. The number of points on the curve.
  36981. </param>
  36982. <param name="data">
  36983. An array containing the curve points.
  36984. </param>
  36985. <param name="stride">
  36986. The offset (a number of single precision–floating-point values) between
  36987. points on the curve.
  36988. </param>
  36989. <param name="type">
  36990. The type of curve. Must be either <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/> or
  36991. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>.
  36992. </param>
  36993. <remarks>
  36994. <para>
  36995. <b>gluPwlCurve</b> describes a piecewise linear trimming curve for a NURBS
  36996. surface. A piecewise linear curve consists of a list of coordinates of
  36997. points in the parameter space for the NURBS surface to be trimmed. These
  36998. points are connected with line segments to form a curve. If the curve is an
  36999. approximation to a curve that is not piecewise linear, the points should be
  37000. close enough in parameter space that the resulting path appears curved at the
  37001. resolution used in the application.
  37002. </para>
  37003. <para>
  37004. If type is <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/>, then it describes a curve in
  37005. two-dimensional (u and v) parameter space. If it is
  37006. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>, then it describes a curve in two-dimensional
  37007. homogeneous (u, v, and w) parameter space. See the
  37008. <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> reference page for more information about
  37009. trimming curves.
  37010. </para>
  37011. <para>
  37012. <b>NOTES</b>
  37013. </para>
  37014. <para>
  37015. To describe a trim curve that closely follows the contours of a NURBS
  37016. surface, call <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>.
  37017. </para>
  37018. </remarks>
  37019. <seealso cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  37020. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  37021. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  37022. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  37023. </member>
  37024. <member name="M:Tao.OpenGl.Glu.gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[0:,0:],System.Int32,System.Int32)">
  37025. <summary>
  37026. Describes a piecewise linear NURBS trimming curve.
  37027. </summary>
  37028. <param name="nurb">
  37029. The NURBS object (created with <see cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>).
  37030. </param>
  37031. <param name="count">
  37032. The number of points on the curve.
  37033. </param>
  37034. <param name="data">
  37035. An array containing the curve points.
  37036. </param>
  37037. <param name="stride">
  37038. The offset (a number of single precision–floating-point values) between
  37039. points on the curve.
  37040. </param>
  37041. <param name="type">
  37042. The type of curve. Must be either <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/> or
  37043. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>.
  37044. </param>
  37045. <remarks>
  37046. <para>
  37047. <b>gluPwlCurve</b> describes a piecewise linear trimming curve for a NURBS
  37048. surface. A piecewise linear curve consists of a list of coordinates of
  37049. points in the parameter space for the NURBS surface to be trimmed. These
  37050. points are connected with line segments to form a curve. If the curve is an
  37051. approximation to a curve that is not piecewise linear, the points should be
  37052. close enough in parameter space that the resulting path appears curved at the
  37053. resolution used in the application.
  37054. </para>
  37055. <para>
  37056. If type is <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_2"/>, then it describes a curve in
  37057. two-dimensional (u and v) parameter space. If it is
  37058. <see cref="F:Tao.OpenGl.Glu.GLU_MAP1_TRIM_3"/>, then it describes a curve in two-dimensional
  37059. homogeneous (u, v, and w) parameter space. See the
  37060. <see cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/> reference page for more information about
  37061. trimming curves.
  37062. </para>
  37063. <para>
  37064. <b>NOTES</b>
  37065. </para>
  37066. <para>
  37067. To describe a trim curve that closely follows the contours of a NURBS
  37068. surface, call <see cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>.
  37069. </para>
  37070. </remarks>
  37071. <seealso cref="M:Tao.OpenGl.Glu.gluBeginCurve(Tao.OpenGl.Glu.GLUnurbs)"/>
  37072. <seealso cref="M:Tao.OpenGl.Glu.gluBeginTrim(Tao.OpenGl.Glu.GLUnurbs)"/>
  37073. <seealso cref="M:Tao.OpenGl.Glu.gluNewNurbsRenderer"/>
  37074. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs,System.Int32,System.Single[],System.Int32,System.Single[],System.Int32,System.Int32)"/>
  37075. </member>
  37076. <member name="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)">
  37077. <summary>
  37078. Defines a callback for a quadric object.
  37079. </summary>
  37080. <param name="quad">
  37081. The quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  37082. </param>
  37083. <param name="which">
  37084. The callback being defined. The only valid value is
  37085. <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/>.
  37086. </param>
  37087. <param name="func">
  37088. The function to be called.
  37089. </param>
  37090. <remarks>
  37091. <para>
  37092. <b>gluQuadricCallback</b> is used to define a new callback to be used by a
  37093. quadrics object. If the specified callback is already defined, then it is
  37094. replaced. If <i>func</i> is <c>null</c>, then any existing callback is
  37095. erased.
  37096. </para>
  37097. <para>
  37098. The one legal callback is <see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/>:
  37099. </para>
  37100. <para>
  37101. <list type="table">
  37102. <listheader>
  37103. <term>Value</term>
  37104. <description>Description</description>
  37105. </listheader>
  37106. <item>
  37107. <term><see cref="F:Tao.OpenGl.Glu.GLU_ERROR"/></term>
  37108. <description>
  37109. The function is called when an error is encountered. Its single
  37110. argument is of type <see cref="T:System.Int32"/>, and it indicates the
  37111. specific error that occurred. Character strings describing these
  37112. errors can be retrieved with the <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  37113. call.
  37114. </description>
  37115. </item>
  37116. </list>
  37117. </para>
  37118. </remarks>
  37119. <seealso cref="T:Tao.OpenGl.Glu.QuadricErrorCallback"/>
  37120. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  37121. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  37122. </member>
  37123. <member name="M:Tao.OpenGl.Glu.gluQuadricDrawStyle(Tao.OpenGl.Glu.GLUquadric,System.Int32)">
  37124. <summary>
  37125. Specifies the draw style desired for quadrics.
  37126. </summary>
  37127. <param name="quad">
  37128. The quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  37129. </param>
  37130. <param name="drawStyle">
  37131. <para>
  37132. The desired draw style. The following values are valid:
  37133. </para>
  37134. <para>
  37135. <list type="table">
  37136. <listheader>
  37137. <term>Value</term>
  37138. <description>Description</description>
  37139. </listheader>
  37140. <item>
  37141. <term><see cref="F:Tao.OpenGl.Glu.GLU_FILL"/></term>
  37142. <description>
  37143. Quadrics are rendered with polygon primitives. The polygons are
  37144. drawn in a counterclockwise fashion with respect to their normals
  37145. (as defined with <see cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>).
  37146. </description>
  37147. </item>
  37148. <item>
  37149. <term><see cref="F:Tao.OpenGl.Glu.GLU_LINE"/></term>
  37150. <description>
  37151. Quadrics are rendered as a set of lines.
  37152. </description>
  37153. </item>
  37154. <item>
  37155. <term><see cref="F:Tao.OpenGl.Glu.GLU_SILHOUETTE"/></term>
  37156. <description>
  37157. Quadrics are rendered as a set of lines, except that edges
  37158. separating coplanar faces will not be drawn.
  37159. </description>
  37160. </item>
  37161. <item>
  37162. <term><see cref="F:Tao.OpenGl.Glu.GLU_POINT"/></term>
  37163. <description>
  37164. Quadrics are rendered as a set of points.
  37165. </description>
  37166. </item>
  37167. </list>
  37168. </para>
  37169. </param>
  37170. <remarks>
  37171. <b>gluQuadricDrawStyle</b> specifies the draw style for quadrics rendered
  37172. with <i>quad</i>.
  37173. </remarks>
  37174. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  37175. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricNormals(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37176. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37177. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37178. </member>
  37179. <member name="M:Tao.OpenGl.Glu.gluQuadricNormals(Tao.OpenGl.Glu.GLUquadric,System.Int32)">
  37180. <summary>
  37181. Specifies what kind of normals are to be used for quadrics.
  37182. </summary>
  37183. <param name="quad">
  37184. The quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  37185. </param>
  37186. <param name="normal">
  37187. <para>
  37188. The desired type of normals. The following values are valid:
  37189. </para>
  37190. <para>
  37191. <list type="table">
  37192. <listheader>
  37193. <term>Value</term>
  37194. <description>Description</description>
  37195. </listheader>
  37196. <item>
  37197. <term><see cref="F:Tao.OpenGl.Glu.GLU_NONE"/></term>
  37198. <description>
  37199. No normals are generated.
  37200. </description>
  37201. </item>
  37202. <item>
  37203. <term><see cref="F:Tao.OpenGl.Glu.GLU_FLAT"/></term>
  37204. <description>
  37205. One normal is generated for every facet of a quadric.
  37206. </description>
  37207. </item>
  37208. <item>
  37209. <term><see cref="F:Tao.OpenGl.Glu.GLU_SMOOTH"/></term>
  37210. <description>
  37211. One normal is generated for every vertex of a quadric. This is
  37212. the default value.
  37213. </description>
  37214. </item>
  37215. </list>
  37216. </para>
  37217. </param>
  37218. <remarks>
  37219. <b>gluQuadricNormals</b> specifies what kind of normals are desired for
  37220. quadrics rendered with <i>quad</i>.
  37221. </remarks>
  37222. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  37223. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricDrawStyle(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37224. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37225. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37226. </member>
  37227. <member name="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)">
  37228. <summary>
  37229. Specifies inside or outside orientation for quadrics.
  37230. </summary>
  37231. <param name="quad">
  37232. The quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  37233. </param>
  37234. <param name="orientation">
  37235. <para>
  37236. The desired orientation. The following values are valid:
  37237. </para>
  37238. <para>
  37239. <list type="table">
  37240. <listheader>
  37241. <term>Value</term>
  37242. <description>Description</description>
  37243. </listheader>
  37244. <item>
  37245. <term><see cref="F:Tao.OpenGl.Glu.GLU_OUTSIDE"/></term>
  37246. <description>
  37247. Draw quadrics with normals pointing outward. This is the default
  37248. value.
  37249. </description>
  37250. </item>
  37251. <item>
  37252. <term><see cref="F:Tao.OpenGl.Glu.GLU_INSIDE"/></term>
  37253. <description>
  37254. Draw quadrics with normals pointing inward.
  37255. </description>
  37256. </item>
  37257. </list>
  37258. </para>
  37259. </param>
  37260. <remarks>
  37261. <para>
  37262. <b>gluQuadricOrientation</b> specifies what kind of orientation is desired
  37263. for quadrics rendered with <i>quad</i>.
  37264. </para>
  37265. <para>
  37266. The interpretation of outward and inward depends on the quadric being drawn.
  37267. </para>
  37268. </remarks>
  37269. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  37270. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricDrawStyle(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37271. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricNormals(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37272. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37273. </member>
  37274. <member name="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)">
  37275. <summary>
  37276. Specifies whether quadrics are to be textured.
  37277. </summary>
  37278. <param name="quad">
  37279. The quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  37280. </param>
  37281. <param name="texture">
  37282. <para>
  37283. A flag indicating whether texture coordinates are to be generated. The
  37284. following values are valid:
  37285. </para>
  37286. <para>
  37287. <list type="table">
  37288. <listheader>
  37289. <term>Value</term>
  37290. <description>Description</description>
  37291. </listheader>
  37292. <item>
  37293. <term><see cref="F:Tao.OpenGl.Gl.GL_TRUE"/></term>
  37294. <description>
  37295. Generate texture coordinates.
  37296. </description>
  37297. </item>
  37298. <item>
  37299. <term><see cref="F:Tao.OpenGl.Gl.GL_FALSE"/></term>
  37300. <description>
  37301. Do not generate texture coordinates. This is the default value.
  37302. </description>
  37303. </item>
  37304. </list>
  37305. </para>
  37306. </param>
  37307. <remarks>
  37308. <para>
  37309. <b>gluQuadricTexture</b> specifies if texture coordinates should be generated
  37310. for quadrics rendered with <i>quad</i>.
  37311. </para>
  37312. <para>
  37313. The manner in which texture coordinates are generated depends upon the
  37314. specific quadric rendered.
  37315. </para>
  37316. </remarks>
  37317. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  37318. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricDrawStyle(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37319. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricNormals(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37320. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37321. </member>
  37322. <member name="M:Tao.OpenGl.Glu.gluScaleImage(System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.IntPtr)">
  37323. <summary>
  37324. Scales an image to an arbitrary size.
  37325. </summary>
  37326. <param name="format">
  37327. The format of the pixel data. The following symbolic values are valid:
  37328. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_STENCIL_INDEX"/>,
  37329. <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>, <see cref="F:Tao.OpenGl.Gl.GL_RED"/>,
  37330. <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>, <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>,
  37331. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  37332. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGR_EXT"/>,
  37333. <see cref="F:Tao.OpenGl.Gl.GL_BGRA_EXT"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, and
  37334. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  37335. </param>
  37336. <param name="widthIn">
  37337. The width of the source image that is scaled.
  37338. </param>
  37339. <param name="heightIn">
  37340. The height of the source image that is scaled.
  37341. </param>
  37342. <param name="typeIn">
  37343. The data type for <i>dataIn</i>. Must be one of
  37344. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  37345. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  37346. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  37347. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  37348. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  37349. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  37350. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  37351. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  37352. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  37353. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  37354. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  37355. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  37356. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  37357. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  37358. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  37359. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  37360. </param>
  37361. <param name="dataIn">
  37362. A pointer to the source image.
  37363. </param>
  37364. <param name="widthOut">
  37365. The width of the destination image.
  37366. </param>
  37367. <param name="heightOut">
  37368. The height of the destination image.
  37369. </param>
  37370. <param name="typeOut">
  37371. The data type for <i>dataOut</i>. Must be one of
  37372. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  37373. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  37374. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  37375. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  37376. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  37377. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  37378. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  37379. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  37380. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  37381. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  37382. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  37383. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  37384. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  37385. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  37386. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  37387. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  37388. </param>
  37389. <param name="dataOut">
  37390. A pointer to the destination image.
  37391. </param>
  37392. <returns>
  37393. A return value of zero indicates success, otherwise a GLU error code is
  37394. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  37395. </returns>
  37396. <remarks>
  37397. <para>
  37398. <b>gluScaleImage</b> scales a pixel image using the appropriate pixel store
  37399. modes to unpack data from the source image and pack data into the
  37400. destination image.
  37401. </para>
  37402. <para>
  37403. When shrinking an image, <b>gluScaleImage</b> uses a box filter to sample the
  37404. source image and create pixels for the destination image. When magnifying an
  37405. image, the pixels from the source image are linearly interpolated to create
  37406. the destination image.
  37407. </para>
  37408. <para>
  37409. A return value of zero indicates success, otherwise a GLU error code is
  37410. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  37411. </para>
  37412. <para>
  37413. See the <see cref="M:Tao.OpenGl.Gl.glReadPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  37414. the acceptable values for the <i>format</i>, <i>typeIn</i>, and
  37415. <i>typeOut</i> parameters.
  37416. </para>
  37417. <para>
  37418. <b>NOTES</b>
  37419. </para>
  37420. <para>
  37421. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  37422. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  37423. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  37424. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  37425. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  37426. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  37427. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  37428. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  37429. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  37430. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  37431. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  37432. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  37433. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  37434. version is 1.2 or greater.
  37435. </para>
  37436. <para>
  37437. <b>ERRORS</b>
  37438. </para>
  37439. <para>
  37440. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>widthIn</i>,
  37441. <i>heightIn</i>, <i>widthOut</i>, or <i>heightOut</i> is negative.
  37442. </para>
  37443. <para>
  37444. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i>, <i>typeIn</i>,
  37445. or <i>typeOut</i> is not legal.
  37446. </para>
  37447. <para>
  37448. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37449. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  37450. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  37451. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  37452. </para>
  37453. <para>
  37454. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37455. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  37456. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  37457. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  37458. </para>
  37459. <para>
  37460. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37461. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  37462. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  37463. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37464. </para>
  37465. <para>
  37466. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37467. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  37468. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  37469. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37470. </para>
  37471. <para>
  37472. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37473. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  37474. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  37475. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37476. </para>
  37477. <para>
  37478. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37479. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  37480. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  37481. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37482. </para>
  37483. </remarks>
  37484. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  37485. <seealso cref="M:Tao.OpenGl.Gl.glReadPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  37486. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  37487. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  37488. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  37489. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  37490. </member>
  37491. <member name="M:Tao.OpenGl.Glu.gluScaleImage(System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[],System.Int32,System.Int32,System.Int32,System.Byte[])">
  37492. <summary>
  37493. Scales an image to an arbitrary size.
  37494. </summary>
  37495. <param name="format">
  37496. The format of the pixel data. The following symbolic values are valid:
  37497. <see cref="F:Tao.OpenGl.Gl.GL_COLOR_INDEX"/>, <see cref="F:Tao.OpenGl.Gl.GL_STENCIL_INDEX"/>,
  37498. <see cref="F:Tao.OpenGl.Gl.GL_DEPTH_COMPONENT"/>, <see cref="F:Tao.OpenGl.Gl.GL_RED"/>,
  37499. <see cref="F:Tao.OpenGl.Gl.GL_GREEN"/>, <see cref="F:Tao.OpenGl.Gl.GL_BLUE"/>,
  37500. <see cref="F:Tao.OpenGl.Gl.GL_ALPHA"/>, <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>,
  37501. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/>, <see cref="F:Tao.OpenGl.Gl.GL_BGR_EXT"/>,
  37502. <see cref="F:Tao.OpenGl.Gl.GL_BGRA_EXT"/>, <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE"/>, and
  37503. <see cref="F:Tao.OpenGl.Gl.GL_LUMINANCE_ALPHA"/>.
  37504. </param>
  37505. <param name="widthIn">
  37506. The width of the source image that is scaled.
  37507. </param>
  37508. <param name="heightIn">
  37509. The height of the source image that is scaled.
  37510. </param>
  37511. <param name="typeIn">
  37512. The data type for <i>dataIn</i>. Must be one of
  37513. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  37514. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  37515. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  37516. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  37517. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  37518. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  37519. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  37520. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  37521. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  37522. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  37523. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  37524. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  37525. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  37526. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  37527. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  37528. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  37529. </param>
  37530. <param name="dataIn">
  37531. A pointer to the source image.
  37532. </param>
  37533. <param name="widthOut">
  37534. The width of the destination image.
  37535. </param>
  37536. <param name="heightOut">
  37537. The height of the destination image.
  37538. </param>
  37539. <param name="typeOut">
  37540. The data type for <i>dataOut</i>. Must be one of
  37541. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE"/>, <see cref="F:Tao.OpenGl.Gl.GL_BYTE"/>,
  37542. <see cref="F:Tao.OpenGl.Gl.GL_BITMAP"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT"/>,
  37543. <see cref="F:Tao.OpenGl.Gl.GL_SHORT"/>, <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT"/>,
  37544. <see cref="F:Tao.OpenGl.Gl.GL_INT"/>, <see cref="F:Tao.OpenGl.Gl.GL_FLOAT"/>,
  37545. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  37546. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  37547. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  37548. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  37549. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  37550. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  37551. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  37552. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  37553. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  37554. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  37555. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, or
  37556. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/>.
  37557. </param>
  37558. <param name="dataOut">
  37559. A pointer to the destination image.
  37560. </param>
  37561. <returns>
  37562. A return value of zero indicates success, otherwise a GLU error code is
  37563. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  37564. </returns>
  37565. <remarks>
  37566. <para>
  37567. <b>gluScaleImage</b> scales a pixel image using the appropriate pixel store
  37568. modes to unpack data from the source image and pack data into the
  37569. destination image.
  37570. </para>
  37571. <para>
  37572. When shrinking an image, <b>gluScaleImage</b> uses a box filter to sample the
  37573. source image and create pixels for the destination image. When magnifying an
  37574. image, the pixels from the source image are linearly interpolated to create
  37575. the destination image.
  37576. </para>
  37577. <para>
  37578. A return value of zero indicates success, otherwise a GLU error code is
  37579. returned (see <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>).
  37580. </para>
  37581. <para>
  37582. See the <see cref="M:Tao.OpenGl.Gl.glReadPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/> reference page for a description of
  37583. the acceptable values for the <i>format</i>, <i>typeIn</i>, and
  37584. <i>typeOut</i> parameters.
  37585. </para>
  37586. <para>
  37587. <b>NOTES</b>
  37588. </para>
  37589. <para>
  37590. Formats <see cref="F:Tao.OpenGl.Gl.GL_BGR"/>, and <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>, and types
  37591. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/>,
  37592. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/>,
  37593. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/>,
  37594. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/>,
  37595. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/>,
  37596. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/>,
  37597. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/>,
  37598. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/>,
  37599. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/>,
  37600. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/>,
  37601. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/>, and
  37602. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> are only available if the GL
  37603. version is 1.2 or greater.
  37604. </para>
  37605. <para>
  37606. <b>ERRORS</b>
  37607. </para>
  37608. <para>
  37609. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_VALUE"/> is returned if <i>widthIn</i>,
  37610. <i>heightIn</i>, <i>widthOut</i>, or <i>heightOut</i> is negative.
  37611. </para>
  37612. <para>
  37613. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_ENUM"/> is returned if <i>format</i>, <i>typeIn</i>,
  37614. or <i>typeOut</i> is not legal.
  37615. </para>
  37616. <para>
  37617. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37618. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_3_3_2"/> or
  37619. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_BYTE_2_3_3_REV"/> and <i>format</i> is not
  37620. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  37621. </para>
  37622. <para>
  37623. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37624. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5"/> or
  37625. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_6_5_REV"/> and <i>format</i> is not
  37626. <see cref="F:Tao.OpenGl.Gl.GL_RGB"/>.
  37627. </para>
  37628. <para>
  37629. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37630. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4"/> or
  37631. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV"/> and <i>format</i> is neither
  37632. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37633. </para>
  37634. <para>
  37635. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37636. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_5_5_5_1"/> or
  37637. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV"/> and <i>format</i> is neither
  37638. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37639. </para>
  37640. <para>
  37641. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37642. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8"/> or
  37643. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_8_8_8_8_REV"/> and <i>format</i> is neither
  37644. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37645. </para>
  37646. <para>
  37647. <see cref="F:Tao.OpenGl.Glu.GLU_INVALID_OPERATION"/> is returned if <i>typeIn</i> or
  37648. <i>typeOut</i> is <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_10_10_10_2"/> or
  37649. <see cref="F:Tao.OpenGl.Gl.GL_UNSIGNED_INT_2_10_10_10_REV"/> and <i>format</i> is neither
  37650. <see cref="F:Tao.OpenGl.Gl.GL_RGBA"/> nor <see cref="F:Tao.OpenGl.Gl.GL_BGRA"/>.
  37651. </para>
  37652. </remarks>
  37653. <seealso cref="M:Tao.OpenGl.Gl.glDrawPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  37654. <seealso cref="M:Tao.OpenGl.Gl.glReadPixels(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Object)"/>
  37655. <seealso cref="M:Tao.OpenGl.Glu.gluBuild1DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  37656. <seealso cref="M:Tao.OpenGl.Glu.gluBuild2DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  37657. <seealso cref="M:Tao.OpenGl.Glu.gluBuild3DMipmaps(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Byte[])"/>
  37658. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  37659. </member>
  37660. <member name="M:Tao.OpenGl.Glu.gluSphere(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Int32,System.Int32)">
  37661. <summary>
  37662. Draws a sphere.
  37663. </summary>
  37664. <param name="quad">
  37665. The quadric object (created with <see cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>).
  37666. </param>
  37667. <param name="radius">
  37668. The radius of the sphere.
  37669. </param>
  37670. <param name="slices">
  37671. The number of subdivisions around the z-axis (similar to lines of longitude.
  37672. </param>
  37673. <param name="stacks">
  37674. The number of subdivisions along the z-axis (similar to lines of latitude).
  37675. </param>
  37676. <remarks>
  37677. <para>
  37678. <b>gluSphere</b> draws a sphere of the given radius centered around the
  37679. origin. The sphere is subdivided around the z axis into slices and along the
  37680. z axis into stacks (similar to lines of longitude and latitude).
  37681. </para>
  37682. <para>
  37683. If the orientation is set to <see cref="F:Tao.OpenGl.Glu.GLU_OUTSIDE"/> (with
  37684. <see cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>), then any normals generated point away
  37685. from the center of the sphere. Otherwise, they point toward the center of
  37686. the sphere.
  37687. </para>
  37688. <para>
  37689. If texturing is turned on (with <see cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>), then
  37690. texture coordinates are generated so that t ranges from 0.0 at z = -radius
  37691. to 1.0 at z = radius (t increases linearly along longitudinal lines), and
  37692. s ranges from 0.0 at the +y axis, to 0.25 at the +x axis, to 0.5 at the -y
  37693. axis, to 0.75 at the -x axis, and back to 1.0 at the +y axis.
  37694. </para>
  37695. </remarks>
  37696. <seealso cref="M:Tao.OpenGl.Glu.gluCylinder(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Double,System.Int32,System.Int32)"/>
  37697. <seealso cref="M:Tao.OpenGl.Glu.gluDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32)"/>
  37698. <seealso cref="M:Tao.OpenGl.Glu.gluNewQuadric"/>
  37699. <seealso cref="M:Tao.OpenGl.Glu.gluPartialDisk(Tao.OpenGl.Glu.GLUquadric,System.Double,System.Double,System.Int32,System.Int32,System.Double,System.Double)"/>
  37700. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricOrientation(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37701. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricTexture(Tao.OpenGl.Glu.GLUquadric,System.Int32)"/>
  37702. </member>
  37703. <member name="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)">
  37704. <summary>
  37705. Delimits a contour description.
  37706. </summary>
  37707. <param name="tess">
  37708. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  37709. </param>
  37710. <remarks>
  37711. <b>gluTessBeginContour</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  37712. definition of a polygon contour. Within each
  37713. <b>gluTessBeginContour</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there can
  37714. be zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>. The vertices specify
  37715. a closed contour (the last vertex of each contour is automatically linked to
  37716. the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> reference page for more
  37717. details. <b>gluTessBeginContour</b> can only be called between
  37718. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>.
  37719. </remarks>
  37720. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  37721. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  37722. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  37723. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37724. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  37725. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  37726. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  37727. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  37728. </member>
  37729. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])">
  37730. <summary>
  37731. Delimits a polygon description.
  37732. </summary>
  37733. <param name="tess">
  37734. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  37735. </param>
  37736. <param name="data">
  37737. A pointer to a programmer defined–polygon data structure.
  37738. </param>
  37739. <remarks>
  37740. <para>
  37741. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  37742. definition of a convex, concave or self-intersecting polygon. Within each
  37743. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  37744. be one or more calls to
  37745. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  37746. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  37747. The vertices specify a closed contour (the last vertex of each contour is
  37748. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  37749. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37750. reference pages for more details.
  37751. </para>
  37752. <para>
  37753. <i>data</i> is a pointer to a user-defined data structure. If the
  37754. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  37755. then this pointer is returned to the callback function(s). Thus, it is a
  37756. convenient way to store per-polygon information.
  37757. </para>
  37758. <para>
  37759. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  37760. and the resulting triangles are described through callbacks. See
  37761. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  37762. </para>
  37763. <para>
  37764. <b>EXAMPLE</b>
  37765. </para>
  37766. <para>
  37767. The following describes a quadrilateral with a triangular hole:
  37768. </para>
  37769. <para>
  37770. <code>
  37771. Glu.gluTessBeginPolygon(tobj, null);
  37772. Glu.gluTessBeginContour(tobj);
  37773. Glu.gluTessVertex(tobj, v1, v1);
  37774. Glu.gluTessVertex(tobj, v2, v2);
  37775. Glu.gluTessVertex(tobj, v3, v3);
  37776. Glu.gluTessVertex(tobj, v4, v4);
  37777. Glu.gluTessEndContour(tobj);
  37778. Glu.gluTessBeginContour(tobj);
  37779. Glu.gluTessVertex(tobj, v5, v5);
  37780. Glu.gluTessVertex(tobj, v6, v6);
  37781. Glu.gluTessVertex(tobj, v7, v7);
  37782. Glu.gluTessEndContour(tobj);
  37783. Glu.gluTessEndPolygon(tobj);
  37784. </code>
  37785. </para>
  37786. </remarks>
  37787. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  37788. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37789. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  37790. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  37791. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  37792. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  37793. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  37794. </member>
  37795. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[0:,0:])">
  37796. <summary>
  37797. Delimits a polygon description.
  37798. </summary>
  37799. <param name="tess">
  37800. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  37801. </param>
  37802. <param name="data">
  37803. A pointer to a programmer defined–polygon data structure.
  37804. </param>
  37805. <remarks>
  37806. <para>
  37807. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  37808. definition of a convex, concave or self-intersecting polygon. Within each
  37809. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  37810. be one or more calls to
  37811. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  37812. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  37813. The vertices specify a closed contour (the last vertex of each contour is
  37814. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  37815. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37816. reference pages for more details.
  37817. </para>
  37818. <para>
  37819. <i>data</i> is a pointer to a user-defined data structure. If the
  37820. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  37821. then this pointer is returned to the callback function(s). Thus, it is a
  37822. convenient way to store per-polygon information.
  37823. </para>
  37824. <para>
  37825. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  37826. and the resulting triangles are described through callbacks. See
  37827. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  37828. </para>
  37829. <para>
  37830. <b>EXAMPLE</b>
  37831. </para>
  37832. <para>
  37833. The following describes a quadrilateral with a triangular hole:
  37834. </para>
  37835. <para>
  37836. <code>
  37837. Glu.gluTessBeginPolygon(tobj, null);
  37838. Glu.gluTessBeginContour(tobj);
  37839. Glu.gluTessVertex(tobj, v1, v1);
  37840. Glu.gluTessVertex(tobj, v2, v2);
  37841. Glu.gluTessVertex(tobj, v3, v3);
  37842. Glu.gluTessVertex(tobj, v4, v4);
  37843. Glu.gluTessEndContour(tobj);
  37844. Glu.gluTessBeginContour(tobj);
  37845. Glu.gluTessVertex(tobj, v5, v5);
  37846. Glu.gluTessVertex(tobj, v6, v6);
  37847. Glu.gluTessVertex(tobj, v7, v7);
  37848. Glu.gluTessEndContour(tobj);
  37849. Glu.gluTessEndPolygon(tobj);
  37850. </code>
  37851. </para>
  37852. </remarks>
  37853. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  37854. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37855. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  37856. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  37857. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  37858. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  37859. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  37860. </member>
  37861. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[0:,0:,0:])">
  37862. <summary>
  37863. Delimits a polygon description.
  37864. </summary>
  37865. <param name="tess">
  37866. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  37867. </param>
  37868. <param name="data">
  37869. A pointer to a programmer defined–polygon data structure.
  37870. </param>
  37871. <remarks>
  37872. <para>
  37873. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  37874. definition of a convex, concave or self-intersecting polygon. Within each
  37875. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  37876. be one or more calls to
  37877. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  37878. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  37879. The vertices specify a closed contour (the last vertex of each contour is
  37880. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  37881. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37882. reference pages for more details.
  37883. </para>
  37884. <para>
  37885. <i>data</i> is a pointer to a user-defined data structure. If the
  37886. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  37887. then this pointer is returned to the callback function(s). Thus, it is a
  37888. convenient way to store per-polygon information.
  37889. </para>
  37890. <para>
  37891. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  37892. and the resulting triangles are described through callbacks. See
  37893. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  37894. </para>
  37895. <para>
  37896. <b>EXAMPLE</b>
  37897. </para>
  37898. <para>
  37899. The following describes a quadrilateral with a triangular hole:
  37900. </para>
  37901. <para>
  37902. <code>
  37903. Glu.gluTessBeginPolygon(tobj, null);
  37904. Glu.gluTessBeginContour(tobj);
  37905. Glu.gluTessVertex(tobj, v1, v1);
  37906. Glu.gluTessVertex(tobj, v2, v2);
  37907. Glu.gluTessVertex(tobj, v3, v3);
  37908. Glu.gluTessVertex(tobj, v4, v4);
  37909. Glu.gluTessEndContour(tobj);
  37910. Glu.gluTessBeginContour(tobj);
  37911. Glu.gluTessVertex(tobj, v5, v5);
  37912. Glu.gluTessVertex(tobj, v6, v6);
  37913. Glu.gluTessVertex(tobj, v7, v7);
  37914. Glu.gluTessEndContour(tobj);
  37915. Glu.gluTessEndPolygon(tobj);
  37916. </code>
  37917. </para>
  37918. </remarks>
  37919. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  37920. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37921. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  37922. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  37923. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  37924. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  37925. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  37926. </member>
  37927. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Double[])">
  37928. <summary>
  37929. Delimits a polygon description.
  37930. </summary>
  37931. <param name="tess">
  37932. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  37933. </param>
  37934. <param name="data">
  37935. A pointer to a programmer defined–polygon data structure.
  37936. </param>
  37937. <remarks>
  37938. <para>
  37939. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  37940. definition of a convex, concave or self-intersecting polygon. Within each
  37941. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  37942. be one or more calls to
  37943. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  37944. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  37945. The vertices specify a closed contour (the last vertex of each contour is
  37946. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  37947. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37948. reference pages for more details.
  37949. </para>
  37950. <para>
  37951. <i>data</i> is a pointer to a user-defined data structure. If the
  37952. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  37953. then this pointer is returned to the callback function(s). Thus, it is a
  37954. convenient way to store per-polygon information.
  37955. </para>
  37956. <para>
  37957. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  37958. and the resulting triangles are described through callbacks. See
  37959. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  37960. </para>
  37961. <para>
  37962. <b>EXAMPLE</b>
  37963. </para>
  37964. <para>
  37965. The following describes a quadrilateral with a triangular hole:
  37966. </para>
  37967. <para>
  37968. <code>
  37969. Glu.gluTessBeginPolygon(tobj, null);
  37970. Glu.gluTessBeginContour(tobj);
  37971. Glu.gluTessVertex(tobj, v1, v1);
  37972. Glu.gluTessVertex(tobj, v2, v2);
  37973. Glu.gluTessVertex(tobj, v3, v3);
  37974. Glu.gluTessVertex(tobj, v4, v4);
  37975. Glu.gluTessEndContour(tobj);
  37976. Glu.gluTessBeginContour(tobj);
  37977. Glu.gluTessVertex(tobj, v5, v5);
  37978. Glu.gluTessVertex(tobj, v6, v6);
  37979. Glu.gluTessVertex(tobj, v7, v7);
  37980. Glu.gluTessEndContour(tobj);
  37981. Glu.gluTessEndPolygon(tobj);
  37982. </code>
  37983. </para>
  37984. </remarks>
  37985. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  37986. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  37987. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  37988. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  37989. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  37990. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  37991. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  37992. </member>
  37993. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Double[0:,0:])">
  37994. <summary>
  37995. Delimits a polygon description.
  37996. </summary>
  37997. <param name="tess">
  37998. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  37999. </param>
  38000. <param name="data">
  38001. A pointer to a programmer defined–polygon data structure.
  38002. </param>
  38003. <remarks>
  38004. <para>
  38005. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38006. definition of a convex, concave or self-intersecting polygon. Within each
  38007. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38008. be one or more calls to
  38009. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38010. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38011. The vertices specify a closed contour (the last vertex of each contour is
  38012. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38013. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38014. reference pages for more details.
  38015. </para>
  38016. <para>
  38017. <i>data</i> is a pointer to a user-defined data structure. If the
  38018. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38019. then this pointer is returned to the callback function(s). Thus, it is a
  38020. convenient way to store per-polygon information.
  38021. </para>
  38022. <para>
  38023. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38024. and the resulting triangles are described through callbacks. See
  38025. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38026. </para>
  38027. <para>
  38028. <b>EXAMPLE</b>
  38029. </para>
  38030. <para>
  38031. The following describes a quadrilateral with a triangular hole:
  38032. </para>
  38033. <para>
  38034. <code>
  38035. Glu.gluTessBeginPolygon(tobj, null);
  38036. Glu.gluTessBeginContour(tobj);
  38037. Glu.gluTessVertex(tobj, v1, v1);
  38038. Glu.gluTessVertex(tobj, v2, v2);
  38039. Glu.gluTessVertex(tobj, v3, v3);
  38040. Glu.gluTessVertex(tobj, v4, v4);
  38041. Glu.gluTessEndContour(tobj);
  38042. Glu.gluTessBeginContour(tobj);
  38043. Glu.gluTessVertex(tobj, v5, v5);
  38044. Glu.gluTessVertex(tobj, v6, v6);
  38045. Glu.gluTessVertex(tobj, v7, v7);
  38046. Glu.gluTessEndContour(tobj);
  38047. Glu.gluTessEndPolygon(tobj);
  38048. </code>
  38049. </para>
  38050. </remarks>
  38051. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38052. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38053. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38054. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38055. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38056. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38057. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38058. </member>
  38059. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Double[0:,0:,0:])">
  38060. <summary>
  38061. Delimits a polygon description.
  38062. </summary>
  38063. <param name="tess">
  38064. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38065. </param>
  38066. <param name="data">
  38067. A pointer to a programmer defined–polygon data structure.
  38068. </param>
  38069. <remarks>
  38070. <para>
  38071. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38072. definition of a convex, concave or self-intersecting polygon. Within each
  38073. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38074. be one or more calls to
  38075. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38076. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38077. The vertices specify a closed contour (the last vertex of each contour is
  38078. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38079. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38080. reference pages for more details.
  38081. </para>
  38082. <para>
  38083. <i>data</i> is a pointer to a user-defined data structure. If the
  38084. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38085. then this pointer is returned to the callback function(s). Thus, it is a
  38086. convenient way to store per-polygon information.
  38087. </para>
  38088. <para>
  38089. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38090. and the resulting triangles are described through callbacks. See
  38091. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38092. </para>
  38093. <para>
  38094. <b>EXAMPLE</b>
  38095. </para>
  38096. <para>
  38097. The following describes a quadrilateral with a triangular hole:
  38098. </para>
  38099. <para>
  38100. <code>
  38101. Glu.gluTessBeginPolygon(tobj, null);
  38102. Glu.gluTessBeginContour(tobj);
  38103. Glu.gluTessVertex(tobj, v1, v1);
  38104. Glu.gluTessVertex(tobj, v2, v2);
  38105. Glu.gluTessVertex(tobj, v3, v3);
  38106. Glu.gluTessVertex(tobj, v4, v4);
  38107. Glu.gluTessEndContour(tobj);
  38108. Glu.gluTessBeginContour(tobj);
  38109. Glu.gluTessVertex(tobj, v5, v5);
  38110. Glu.gluTessVertex(tobj, v6, v6);
  38111. Glu.gluTessVertex(tobj, v7, v7);
  38112. Glu.gluTessEndContour(tobj);
  38113. Glu.gluTessEndPolygon(tobj);
  38114. </code>
  38115. </para>
  38116. </remarks>
  38117. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38118. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38119. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38120. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38121. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38122. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38123. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38124. </member>
  38125. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Int16[])">
  38126. <summary>
  38127. Delimits a polygon description.
  38128. </summary>
  38129. <param name="tess">
  38130. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38131. </param>
  38132. <param name="data">
  38133. A pointer to a programmer defined–polygon data structure.
  38134. </param>
  38135. <remarks>
  38136. <para>
  38137. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38138. definition of a convex, concave or self-intersecting polygon. Within each
  38139. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38140. be one or more calls to
  38141. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38142. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38143. The vertices specify a closed contour (the last vertex of each contour is
  38144. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38145. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38146. reference pages for more details.
  38147. </para>
  38148. <para>
  38149. <i>data</i> is a pointer to a user-defined data structure. If the
  38150. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38151. then this pointer is returned to the callback function(s). Thus, it is a
  38152. convenient way to store per-polygon information.
  38153. </para>
  38154. <para>
  38155. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38156. and the resulting triangles are described through callbacks. See
  38157. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38158. </para>
  38159. <para>
  38160. <b>EXAMPLE</b>
  38161. </para>
  38162. <para>
  38163. The following describes a quadrilateral with a triangular hole:
  38164. </para>
  38165. <para>
  38166. <code>
  38167. Glu.gluTessBeginPolygon(tobj, null);
  38168. Glu.gluTessBeginContour(tobj);
  38169. Glu.gluTessVertex(tobj, v1, v1);
  38170. Glu.gluTessVertex(tobj, v2, v2);
  38171. Glu.gluTessVertex(tobj, v3, v3);
  38172. Glu.gluTessVertex(tobj, v4, v4);
  38173. Glu.gluTessEndContour(tobj);
  38174. Glu.gluTessBeginContour(tobj);
  38175. Glu.gluTessVertex(tobj, v5, v5);
  38176. Glu.gluTessVertex(tobj, v6, v6);
  38177. Glu.gluTessVertex(tobj, v7, v7);
  38178. Glu.gluTessEndContour(tobj);
  38179. Glu.gluTessEndPolygon(tobj);
  38180. </code>
  38181. </para>
  38182. </remarks>
  38183. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38184. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38185. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38186. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38187. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38188. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38189. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38190. </member>
  38191. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Int16[0:,0:])">
  38192. <summary>
  38193. Delimits a polygon description.
  38194. </summary>
  38195. <param name="tess">
  38196. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38197. </param>
  38198. <param name="data">
  38199. A pointer to a programmer defined–polygon data structure.
  38200. </param>
  38201. <remarks>
  38202. <para>
  38203. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38204. definition of a convex, concave or self-intersecting polygon. Within each
  38205. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38206. be one or more calls to
  38207. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38208. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38209. The vertices specify a closed contour (the last vertex of each contour is
  38210. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38211. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38212. reference pages for more details.
  38213. </para>
  38214. <para>
  38215. <i>data</i> is a pointer to a user-defined data structure. If the
  38216. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38217. then this pointer is returned to the callback function(s). Thus, it is a
  38218. convenient way to store per-polygon information.
  38219. </para>
  38220. <para>
  38221. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38222. and the resulting triangles are described through callbacks. See
  38223. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38224. </para>
  38225. <para>
  38226. <b>EXAMPLE</b>
  38227. </para>
  38228. <para>
  38229. The following describes a quadrilateral with a triangular hole:
  38230. </para>
  38231. <para>
  38232. <code>
  38233. Glu.gluTessBeginPolygon(tobj, null);
  38234. Glu.gluTessBeginContour(tobj);
  38235. Glu.gluTessVertex(tobj, v1, v1);
  38236. Glu.gluTessVertex(tobj, v2, v2);
  38237. Glu.gluTessVertex(tobj, v3, v3);
  38238. Glu.gluTessVertex(tobj, v4, v4);
  38239. Glu.gluTessEndContour(tobj);
  38240. Glu.gluTessBeginContour(tobj);
  38241. Glu.gluTessVertex(tobj, v5, v5);
  38242. Glu.gluTessVertex(tobj, v6, v6);
  38243. Glu.gluTessVertex(tobj, v7, v7);
  38244. Glu.gluTessEndContour(tobj);
  38245. Glu.gluTessEndPolygon(tobj);
  38246. </code>
  38247. </para>
  38248. </remarks>
  38249. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38250. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38251. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38252. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38253. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38254. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38255. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38256. </member>
  38257. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Int16[0:,0:,0:])">
  38258. <summary>
  38259. Delimits a polygon description.
  38260. </summary>
  38261. <param name="tess">
  38262. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38263. </param>
  38264. <param name="data">
  38265. A pointer to a programmer defined–polygon data structure.
  38266. </param>
  38267. <remarks>
  38268. <para>
  38269. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38270. definition of a convex, concave or self-intersecting polygon. Within each
  38271. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38272. be one or more calls to
  38273. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38274. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38275. The vertices specify a closed contour (the last vertex of each contour is
  38276. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38277. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38278. reference pages for more details.
  38279. </para>
  38280. <para>
  38281. <i>data</i> is a pointer to a user-defined data structure. If the
  38282. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38283. then this pointer is returned to the callback function(s). Thus, it is a
  38284. convenient way to store per-polygon information.
  38285. </para>
  38286. <para>
  38287. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38288. and the resulting triangles are described through callbacks. See
  38289. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38290. </para>
  38291. <para>
  38292. <b>EXAMPLE</b>
  38293. </para>
  38294. <para>
  38295. The following describes a quadrilateral with a triangular hole:
  38296. </para>
  38297. <para>
  38298. <code>
  38299. Glu.gluTessBeginPolygon(tobj, null);
  38300. Glu.gluTessBeginContour(tobj);
  38301. Glu.gluTessVertex(tobj, v1, v1);
  38302. Glu.gluTessVertex(tobj, v2, v2);
  38303. Glu.gluTessVertex(tobj, v3, v3);
  38304. Glu.gluTessVertex(tobj, v4, v4);
  38305. Glu.gluTessEndContour(tobj);
  38306. Glu.gluTessBeginContour(tobj);
  38307. Glu.gluTessVertex(tobj, v5, v5);
  38308. Glu.gluTessVertex(tobj, v6, v6);
  38309. Glu.gluTessVertex(tobj, v7, v7);
  38310. Glu.gluTessEndContour(tobj);
  38311. Glu.gluTessEndPolygon(tobj);
  38312. </code>
  38313. </para>
  38314. </remarks>
  38315. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38316. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38317. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38318. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38319. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38320. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38321. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38322. </member>
  38323. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Int32[])">
  38324. <summary>
  38325. Delimits a polygon description.
  38326. </summary>
  38327. <param name="tess">
  38328. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38329. </param>
  38330. <param name="data">
  38331. A pointer to a programmer defined–polygon data structure.
  38332. </param>
  38333. <remarks>
  38334. <para>
  38335. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38336. definition of a convex, concave or self-intersecting polygon. Within each
  38337. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38338. be one or more calls to
  38339. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38340. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38341. The vertices specify a closed contour (the last vertex of each contour is
  38342. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38343. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38344. reference pages for more details.
  38345. </para>
  38346. <para>
  38347. <i>data</i> is a pointer to a user-defined data structure. If the
  38348. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38349. then this pointer is returned to the callback function(s). Thus, it is a
  38350. convenient way to store per-polygon information.
  38351. </para>
  38352. <para>
  38353. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38354. and the resulting triangles are described through callbacks. See
  38355. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38356. </para>
  38357. <para>
  38358. <b>EXAMPLE</b>
  38359. </para>
  38360. <para>
  38361. The following describes a quadrilateral with a triangular hole:
  38362. </para>
  38363. <para>
  38364. <code>
  38365. Glu.gluTessBeginPolygon(tobj, null);
  38366. Glu.gluTessBeginContour(tobj);
  38367. Glu.gluTessVertex(tobj, v1, v1);
  38368. Glu.gluTessVertex(tobj, v2, v2);
  38369. Glu.gluTessVertex(tobj, v3, v3);
  38370. Glu.gluTessVertex(tobj, v4, v4);
  38371. Glu.gluTessEndContour(tobj);
  38372. Glu.gluTessBeginContour(tobj);
  38373. Glu.gluTessVertex(tobj, v5, v5);
  38374. Glu.gluTessVertex(tobj, v6, v6);
  38375. Glu.gluTessVertex(tobj, v7, v7);
  38376. Glu.gluTessEndContour(tobj);
  38377. Glu.gluTessEndPolygon(tobj);
  38378. </code>
  38379. </para>
  38380. </remarks>
  38381. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38382. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38383. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38384. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38385. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38386. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38387. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38388. </member>
  38389. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Int32[0:,0:])">
  38390. <summary>
  38391. Delimits a polygon description.
  38392. </summary>
  38393. <param name="tess">
  38394. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38395. </param>
  38396. <param name="data">
  38397. A pointer to a programmer defined–polygon data structure.
  38398. </param>
  38399. <remarks>
  38400. <para>
  38401. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38402. definition of a convex, concave or self-intersecting polygon. Within each
  38403. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38404. be one or more calls to
  38405. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38406. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38407. The vertices specify a closed contour (the last vertex of each contour is
  38408. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38409. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38410. reference pages for more details.
  38411. </para>
  38412. <para>
  38413. <i>data</i> is a pointer to a user-defined data structure. If the
  38414. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38415. then this pointer is returned to the callback function(s). Thus, it is a
  38416. convenient way to store per-polygon information.
  38417. </para>
  38418. <para>
  38419. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38420. and the resulting triangles are described through callbacks. See
  38421. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38422. </para>
  38423. <para>
  38424. <b>EXAMPLE</b>
  38425. </para>
  38426. <para>
  38427. The following describes a quadrilateral with a triangular hole:
  38428. </para>
  38429. <para>
  38430. <code>
  38431. Glu.gluTessBeginPolygon(tobj, null);
  38432. Glu.gluTessBeginContour(tobj);
  38433. Glu.gluTessVertex(tobj, v1, v1);
  38434. Glu.gluTessVertex(tobj, v2, v2);
  38435. Glu.gluTessVertex(tobj, v3, v3);
  38436. Glu.gluTessVertex(tobj, v4, v4);
  38437. Glu.gluTessEndContour(tobj);
  38438. Glu.gluTessBeginContour(tobj);
  38439. Glu.gluTessVertex(tobj, v5, v5);
  38440. Glu.gluTessVertex(tobj, v6, v6);
  38441. Glu.gluTessVertex(tobj, v7, v7);
  38442. Glu.gluTessEndContour(tobj);
  38443. Glu.gluTessEndPolygon(tobj);
  38444. </code>
  38445. </para>
  38446. </remarks>
  38447. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38448. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38449. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38450. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38451. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38452. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38453. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38454. </member>
  38455. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Int32[0:,0:,0:])">
  38456. <summary>
  38457. Delimits a polygon description.
  38458. </summary>
  38459. <param name="tess">
  38460. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38461. </param>
  38462. <param name="data">
  38463. A pointer to a programmer defined–polygon data structure.
  38464. </param>
  38465. <remarks>
  38466. <para>
  38467. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38468. definition of a convex, concave or self-intersecting polygon. Within each
  38469. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38470. be one or more calls to
  38471. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38472. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38473. The vertices specify a closed contour (the last vertex of each contour is
  38474. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38475. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38476. reference pages for more details.
  38477. </para>
  38478. <para>
  38479. <i>data</i> is a pointer to a user-defined data structure. If the
  38480. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38481. then this pointer is returned to the callback function(s). Thus, it is a
  38482. convenient way to store per-polygon information.
  38483. </para>
  38484. <para>
  38485. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38486. and the resulting triangles are described through callbacks. See
  38487. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38488. </para>
  38489. <para>
  38490. <b>EXAMPLE</b>
  38491. </para>
  38492. <para>
  38493. The following describes a quadrilateral with a triangular hole:
  38494. </para>
  38495. <para>
  38496. <code>
  38497. Glu.gluTessBeginPolygon(tobj, null);
  38498. Glu.gluTessBeginContour(tobj);
  38499. Glu.gluTessVertex(tobj, v1, v1);
  38500. Glu.gluTessVertex(tobj, v2, v2);
  38501. Glu.gluTessVertex(tobj, v3, v3);
  38502. Glu.gluTessVertex(tobj, v4, v4);
  38503. Glu.gluTessEndContour(tobj);
  38504. Glu.gluTessBeginContour(tobj);
  38505. Glu.gluTessVertex(tobj, v5, v5);
  38506. Glu.gluTessVertex(tobj, v6, v6);
  38507. Glu.gluTessVertex(tobj, v7, v7);
  38508. Glu.gluTessEndContour(tobj);
  38509. Glu.gluTessEndPolygon(tobj);
  38510. </code>
  38511. </para>
  38512. </remarks>
  38513. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38514. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38515. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38516. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38517. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38518. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38519. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38520. </member>
  38521. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Single[])">
  38522. <summary>
  38523. Delimits a polygon description.
  38524. </summary>
  38525. <param name="tess">
  38526. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38527. </param>
  38528. <param name="data">
  38529. A pointer to a programmer defined–polygon data structure.
  38530. </param>
  38531. <remarks>
  38532. <para>
  38533. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38534. definition of a convex, concave or self-intersecting polygon. Within each
  38535. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38536. be one or more calls to
  38537. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38538. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38539. The vertices specify a closed contour (the last vertex of each contour is
  38540. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38541. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38542. reference pages for more details.
  38543. </para>
  38544. <para>
  38545. <i>data</i> is a pointer to a user-defined data structure. If the
  38546. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38547. then this pointer is returned to the callback function(s). Thus, it is a
  38548. convenient way to store per-polygon information.
  38549. </para>
  38550. <para>
  38551. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38552. and the resulting triangles are described through callbacks. See
  38553. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38554. </para>
  38555. <para>
  38556. <b>EXAMPLE</b>
  38557. </para>
  38558. <para>
  38559. The following describes a quadrilateral with a triangular hole:
  38560. </para>
  38561. <para>
  38562. <code>
  38563. Glu.gluTessBeginPolygon(tobj, null);
  38564. Glu.gluTessBeginContour(tobj);
  38565. Glu.gluTessVertex(tobj, v1, v1);
  38566. Glu.gluTessVertex(tobj, v2, v2);
  38567. Glu.gluTessVertex(tobj, v3, v3);
  38568. Glu.gluTessVertex(tobj, v4, v4);
  38569. Glu.gluTessEndContour(tobj);
  38570. Glu.gluTessBeginContour(tobj);
  38571. Glu.gluTessVertex(tobj, v5, v5);
  38572. Glu.gluTessVertex(tobj, v6, v6);
  38573. Glu.gluTessVertex(tobj, v7, v7);
  38574. Glu.gluTessEndContour(tobj);
  38575. Glu.gluTessEndPolygon(tobj);
  38576. </code>
  38577. </para>
  38578. </remarks>
  38579. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38580. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38581. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38582. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38583. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38584. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38585. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38586. </member>
  38587. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Single[0:,0:])">
  38588. <summary>
  38589. Delimits a polygon description.
  38590. </summary>
  38591. <param name="tess">
  38592. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38593. </param>
  38594. <param name="data">
  38595. A pointer to a programmer defined–polygon data structure.
  38596. </param>
  38597. <remarks>
  38598. <para>
  38599. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38600. definition of a convex, concave or self-intersecting polygon. Within each
  38601. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38602. be one or more calls to
  38603. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38604. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38605. The vertices specify a closed contour (the last vertex of each contour is
  38606. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38607. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38608. reference pages for more details.
  38609. </para>
  38610. <para>
  38611. <i>data</i> is a pointer to a user-defined data structure. If the
  38612. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38613. then this pointer is returned to the callback function(s). Thus, it is a
  38614. convenient way to store per-polygon information.
  38615. </para>
  38616. <para>
  38617. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38618. and the resulting triangles are described through callbacks. See
  38619. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38620. </para>
  38621. <para>
  38622. <b>EXAMPLE</b>
  38623. </para>
  38624. <para>
  38625. The following describes a quadrilateral with a triangular hole:
  38626. </para>
  38627. <para>
  38628. <code>
  38629. Glu.gluTessBeginPolygon(tobj, null);
  38630. Glu.gluTessBeginContour(tobj);
  38631. Glu.gluTessVertex(tobj, v1, v1);
  38632. Glu.gluTessVertex(tobj, v2, v2);
  38633. Glu.gluTessVertex(tobj, v3, v3);
  38634. Glu.gluTessVertex(tobj, v4, v4);
  38635. Glu.gluTessEndContour(tobj);
  38636. Glu.gluTessBeginContour(tobj);
  38637. Glu.gluTessVertex(tobj, v5, v5);
  38638. Glu.gluTessVertex(tobj, v6, v6);
  38639. Glu.gluTessVertex(tobj, v7, v7);
  38640. Glu.gluTessEndContour(tobj);
  38641. Glu.gluTessEndPolygon(tobj);
  38642. </code>
  38643. </para>
  38644. </remarks>
  38645. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38646. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38647. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38648. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38649. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38650. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38651. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38652. </member>
  38653. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Single[0:,0:,0:])">
  38654. <summary>
  38655. Delimits a polygon description.
  38656. </summary>
  38657. <param name="tess">
  38658. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38659. </param>
  38660. <param name="data">
  38661. A pointer to a programmer defined–polygon data structure.
  38662. </param>
  38663. <remarks>
  38664. <para>
  38665. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38666. definition of a convex, concave or self-intersecting polygon. Within each
  38667. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38668. be one or more calls to
  38669. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38670. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38671. The vertices specify a closed contour (the last vertex of each contour is
  38672. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38673. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38674. reference pages for more details.
  38675. </para>
  38676. <para>
  38677. <i>data</i> is a pointer to a user-defined data structure. If the
  38678. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38679. then this pointer is returned to the callback function(s). Thus, it is a
  38680. convenient way to store per-polygon information.
  38681. </para>
  38682. <para>
  38683. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38684. and the resulting triangles are described through callbacks. See
  38685. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38686. </para>
  38687. <para>
  38688. <b>EXAMPLE</b>
  38689. </para>
  38690. <para>
  38691. The following describes a quadrilateral with a triangular hole:
  38692. </para>
  38693. <para>
  38694. <code>
  38695. Glu.gluTessBeginPolygon(tobj, null);
  38696. Glu.gluTessBeginContour(tobj);
  38697. Glu.gluTessVertex(tobj, v1, v1);
  38698. Glu.gluTessVertex(tobj, v2, v2);
  38699. Glu.gluTessVertex(tobj, v3, v3);
  38700. Glu.gluTessVertex(tobj, v4, v4);
  38701. Glu.gluTessEndContour(tobj);
  38702. Glu.gluTessBeginContour(tobj);
  38703. Glu.gluTessVertex(tobj, v5, v5);
  38704. Glu.gluTessVertex(tobj, v6, v6);
  38705. Glu.gluTessVertex(tobj, v7, v7);
  38706. Glu.gluTessEndContour(tobj);
  38707. Glu.gluTessEndPolygon(tobj);
  38708. </code>
  38709. </para>
  38710. </remarks>
  38711. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38712. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38713. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38714. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38715. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38716. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38717. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38718. </member>
  38719. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.UInt16[])">
  38720. <summary>
  38721. Delimits a polygon description.
  38722. </summary>
  38723. <param name="tess">
  38724. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38725. </param>
  38726. <param name="data">
  38727. A pointer to a programmer defined–polygon data structure.
  38728. </param>
  38729. <remarks>
  38730. <para>
  38731. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38732. definition of a convex, concave or self-intersecting polygon. Within each
  38733. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38734. be one or more calls to
  38735. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38736. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38737. The vertices specify a closed contour (the last vertex of each contour is
  38738. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38739. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38740. reference pages for more details.
  38741. </para>
  38742. <para>
  38743. <i>data</i> is a pointer to a user-defined data structure. If the
  38744. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38745. then this pointer is returned to the callback function(s). Thus, it is a
  38746. convenient way to store per-polygon information.
  38747. </para>
  38748. <para>
  38749. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38750. and the resulting triangles are described through callbacks. See
  38751. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38752. </para>
  38753. <para>
  38754. <b>EXAMPLE</b>
  38755. </para>
  38756. <para>
  38757. The following describes a quadrilateral with a triangular hole:
  38758. </para>
  38759. <para>
  38760. <code>
  38761. Glu.gluTessBeginPolygon(tobj, null);
  38762. Glu.gluTessBeginContour(tobj);
  38763. Glu.gluTessVertex(tobj, v1, v1);
  38764. Glu.gluTessVertex(tobj, v2, v2);
  38765. Glu.gluTessVertex(tobj, v3, v3);
  38766. Glu.gluTessVertex(tobj, v4, v4);
  38767. Glu.gluTessEndContour(tobj);
  38768. Glu.gluTessBeginContour(tobj);
  38769. Glu.gluTessVertex(tobj, v5, v5);
  38770. Glu.gluTessVertex(tobj, v6, v6);
  38771. Glu.gluTessVertex(tobj, v7, v7);
  38772. Glu.gluTessEndContour(tobj);
  38773. Glu.gluTessEndPolygon(tobj);
  38774. </code>
  38775. </para>
  38776. </remarks>
  38777. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38778. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38779. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38780. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38781. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38782. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38783. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38784. </member>
  38785. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.UInt16[0:,0:])">
  38786. <summary>
  38787. Delimits a polygon description.
  38788. </summary>
  38789. <param name="tess">
  38790. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38791. </param>
  38792. <param name="data">
  38793. A pointer to a programmer defined–polygon data structure.
  38794. </param>
  38795. <remarks>
  38796. <para>
  38797. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38798. definition of a convex, concave or self-intersecting polygon. Within each
  38799. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38800. be one or more calls to
  38801. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38802. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38803. The vertices specify a closed contour (the last vertex of each contour is
  38804. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38805. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38806. reference pages for more details.
  38807. </para>
  38808. <para>
  38809. <i>data</i> is a pointer to a user-defined data structure. If the
  38810. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38811. then this pointer is returned to the callback function(s). Thus, it is a
  38812. convenient way to store per-polygon information.
  38813. </para>
  38814. <para>
  38815. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38816. and the resulting triangles are described through callbacks. See
  38817. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38818. </para>
  38819. <para>
  38820. <b>EXAMPLE</b>
  38821. </para>
  38822. <para>
  38823. The following describes a quadrilateral with a triangular hole:
  38824. </para>
  38825. <para>
  38826. <code>
  38827. Glu.gluTessBeginPolygon(tobj, null);
  38828. Glu.gluTessBeginContour(tobj);
  38829. Glu.gluTessVertex(tobj, v1, v1);
  38830. Glu.gluTessVertex(tobj, v2, v2);
  38831. Glu.gluTessVertex(tobj, v3, v3);
  38832. Glu.gluTessVertex(tobj, v4, v4);
  38833. Glu.gluTessEndContour(tobj);
  38834. Glu.gluTessBeginContour(tobj);
  38835. Glu.gluTessVertex(tobj, v5, v5);
  38836. Glu.gluTessVertex(tobj, v6, v6);
  38837. Glu.gluTessVertex(tobj, v7, v7);
  38838. Glu.gluTessEndContour(tobj);
  38839. Glu.gluTessEndPolygon(tobj);
  38840. </code>
  38841. </para>
  38842. </remarks>
  38843. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38844. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38845. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38846. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38847. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38848. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38849. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38850. </member>
  38851. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.UInt16[0:,0:,0:])">
  38852. <summary>
  38853. Delimits a polygon description.
  38854. </summary>
  38855. <param name="tess">
  38856. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38857. </param>
  38858. <param name="data">
  38859. A pointer to a programmer defined–polygon data structure.
  38860. </param>
  38861. <remarks>
  38862. <para>
  38863. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38864. definition of a convex, concave or self-intersecting polygon. Within each
  38865. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38866. be one or more calls to
  38867. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38868. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38869. The vertices specify a closed contour (the last vertex of each contour is
  38870. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38871. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38872. reference pages for more details.
  38873. </para>
  38874. <para>
  38875. <i>data</i> is a pointer to a user-defined data structure. If the
  38876. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38877. then this pointer is returned to the callback function(s). Thus, it is a
  38878. convenient way to store per-polygon information.
  38879. </para>
  38880. <para>
  38881. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38882. and the resulting triangles are described through callbacks. See
  38883. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38884. </para>
  38885. <para>
  38886. <b>EXAMPLE</b>
  38887. </para>
  38888. <para>
  38889. The following describes a quadrilateral with a triangular hole:
  38890. </para>
  38891. <para>
  38892. <code>
  38893. Glu.gluTessBeginPolygon(tobj, null);
  38894. Glu.gluTessBeginContour(tobj);
  38895. Glu.gluTessVertex(tobj, v1, v1);
  38896. Glu.gluTessVertex(tobj, v2, v2);
  38897. Glu.gluTessVertex(tobj, v3, v3);
  38898. Glu.gluTessVertex(tobj, v4, v4);
  38899. Glu.gluTessEndContour(tobj);
  38900. Glu.gluTessBeginContour(tobj);
  38901. Glu.gluTessVertex(tobj, v5, v5);
  38902. Glu.gluTessVertex(tobj, v6, v6);
  38903. Glu.gluTessVertex(tobj, v7, v7);
  38904. Glu.gluTessEndContour(tobj);
  38905. Glu.gluTessEndPolygon(tobj);
  38906. </code>
  38907. </para>
  38908. </remarks>
  38909. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38910. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38911. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38912. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38913. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38914. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38915. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38916. </member>
  38917. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.UInt32[])">
  38918. <summary>
  38919. Delimits a polygon description.
  38920. </summary>
  38921. <param name="tess">
  38922. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38923. </param>
  38924. <param name="data">
  38925. A pointer to a programmer defined–polygon data structure.
  38926. </param>
  38927. <remarks>
  38928. <para>
  38929. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38930. definition of a convex, concave or self-intersecting polygon. Within each
  38931. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38932. be one or more calls to
  38933. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  38934. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  38935. The vertices specify a closed contour (the last vertex of each contour is
  38936. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  38937. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38938. reference pages for more details.
  38939. </para>
  38940. <para>
  38941. <i>data</i> is a pointer to a user-defined data structure. If the
  38942. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  38943. then this pointer is returned to the callback function(s). Thus, it is a
  38944. convenient way to store per-polygon information.
  38945. </para>
  38946. <para>
  38947. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  38948. and the resulting triangles are described through callbacks. See
  38949. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  38950. </para>
  38951. <para>
  38952. <b>EXAMPLE</b>
  38953. </para>
  38954. <para>
  38955. The following describes a quadrilateral with a triangular hole:
  38956. </para>
  38957. <para>
  38958. <code>
  38959. Glu.gluTessBeginPolygon(tobj, null);
  38960. Glu.gluTessBeginContour(tobj);
  38961. Glu.gluTessVertex(tobj, v1, v1);
  38962. Glu.gluTessVertex(tobj, v2, v2);
  38963. Glu.gluTessVertex(tobj, v3, v3);
  38964. Glu.gluTessVertex(tobj, v4, v4);
  38965. Glu.gluTessEndContour(tobj);
  38966. Glu.gluTessBeginContour(tobj);
  38967. Glu.gluTessVertex(tobj, v5, v5);
  38968. Glu.gluTessVertex(tobj, v6, v6);
  38969. Glu.gluTessVertex(tobj, v7, v7);
  38970. Glu.gluTessEndContour(tobj);
  38971. Glu.gluTessEndPolygon(tobj);
  38972. </code>
  38973. </para>
  38974. </remarks>
  38975. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  38976. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  38977. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  38978. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  38979. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  38980. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  38981. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  38982. </member>
  38983. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.UInt32[0:,0:])">
  38984. <summary>
  38985. Delimits a polygon description.
  38986. </summary>
  38987. <param name="tess">
  38988. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  38989. </param>
  38990. <param name="data">
  38991. A pointer to a programmer defined–polygon data structure.
  38992. </param>
  38993. <remarks>
  38994. <para>
  38995. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  38996. definition of a convex, concave or self-intersecting polygon. Within each
  38997. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  38998. be one or more calls to
  38999. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  39000. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  39001. The vertices specify a closed contour (the last vertex of each contour is
  39002. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  39003. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39004. reference pages for more details.
  39005. </para>
  39006. <para>
  39007. <i>data</i> is a pointer to a user-defined data structure. If the
  39008. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  39009. then this pointer is returned to the callback function(s). Thus, it is a
  39010. convenient way to store per-polygon information.
  39011. </para>
  39012. <para>
  39013. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  39014. and the resulting triangles are described through callbacks. See
  39015. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  39016. </para>
  39017. <para>
  39018. <b>EXAMPLE</b>
  39019. </para>
  39020. <para>
  39021. The following describes a quadrilateral with a triangular hole:
  39022. </para>
  39023. <para>
  39024. <code>
  39025. Glu.gluTessBeginPolygon(tobj, null);
  39026. Glu.gluTessBeginContour(tobj);
  39027. Glu.gluTessVertex(tobj, v1, v1);
  39028. Glu.gluTessVertex(tobj, v2, v2);
  39029. Glu.gluTessVertex(tobj, v3, v3);
  39030. Glu.gluTessVertex(tobj, v4, v4);
  39031. Glu.gluTessEndContour(tobj);
  39032. Glu.gluTessBeginContour(tobj);
  39033. Glu.gluTessVertex(tobj, v5, v5);
  39034. Glu.gluTessVertex(tobj, v6, v6);
  39035. Glu.gluTessVertex(tobj, v7, v7);
  39036. Glu.gluTessEndContour(tobj);
  39037. Glu.gluTessEndPolygon(tobj);
  39038. </code>
  39039. </para>
  39040. </remarks>
  39041. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  39042. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39043. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  39044. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  39045. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  39046. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  39047. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  39048. </member>
  39049. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.UInt32[0:,0:,0:])">
  39050. <summary>
  39051. Delimits a polygon description.
  39052. </summary>
  39053. <param name="tess">
  39054. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  39055. </param>
  39056. <param name="data">
  39057. A pointer to a programmer defined–polygon data structure.
  39058. </param>
  39059. <remarks>
  39060. <para>
  39061. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  39062. definition of a convex, concave or self-intersecting polygon. Within each
  39063. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  39064. be one or more calls to
  39065. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  39066. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  39067. The vertices specify a closed contour (the last vertex of each contour is
  39068. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  39069. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39070. reference pages for more details.
  39071. </para>
  39072. <para>
  39073. <i>data</i> is a pointer to a user-defined data structure. If the
  39074. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  39075. then this pointer is returned to the callback function(s). Thus, it is a
  39076. convenient way to store per-polygon information.
  39077. </para>
  39078. <para>
  39079. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  39080. and the resulting triangles are described through callbacks. See
  39081. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  39082. </para>
  39083. <para>
  39084. <b>EXAMPLE</b>
  39085. </para>
  39086. <para>
  39087. The following describes a quadrilateral with a triangular hole:
  39088. </para>
  39089. <para>
  39090. <code>
  39091. Glu.gluTessBeginPolygon(tobj, null);
  39092. Glu.gluTessBeginContour(tobj);
  39093. Glu.gluTessVertex(tobj, v1, v1);
  39094. Glu.gluTessVertex(tobj, v2, v2);
  39095. Glu.gluTessVertex(tobj, v3, v3);
  39096. Glu.gluTessVertex(tobj, v4, v4);
  39097. Glu.gluTessEndContour(tobj);
  39098. Glu.gluTessBeginContour(tobj);
  39099. Glu.gluTessVertex(tobj, v5, v5);
  39100. Glu.gluTessVertex(tobj, v6, v6);
  39101. Glu.gluTessVertex(tobj, v7, v7);
  39102. Glu.gluTessEndContour(tobj);
  39103. Glu.gluTessEndPolygon(tobj);
  39104. </code>
  39105. </para>
  39106. </remarks>
  39107. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  39108. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39109. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  39110. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  39111. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  39112. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  39113. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  39114. </member>
  39115. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.IntPtr)">
  39116. <summary>
  39117. Delimits a polygon description.
  39118. </summary>
  39119. <param name="tess">
  39120. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  39121. </param>
  39122. <param name="data">
  39123. A pointer to a programmer defined–polygon data structure.
  39124. </param>
  39125. <remarks>
  39126. <para>
  39127. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  39128. definition of a convex, concave or self-intersecting polygon. Within each
  39129. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  39130. be one or more calls to
  39131. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  39132. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  39133. The vertices specify a closed contour (the last vertex of each contour is
  39134. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  39135. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39136. reference pages for more details.
  39137. </para>
  39138. <para>
  39139. <i>data</i> is a pointer to a user-defined data structure. If the
  39140. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  39141. then this pointer is returned to the callback function(s). Thus, it is a
  39142. convenient way to store per-polygon information.
  39143. </para>
  39144. <para>
  39145. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  39146. and the resulting triangles are described through callbacks. See
  39147. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  39148. </para>
  39149. <para>
  39150. <b>EXAMPLE</b>
  39151. </para>
  39152. <para>
  39153. The following describes a quadrilateral with a triangular hole:
  39154. </para>
  39155. <para>
  39156. <code>
  39157. Glu.gluTessBeginPolygon(tobj, null);
  39158. Glu.gluTessBeginContour(tobj);
  39159. Glu.gluTessVertex(tobj, v1, v1);
  39160. Glu.gluTessVertex(tobj, v2, v2);
  39161. Glu.gluTessVertex(tobj, v3, v3);
  39162. Glu.gluTessVertex(tobj, v4, v4);
  39163. Glu.gluTessEndContour(tobj);
  39164. Glu.gluTessBeginContour(tobj);
  39165. Glu.gluTessVertex(tobj, v5, v5);
  39166. Glu.gluTessVertex(tobj, v6, v6);
  39167. Glu.gluTessVertex(tobj, v7, v7);
  39168. Glu.gluTessEndContour(tobj);
  39169. Glu.gluTessEndPolygon(tobj);
  39170. </code>
  39171. </para>
  39172. </remarks>
  39173. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  39174. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39175. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  39176. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  39177. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  39178. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  39179. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  39180. </member>
  39181. <member name="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Void*)">
  39182. <summary>
  39183. Delimits a polygon description.
  39184. </summary>
  39185. <param name="tess">
  39186. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  39187. </param>
  39188. <param name="data">
  39189. A pointer to a programmer defined–polygon data structure.
  39190. </param>
  39191. <remarks>
  39192. <para>
  39193. <b>gluTessBeginPolygon</b> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> delimit the
  39194. definition of a convex, concave or self-intersecting polygon. Within each
  39195. <b>gluTessBeginPolygon</b>/<see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> pair, there must
  39196. be one or more calls to
  39197. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  39198. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  39199. The vertices specify a closed contour (the last vertex of each contour is
  39200. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  39201. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39202. reference pages for more details.
  39203. </para>
  39204. <para>
  39205. <i>data</i> is a pointer to a user-defined data structure. If the
  39206. appropriate callback(s) are specified (see <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>),
  39207. then this pointer is returned to the callback function(s). Thus, it is a
  39208. convenient way to store per-polygon information.
  39209. </para>
  39210. <para>
  39211. Once <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called, the polygon is tessellated,
  39212. and the resulting triangles are described through callbacks. See
  39213. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  39214. </para>
  39215. <para>
  39216. <b>EXAMPLE</b>
  39217. </para>
  39218. <para>
  39219. The following describes a quadrilateral with a triangular hole:
  39220. </para>
  39221. <para>
  39222. <code>
  39223. Glu.gluTessBeginPolygon(tobj, null);
  39224. Glu.gluTessBeginContour(tobj);
  39225. Glu.gluTessVertex(tobj, v1, v1);
  39226. Glu.gluTessVertex(tobj, v2, v2);
  39227. Glu.gluTessVertex(tobj, v3, v3);
  39228. Glu.gluTessVertex(tobj, v4, v4);
  39229. Glu.gluTessEndContour(tobj);
  39230. Glu.gluTessBeginContour(tobj);
  39231. Glu.gluTessVertex(tobj, v5, v5);
  39232. Glu.gluTessVertex(tobj, v6, v6);
  39233. Glu.gluTessVertex(tobj, v7, v7);
  39234. Glu.gluTessEndContour(tobj);
  39235. Glu.gluTessEndPolygon(tobj);
  39236. </code>
  39237. </para>
  39238. </remarks>
  39239. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  39240. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39241. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  39242. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  39243. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  39244. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  39245. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  39246. </member>
  39247. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)">
  39248. <summary>
  39249. Defines a callback for a tessellation object.
  39250. </summary>
  39251. <param name="tess">
  39252. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  39253. </param>
  39254. <param name="which">
  39255. <para>
  39256. The callback being defined. The following values are valid:
  39257. </para>
  39258. <para>
  39259. <list type="table">
  39260. <listheader>
  39261. <term>Value</term>
  39262. <description>Description</description>
  39263. </listheader>
  39264. <item>
  39265. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  39266. <description>
  39267. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  39268. indicate the start of a (triangle) primitive. The function takes
  39269. a single argument of type <see cref="T:System.Int32"/>. If the
  39270. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  39271. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  39272. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  39273. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  39274. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  39275. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  39276. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  39277. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  39278. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  39279. </description>
  39280. </item>
  39281. <item>
  39282. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  39283. <description>
  39284. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  39285. that it takes an additional pointer argument. This pointer is
  39286. identical to the opaque pointer provided when
  39287. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39288. prototype for this callback is
  39289. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  39290. </description>
  39291. </item>
  39292. <item>
  39293. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  39294. <description>
  39295. <para>
  39296. The combine callback is called to create a new vertex when
  39297. the tessellation detects an intersection, or wishes to merge
  39298. features. The function takes four arguments: an array of
  39299. three elements each of type <see cref="T:System.Double"/>, an
  39300. array of four pointers, an array of four elements each of
  39301. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  39302. delegate prototype for this callback is
  39303. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  39304. </para>
  39305. <para>
  39306. The vertex is defined as a linear combination of up to four
  39307. existing vertices, stored in <i>vertexData</i>. The
  39308. coefficients of the linear combination are given by
  39309. <i>weight</i>; these weights always add up to 1. All
  39310. vertex pointers are valid even when some of the weights are
  39311. 0. <i>coordinates</i> gives the location of the new vertex.
  39312. </para>
  39313. <para>
  39314. The user must allocate another vertex, interpolate parameters
  39315. using <i>vertexData</i> and <i>weight</i>, and return the new
  39316. vertex pointer in <i>outData</i>. This handle is supplied
  39317. during rendering callbacks. The user is responsible for
  39318. freeing the memory some time after
  39319. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  39320. </para>
  39321. <para>
  39322. For example, if the polygon lies in an arbitrary plane in
  39323. 3-space, and a color is associated with each vertex, the
  39324. <b>GLU_TESS_COMBINE</b> callback might look like this:
  39325. </para>
  39326. <para>
  39327. <code>
  39328. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  39329. VERTEX *newVertex = new_vertex();
  39330. newVertex-&gt;x = coords[0];
  39331. newVertex-&gt;y = coords[1];
  39332. newVertex-&gt;z = coords[2];
  39333. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  39334. w[3]*d[3]-&gt;r;
  39335. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  39336. w[3]*d[3]-&gt;g;
  39337. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  39338. w[3]*d[3]-&gt;b;
  39339. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  39340. w[3]*d[3]-&gt;a;
  39341. *dataOut = newVertex;
  39342. }
  39343. </code>
  39344. </para>
  39345. <para>
  39346. If the tessellation detects an intersection, then the
  39347. <b>GLU_TESS_COMBINE</b> or
  39348. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  39349. must be defined, and it must write a non-NULL pointer into
  39350. <i>outData</i>. Otherwise the
  39351. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  39352. and no output is generated.
  39353. </para>
  39354. </description>
  39355. </item>
  39356. <item>
  39357. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  39358. <description>
  39359. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  39360. that it takes an additional pointer argument. This pointer is
  39361. identical to the opaque pointer provided when
  39362. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39363. prototype for this callback is
  39364. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  39365. </description>
  39366. </item>
  39367. <item>
  39368. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  39369. <description>
  39370. <para>
  39371. The edge flag callback is similar to
  39372. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  39373. boolean flag that indicates which edges lie on the polygon
  39374. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  39375. each vertex that follows begins an edge that lies on the
  39376. polygon boundary, that is, an edge that separates an interior
  39377. region from an exterior one. If the flag is
  39378. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  39379. begins an edge that lies in the polygon interior. The edge
  39380. flag callback (if defined) is invoked before the first
  39381. vertex callback.
  39382. </para>
  39383. <para>
  39384. Since triangle fans and triangle strips do not support edge
  39385. flags, the begin callback is not called with
  39386. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  39387. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  39388. callback is provided. (If the callback is initialized to
  39389. <c>null</c>, there is no impact on performance). Instead,
  39390. the fans and strips are converted to independent triangles.
  39391. The delegate prototype for this callback is
  39392. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  39393. </para>
  39394. </description>
  39395. </item>
  39396. <item>
  39397. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  39398. <description>
  39399. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  39400. that it takes an additional pointer argument. This pointer is
  39401. identical to the opaque pointer provided when
  39402. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39403. prototype for this callback is
  39404. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  39405. </description>
  39406. </item>
  39407. <item>
  39408. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  39409. <description>
  39410. The end callback serves the same purpose as
  39411. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  39412. it takes no arguments. The delegate prototype for this callback
  39413. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  39414. </description>
  39415. </item>
  39416. <item>
  39417. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  39418. <description>
  39419. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  39420. it takes an additional pointer argument. This pointer is
  39421. identical to the opaque pointer provided when
  39422. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39423. prototype for this callback is
  39424. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  39425. </description>
  39426. </item>
  39427. <item>
  39428. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  39429. <description>
  39430. <para>
  39431. The error callback is called when an error is encountered.
  39432. The one argument is of type <see cref="T:System.Int32"/>; it
  39433. indicates the specific error that occurred and will be set to
  39434. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  39435. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  39436. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  39437. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  39438. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  39439. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  39440. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  39441. describing these errors can be retrieved with the
  39442. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  39443. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  39444. </para>
  39445. <para>
  39446. The GLU library will recover from the first four errors by
  39447. inserting the missing call(s).
  39448. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  39449. vertex coordinate exceeded the predefined constant
  39450. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  39451. the value has been clamped. (Coordinate values must be small
  39452. enough so that two can be multiplied together without
  39453. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  39454. indicates that the tessellation detected an intersection
  39455. between two edges in the input data, and the
  39456. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  39457. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  39458. provided. No output is generated.
  39459. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  39460. enough memory so no output is generated.
  39461. </para>
  39462. </description>
  39463. </item>
  39464. <item>
  39465. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  39466. <description>
  39467. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  39468. that it takes an additional pointer argument. This pointer is
  39469. identical to the opaque pointer provided when
  39470. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39471. prototype for this callback is
  39472. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  39473. </description>
  39474. </item>
  39475. <item>
  39476. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  39477. <description>
  39478. The vertex callback is invoked between the begin and end
  39479. callbacks. It is similar to Gl.glVertex*, and it defines the
  39480. vertices of the triangles created by the tessellation process.
  39481. The function takes a pointer as its only argument. This pointer
  39482. is identical to the opaque pointer provided by the user when the
  39483. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  39484. delegate prototype for this callback is
  39485. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  39486. </description>
  39487. </item>
  39488. <item>
  39489. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  39490. <description>
  39491. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  39492. that it takes an additional pointer argument. This pointer is
  39493. identical to the opaque pointer provided when
  39494. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39495. prototype for this callback is
  39496. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  39497. </description>
  39498. </item>
  39499. </list>
  39500. </para>
  39501. </param>
  39502. <param name="func">
  39503. The function to be called.
  39504. </param>
  39505. <remarks>
  39506. <para>
  39507. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  39508. tessellation object. If the specified callback is already defined, then it
  39509. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  39510. becomes undefined.
  39511. </para>
  39512. <para>
  39513. These callbacks are used by the tessellation object to describe how a polygon
  39514. specified by the user is broken into triangles. Note that there are two
  39515. versions of each callback: one with user-specified polygon data and one
  39516. without. If both versions of a particular callback are specified, then the
  39517. callback with user-specified polygon data will be used. Note that the
  39518. <i>polygonData</i> parameter used by some of the functions is a copy of the
  39519. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  39520. called.
  39521. </para>
  39522. <para>
  39523. <b>EXAMPLE</b>
  39524. </para>
  39525. <para>
  39526. You can directly render tessallated polygons as follows:
  39527. </para>
  39528. <para>
  39529. <code>
  39530. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  39531. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  39532. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  39533. Glu.gluTessBeginPolygon(tess, null);
  39534. Glu.gluTessBeginContour(tess);
  39535. Glu.gluTessVertex(tess, v, v);
  39536. . . .
  39537. Glu.gluTessEndContour(tess);
  39538. Glu.gluTessEndPolygon(tess);
  39539. </code>
  39540. </para>
  39541. </remarks>
  39542. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  39543. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  39544. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  39545. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  39546. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  39547. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  39548. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  39549. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  39550. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  39551. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  39552. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  39553. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  39554. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  39555. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  39556. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  39557. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  39558. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39559. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  39560. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  39561. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  39562. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  39563. </member>
  39564. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginDataCallback)">
  39565. <summary>
  39566. Defines a callback for a tessellation object.
  39567. </summary>
  39568. <param name="tess">
  39569. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  39570. </param>
  39571. <param name="which">
  39572. <para>
  39573. The callback being defined. The following values are valid:
  39574. </para>
  39575. <para>
  39576. <list type="table">
  39577. <listheader>
  39578. <term>Value</term>
  39579. <description>Description</description>
  39580. </listheader>
  39581. <item>
  39582. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  39583. <description>
  39584. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  39585. indicate the start of a (triangle) primitive. The function takes
  39586. a single argument of type <see cref="T:System.Int32"/>. If the
  39587. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  39588. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  39589. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  39590. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  39591. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  39592. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  39593. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  39594. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  39595. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  39596. </description>
  39597. </item>
  39598. <item>
  39599. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  39600. <description>
  39601. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  39602. that it takes an additional pointer argument. This pointer is
  39603. identical to the opaque pointer provided when
  39604. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39605. prototype for this callback is
  39606. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  39607. </description>
  39608. </item>
  39609. <item>
  39610. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  39611. <description>
  39612. <para>
  39613. The combine callback is called to create a new vertex when
  39614. the tessellation detects an intersection, or wishes to merge
  39615. features. The function takes four arguments: an array of
  39616. three elements each of type <see cref="T:System.Double"/>, an
  39617. array of four pointers, an array of four elements each of
  39618. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  39619. delegate prototype for this callback is
  39620. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  39621. </para>
  39622. <para>
  39623. The vertex is defined as a linear combination of up to four
  39624. existing vertices, stored in <i>vertexData</i>. The
  39625. coefficients of the linear combination are given by
  39626. <i>weight</i>; these weights always add up to 1. All
  39627. vertex pointers are valid even when some of the weights are
  39628. 0. <i>coordinates</i> gives the location of the new vertex.
  39629. </para>
  39630. <para>
  39631. The user must allocate another vertex, interpolate parameters
  39632. using <i>vertexData</i> and <i>weight</i>, and return the new
  39633. vertex pointer in <i>outData</i>. This handle is supplied
  39634. during rendering callbacks. The user is responsible for
  39635. freeing the memory some time after
  39636. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  39637. </para>
  39638. <para>
  39639. For example, if the polygon lies in an arbitrary plane in
  39640. 3-space, and a color is associated with each vertex, the
  39641. <b>GLU_TESS_COMBINE</b> callback might look like this:
  39642. </para>
  39643. <para>
  39644. <code>
  39645. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  39646. VERTEX *newVertex = new_vertex();
  39647. newVertex-&gt;x = coords[0];
  39648. newVertex-&gt;y = coords[1];
  39649. newVertex-&gt;z = coords[2];
  39650. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  39651. w[3]*d[3]-&gt;r;
  39652. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  39653. w[3]*d[3]-&gt;g;
  39654. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  39655. w[3]*d[3]-&gt;b;
  39656. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  39657. w[3]*d[3]-&gt;a;
  39658. *dataOut = newVertex;
  39659. }
  39660. </code>
  39661. </para>
  39662. <para>
  39663. If the tessellation detects an intersection, then the
  39664. <b>GLU_TESS_COMBINE</b> or
  39665. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  39666. must be defined, and it must write a non-NULL pointer into
  39667. <i>outData</i>. Otherwise the
  39668. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  39669. and no output is generated.
  39670. </para>
  39671. </description>
  39672. </item>
  39673. <item>
  39674. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  39675. <description>
  39676. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  39677. that it takes an additional pointer argument. This pointer is
  39678. identical to the opaque pointer provided when
  39679. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39680. prototype for this callback is
  39681. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  39682. </description>
  39683. </item>
  39684. <item>
  39685. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  39686. <description>
  39687. <para>
  39688. The edge flag callback is similar to
  39689. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  39690. boolean flag that indicates which edges lie on the polygon
  39691. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  39692. each vertex that follows begins an edge that lies on the
  39693. polygon boundary, that is, an edge that separates an interior
  39694. region from an exterior one. If the flag is
  39695. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  39696. begins an edge that lies in the polygon interior. The edge
  39697. flag callback (if defined) is invoked before the first
  39698. vertex callback.
  39699. </para>
  39700. <para>
  39701. Since triangle fans and triangle strips do not support edge
  39702. flags, the begin callback is not called with
  39703. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  39704. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  39705. callback is provided. (If the callback is initialized to
  39706. <c>null</c>, there is no impact on performance). Instead,
  39707. the fans and strips are converted to independent triangles.
  39708. The delegate prototype for this callback is
  39709. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  39710. </para>
  39711. </description>
  39712. </item>
  39713. <item>
  39714. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  39715. <description>
  39716. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  39717. that it takes an additional pointer argument. This pointer is
  39718. identical to the opaque pointer provided when
  39719. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39720. prototype for this callback is
  39721. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  39722. </description>
  39723. </item>
  39724. <item>
  39725. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  39726. <description>
  39727. The end callback serves the same purpose as
  39728. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  39729. it takes no arguments. The delegate prototype for this callback
  39730. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  39731. </description>
  39732. </item>
  39733. <item>
  39734. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  39735. <description>
  39736. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  39737. it takes an additional pointer argument. This pointer is
  39738. identical to the opaque pointer provided when
  39739. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39740. prototype for this callback is
  39741. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  39742. </description>
  39743. </item>
  39744. <item>
  39745. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  39746. <description>
  39747. <para>
  39748. The error callback is called when an error is encountered.
  39749. The one argument is of type <see cref="T:System.Int32"/>; it
  39750. indicates the specific error that occurred and will be set to
  39751. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  39752. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  39753. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  39754. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  39755. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  39756. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  39757. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  39758. describing these errors can be retrieved with the
  39759. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  39760. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  39761. </para>
  39762. <para>
  39763. The GLU library will recover from the first four errors by
  39764. inserting the missing call(s).
  39765. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  39766. vertex coordinate exceeded the predefined constant
  39767. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  39768. the value has been clamped. (Coordinate values must be small
  39769. enough so that two can be multiplied together without
  39770. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  39771. indicates that the tessellation detected an intersection
  39772. between two edges in the input data, and the
  39773. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  39774. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  39775. provided. No output is generated.
  39776. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  39777. enough memory so no output is generated.
  39778. </para>
  39779. </description>
  39780. </item>
  39781. <item>
  39782. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  39783. <description>
  39784. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  39785. that it takes an additional pointer argument. This pointer is
  39786. identical to the opaque pointer provided when
  39787. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39788. prototype for this callback is
  39789. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  39790. </description>
  39791. </item>
  39792. <item>
  39793. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  39794. <description>
  39795. The vertex callback is invoked between the begin and end
  39796. callbacks. It is similar to Gl.glVertex*, and it defines the
  39797. vertices of the triangles created by the tessellation process.
  39798. The function takes a pointer as its only argument. This pointer
  39799. is identical to the opaque pointer provided by the user when the
  39800. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  39801. delegate prototype for this callback is
  39802. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  39803. </description>
  39804. </item>
  39805. <item>
  39806. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  39807. <description>
  39808. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  39809. that it takes an additional pointer argument. This pointer is
  39810. identical to the opaque pointer provided when
  39811. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39812. prototype for this callback is
  39813. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  39814. </description>
  39815. </item>
  39816. </list>
  39817. </para>
  39818. </param>
  39819. <param name="func">
  39820. The function to be called.
  39821. </param>
  39822. <remarks>
  39823. <para>
  39824. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  39825. tessellation object. If the specified callback is already defined, then it
  39826. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  39827. becomes undefined.
  39828. </para>
  39829. <para>
  39830. These callbacks are used by the tessellation object to describe how a polygon
  39831. specified by the user is broken into triangles. Note that there are two
  39832. versions of each callback: one with user-specified polygon data and one
  39833. without. If both versions of a particular callback are specified, then the
  39834. callback with user-specified polygon data will be used. Note that the
  39835. <i>polygonData</i> parameter used by some of the functions is a copy of the
  39836. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  39837. called.
  39838. </para>
  39839. <para>
  39840. <b>EXAMPLE</b>
  39841. </para>
  39842. <para>
  39843. You can directly render tessallated polygons as follows:
  39844. </para>
  39845. <para>
  39846. <code>
  39847. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  39848. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  39849. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  39850. Glu.gluTessBeginPolygon(tess, null);
  39851. Glu.gluTessBeginContour(tess);
  39852. Glu.gluTessVertex(tess, v, v);
  39853. . . .
  39854. Glu.gluTessEndContour(tess);
  39855. Glu.gluTessEndPolygon(tess);
  39856. </code>
  39857. </para>
  39858. </remarks>
  39859. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  39860. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  39861. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  39862. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  39863. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  39864. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  39865. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  39866. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  39867. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  39868. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  39869. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  39870. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  39871. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  39872. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  39873. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  39874. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  39875. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  39876. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  39877. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  39878. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  39879. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  39880. </member>
  39881. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessCombineCallback)">
  39882. <summary>
  39883. Defines a callback for a tessellation object.
  39884. </summary>
  39885. <param name="tess">
  39886. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  39887. </param>
  39888. <param name="which">
  39889. <para>
  39890. The callback being defined. The following values are valid:
  39891. </para>
  39892. <para>
  39893. <list type="table">
  39894. <listheader>
  39895. <term>Value</term>
  39896. <description>Description</description>
  39897. </listheader>
  39898. <item>
  39899. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  39900. <description>
  39901. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  39902. indicate the start of a (triangle) primitive. The function takes
  39903. a single argument of type <see cref="T:System.Int32"/>. If the
  39904. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  39905. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  39906. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  39907. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  39908. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  39909. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  39910. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  39911. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  39912. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  39913. </description>
  39914. </item>
  39915. <item>
  39916. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  39917. <description>
  39918. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  39919. that it takes an additional pointer argument. This pointer is
  39920. identical to the opaque pointer provided when
  39921. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39922. prototype for this callback is
  39923. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  39924. </description>
  39925. </item>
  39926. <item>
  39927. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  39928. <description>
  39929. <para>
  39930. The combine callback is called to create a new vertex when
  39931. the tessellation detects an intersection, or wishes to merge
  39932. features. The function takes four arguments: an array of
  39933. three elements each of type <see cref="T:System.Double"/>, an
  39934. array of four pointers, an array of four elements each of
  39935. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  39936. delegate prototype for this callback is
  39937. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  39938. </para>
  39939. <para>
  39940. The vertex is defined as a linear combination of up to four
  39941. existing vertices, stored in <i>vertexData</i>. The
  39942. coefficients of the linear combination are given by
  39943. <i>weight</i>; these weights always add up to 1. All
  39944. vertex pointers are valid even when some of the weights are
  39945. 0. <i>coordinates</i> gives the location of the new vertex.
  39946. </para>
  39947. <para>
  39948. The user must allocate another vertex, interpolate parameters
  39949. using <i>vertexData</i> and <i>weight</i>, and return the new
  39950. vertex pointer in <i>outData</i>. This handle is supplied
  39951. during rendering callbacks. The user is responsible for
  39952. freeing the memory some time after
  39953. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  39954. </para>
  39955. <para>
  39956. For example, if the polygon lies in an arbitrary plane in
  39957. 3-space, and a color is associated with each vertex, the
  39958. <b>GLU_TESS_COMBINE</b> callback might look like this:
  39959. </para>
  39960. <para>
  39961. <code>
  39962. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  39963. VERTEX *newVertex = new_vertex();
  39964. newVertex-&gt;x = coords[0];
  39965. newVertex-&gt;y = coords[1];
  39966. newVertex-&gt;z = coords[2];
  39967. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  39968. w[3]*d[3]-&gt;r;
  39969. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  39970. w[3]*d[3]-&gt;g;
  39971. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  39972. w[3]*d[3]-&gt;b;
  39973. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  39974. w[3]*d[3]-&gt;a;
  39975. *dataOut = newVertex;
  39976. }
  39977. </code>
  39978. </para>
  39979. <para>
  39980. If the tessellation detects an intersection, then the
  39981. <b>GLU_TESS_COMBINE</b> or
  39982. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  39983. must be defined, and it must write a non-NULL pointer into
  39984. <i>outData</i>. Otherwise the
  39985. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  39986. and no output is generated.
  39987. </para>
  39988. </description>
  39989. </item>
  39990. <item>
  39991. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  39992. <description>
  39993. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  39994. that it takes an additional pointer argument. This pointer is
  39995. identical to the opaque pointer provided when
  39996. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  39997. prototype for this callback is
  39998. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  39999. </description>
  40000. </item>
  40001. <item>
  40002. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  40003. <description>
  40004. <para>
  40005. The edge flag callback is similar to
  40006. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  40007. boolean flag that indicates which edges lie on the polygon
  40008. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  40009. each vertex that follows begins an edge that lies on the
  40010. polygon boundary, that is, an edge that separates an interior
  40011. region from an exterior one. If the flag is
  40012. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  40013. begins an edge that lies in the polygon interior. The edge
  40014. flag callback (if defined) is invoked before the first
  40015. vertex callback.
  40016. </para>
  40017. <para>
  40018. Since triangle fans and triangle strips do not support edge
  40019. flags, the begin callback is not called with
  40020. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  40021. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  40022. callback is provided. (If the callback is initialized to
  40023. <c>null</c>, there is no impact on performance). Instead,
  40024. the fans and strips are converted to independent triangles.
  40025. The delegate prototype for this callback is
  40026. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  40027. </para>
  40028. </description>
  40029. </item>
  40030. <item>
  40031. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  40032. <description>
  40033. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  40034. that it takes an additional pointer argument. This pointer is
  40035. identical to the opaque pointer provided when
  40036. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40037. prototype for this callback is
  40038. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  40039. </description>
  40040. </item>
  40041. <item>
  40042. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  40043. <description>
  40044. The end callback serves the same purpose as
  40045. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  40046. it takes no arguments. The delegate prototype for this callback
  40047. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  40048. </description>
  40049. </item>
  40050. <item>
  40051. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  40052. <description>
  40053. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  40054. it takes an additional pointer argument. This pointer is
  40055. identical to the opaque pointer provided when
  40056. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40057. prototype for this callback is
  40058. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  40059. </description>
  40060. </item>
  40061. <item>
  40062. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  40063. <description>
  40064. <para>
  40065. The error callback is called when an error is encountered.
  40066. The one argument is of type <see cref="T:System.Int32"/>; it
  40067. indicates the specific error that occurred and will be set to
  40068. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  40069. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  40070. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  40071. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  40072. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  40073. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  40074. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  40075. describing these errors can be retrieved with the
  40076. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  40077. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  40078. </para>
  40079. <para>
  40080. The GLU library will recover from the first four errors by
  40081. inserting the missing call(s).
  40082. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  40083. vertex coordinate exceeded the predefined constant
  40084. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  40085. the value has been clamped. (Coordinate values must be small
  40086. enough so that two can be multiplied together without
  40087. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  40088. indicates that the tessellation detected an intersection
  40089. between two edges in the input data, and the
  40090. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  40091. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  40092. provided. No output is generated.
  40093. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  40094. enough memory so no output is generated.
  40095. </para>
  40096. </description>
  40097. </item>
  40098. <item>
  40099. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  40100. <description>
  40101. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  40102. that it takes an additional pointer argument. This pointer is
  40103. identical to the opaque pointer provided when
  40104. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40105. prototype for this callback is
  40106. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  40107. </description>
  40108. </item>
  40109. <item>
  40110. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  40111. <description>
  40112. The vertex callback is invoked between the begin and end
  40113. callbacks. It is similar to Gl.glVertex*, and it defines the
  40114. vertices of the triangles created by the tessellation process.
  40115. The function takes a pointer as its only argument. This pointer
  40116. is identical to the opaque pointer provided by the user when the
  40117. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  40118. delegate prototype for this callback is
  40119. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  40120. </description>
  40121. </item>
  40122. <item>
  40123. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  40124. <description>
  40125. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  40126. that it takes an additional pointer argument. This pointer is
  40127. identical to the opaque pointer provided when
  40128. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40129. prototype for this callback is
  40130. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  40131. </description>
  40132. </item>
  40133. </list>
  40134. </para>
  40135. </param>
  40136. <param name="func">
  40137. The function to be called.
  40138. </param>
  40139. <remarks>
  40140. <para>
  40141. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  40142. tessellation object. If the specified callback is already defined, then it
  40143. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  40144. becomes undefined.
  40145. </para>
  40146. <para>
  40147. These callbacks are used by the tessellation object to describe how a polygon
  40148. specified by the user is broken into triangles. Note that there are two
  40149. versions of each callback: one with user-specified polygon data and one
  40150. without. If both versions of a particular callback are specified, then the
  40151. callback with user-specified polygon data will be used. Note that the
  40152. <i>polygonData</i> parameter used by some of the functions is a copy of the
  40153. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  40154. called.
  40155. </para>
  40156. <para>
  40157. <b>EXAMPLE</b>
  40158. </para>
  40159. <para>
  40160. You can directly render tessallated polygons as follows:
  40161. </para>
  40162. <para>
  40163. <code>
  40164. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  40165. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  40166. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  40167. Glu.gluTessBeginPolygon(tess, null);
  40168. Glu.gluTessBeginContour(tess);
  40169. Glu.gluTessVertex(tess, v, v);
  40170. . . .
  40171. Glu.gluTessEndContour(tess);
  40172. Glu.gluTessEndPolygon(tess);
  40173. </code>
  40174. </para>
  40175. </remarks>
  40176. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  40177. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  40178. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  40179. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  40180. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  40181. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  40182. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  40183. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  40184. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  40185. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  40186. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  40187. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  40188. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  40189. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  40190. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  40191. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  40192. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  40193. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  40194. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  40195. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  40196. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  40197. </member>
  40198. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessCombineCallback1)">
  40199. <summary>
  40200. Defines a callback for a tessellation object.
  40201. </summary>
  40202. <param name="tess">
  40203. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  40204. </param>
  40205. <param name="which">
  40206. <para>
  40207. The callback being defined. The following values are valid:
  40208. </para>
  40209. <para>
  40210. <list type="table">
  40211. <listheader>
  40212. <term>Value</term>
  40213. <description>Description</description>
  40214. </listheader>
  40215. <item>
  40216. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  40217. <description>
  40218. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  40219. indicate the start of a (triangle) primitive. The function takes
  40220. a single argument of type <see cref="T:System.Int32"/>. If the
  40221. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  40222. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  40223. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  40224. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  40225. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  40226. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  40227. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  40228. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  40229. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  40230. </description>
  40231. </item>
  40232. <item>
  40233. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  40234. <description>
  40235. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  40236. that it takes an additional pointer argument. This pointer is
  40237. identical to the opaque pointer provided when
  40238. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40239. prototype for this callback is
  40240. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  40241. </description>
  40242. </item>
  40243. <item>
  40244. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  40245. <description>
  40246. <para>
  40247. The combine callback is called to create a new vertex when
  40248. the tessellation detects an intersection, or wishes to merge
  40249. features. The function takes four arguments: an array of
  40250. three elements each of type <see cref="T:System.Double"/>, an
  40251. array of four pointers, an array of four elements each of
  40252. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  40253. delegate prototype for this callback is
  40254. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  40255. </para>
  40256. <para>
  40257. The vertex is defined as a linear combination of up to four
  40258. existing vertices, stored in <i>vertexData</i>. The
  40259. coefficients of the linear combination are given by
  40260. <i>weight</i>; these weights always add up to 1. All
  40261. vertex pointers are valid even when some of the weights are
  40262. 0. <i>coordinates</i> gives the location of the new vertex.
  40263. </para>
  40264. <para>
  40265. The user must allocate another vertex, interpolate parameters
  40266. using <i>vertexData</i> and <i>weight</i>, and return the new
  40267. vertex pointer in <i>outData</i>. This handle is supplied
  40268. during rendering callbacks. The user is responsible for
  40269. freeing the memory some time after
  40270. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  40271. </para>
  40272. <para>
  40273. For example, if the polygon lies in an arbitrary plane in
  40274. 3-space, and a color is associated with each vertex, the
  40275. <b>GLU_TESS_COMBINE</b> callback might look like this:
  40276. </para>
  40277. <para>
  40278. <code>
  40279. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  40280. VERTEX *newVertex = new_vertex();
  40281. newVertex-&gt;x = coords[0];
  40282. newVertex-&gt;y = coords[1];
  40283. newVertex-&gt;z = coords[2];
  40284. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  40285. w[3]*d[3]-&gt;r;
  40286. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  40287. w[3]*d[3]-&gt;g;
  40288. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  40289. w[3]*d[3]-&gt;b;
  40290. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  40291. w[3]*d[3]-&gt;a;
  40292. *dataOut = newVertex;
  40293. }
  40294. </code>
  40295. </para>
  40296. <para>
  40297. If the tessellation detects an intersection, then the
  40298. <b>GLU_TESS_COMBINE</b> or
  40299. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  40300. must be defined, and it must write a non-NULL pointer into
  40301. <i>outData</i>. Otherwise the
  40302. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  40303. and no output is generated.
  40304. </para>
  40305. </description>
  40306. </item>
  40307. <item>
  40308. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  40309. <description>
  40310. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  40311. that it takes an additional pointer argument. This pointer is
  40312. identical to the opaque pointer provided when
  40313. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40314. prototype for this callback is
  40315. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  40316. </description>
  40317. </item>
  40318. <item>
  40319. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  40320. <description>
  40321. <para>
  40322. The edge flag callback is similar to
  40323. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  40324. boolean flag that indicates which edges lie on the polygon
  40325. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  40326. each vertex that follows begins an edge that lies on the
  40327. polygon boundary, that is, an edge that separates an interior
  40328. region from an exterior one. If the flag is
  40329. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  40330. begins an edge that lies in the polygon interior. The edge
  40331. flag callback (if defined) is invoked before the first
  40332. vertex callback.
  40333. </para>
  40334. <para>
  40335. Since triangle fans and triangle strips do not support edge
  40336. flags, the begin callback is not called with
  40337. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  40338. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  40339. callback is provided. (If the callback is initialized to
  40340. <c>null</c>, there is no impact on performance). Instead,
  40341. the fans and strips are converted to independent triangles.
  40342. The delegate prototype for this callback is
  40343. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  40344. </para>
  40345. </description>
  40346. </item>
  40347. <item>
  40348. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  40349. <description>
  40350. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  40351. that it takes an additional pointer argument. This pointer is
  40352. identical to the opaque pointer provided when
  40353. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40354. prototype for this callback is
  40355. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  40356. </description>
  40357. </item>
  40358. <item>
  40359. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  40360. <description>
  40361. The end callback serves the same purpose as
  40362. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  40363. it takes no arguments. The delegate prototype for this callback
  40364. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  40365. </description>
  40366. </item>
  40367. <item>
  40368. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  40369. <description>
  40370. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  40371. it takes an additional pointer argument. This pointer is
  40372. identical to the opaque pointer provided when
  40373. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40374. prototype for this callback is
  40375. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  40376. </description>
  40377. </item>
  40378. <item>
  40379. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  40380. <description>
  40381. <para>
  40382. The error callback is called when an error is encountered.
  40383. The one argument is of type <see cref="T:System.Int32"/>; it
  40384. indicates the specific error that occurred and will be set to
  40385. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  40386. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  40387. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  40388. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  40389. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  40390. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  40391. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  40392. describing these errors can be retrieved with the
  40393. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  40394. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  40395. </para>
  40396. <para>
  40397. The GLU library will recover from the first four errors by
  40398. inserting the missing call(s).
  40399. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  40400. vertex coordinate exceeded the predefined constant
  40401. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  40402. the value has been clamped. (Coordinate values must be small
  40403. enough so that two can be multiplied together without
  40404. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  40405. indicates that the tessellation detected an intersection
  40406. between two edges in the input data, and the
  40407. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  40408. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  40409. provided. No output is generated.
  40410. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  40411. enough memory so no output is generated.
  40412. </para>
  40413. </description>
  40414. </item>
  40415. <item>
  40416. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  40417. <description>
  40418. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  40419. that it takes an additional pointer argument. This pointer is
  40420. identical to the opaque pointer provided when
  40421. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40422. prototype for this callback is
  40423. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  40424. </description>
  40425. </item>
  40426. <item>
  40427. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  40428. <description>
  40429. The vertex callback is invoked between the begin and end
  40430. callbacks. It is similar to Gl.glVertex*, and it defines the
  40431. vertices of the triangles created by the tessellation process.
  40432. The function takes a pointer as its only argument. This pointer
  40433. is identical to the opaque pointer provided by the user when the
  40434. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  40435. delegate prototype for this callback is
  40436. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  40437. </description>
  40438. </item>
  40439. <item>
  40440. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  40441. <description>
  40442. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  40443. that it takes an additional pointer argument. This pointer is
  40444. identical to the opaque pointer provided when
  40445. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40446. prototype for this callback is
  40447. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  40448. </description>
  40449. </item>
  40450. </list>
  40451. </para>
  40452. </param>
  40453. <param name="func">
  40454. The function to be called.
  40455. </param>
  40456. <remarks>
  40457. <para>
  40458. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  40459. tessellation object. If the specified callback is already defined, then it
  40460. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  40461. becomes undefined.
  40462. </para>
  40463. <para>
  40464. These callbacks are used by the tessellation object to describe how a polygon
  40465. specified by the user is broken into triangles. Note that there are two
  40466. versions of each callback: one with user-specified polygon data and one
  40467. without. If both versions of a particular callback are specified, then the
  40468. callback with user-specified polygon data will be used. Note that the
  40469. <i>polygonData</i> parameter used by some of the functions is a copy of the
  40470. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  40471. called.
  40472. </para>
  40473. <para>
  40474. <b>EXAMPLE</b>
  40475. </para>
  40476. <para>
  40477. You can directly render tessallated polygons as follows:
  40478. </para>
  40479. <para>
  40480. <code>
  40481. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  40482. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  40483. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  40484. Glu.gluTessBeginPolygon(tess, null);
  40485. Glu.gluTessBeginContour(tess);
  40486. Glu.gluTessVertex(tess, v, v);
  40487. . . .
  40488. Glu.gluTessEndContour(tess);
  40489. Glu.gluTessEndPolygon(tess);
  40490. </code>
  40491. </para>
  40492. </remarks>
  40493. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  40494. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  40495. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  40496. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  40497. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  40498. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  40499. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  40500. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  40501. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  40502. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  40503. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  40504. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  40505. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  40506. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  40507. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  40508. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  40509. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  40510. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  40511. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  40512. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  40513. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  40514. </member>
  40515. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessCombineDataCallback)">
  40516. <summary>
  40517. Defines a callback for a tessellation object.
  40518. </summary>
  40519. <param name="tess">
  40520. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  40521. </param>
  40522. <param name="which">
  40523. <para>
  40524. The callback being defined. The following values are valid:
  40525. </para>
  40526. <para>
  40527. <list type="table">
  40528. <listheader>
  40529. <term>Value</term>
  40530. <description>Description</description>
  40531. </listheader>
  40532. <item>
  40533. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  40534. <description>
  40535. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  40536. indicate the start of a (triangle) primitive. The function takes
  40537. a single argument of type <see cref="T:System.Int32"/>. If the
  40538. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  40539. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  40540. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  40541. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  40542. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  40543. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  40544. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  40545. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  40546. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  40547. </description>
  40548. </item>
  40549. <item>
  40550. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  40551. <description>
  40552. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  40553. that it takes an additional pointer argument. This pointer is
  40554. identical to the opaque pointer provided when
  40555. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40556. prototype for this callback is
  40557. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  40558. </description>
  40559. </item>
  40560. <item>
  40561. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  40562. <description>
  40563. <para>
  40564. The combine callback is called to create a new vertex when
  40565. the tessellation detects an intersection, or wishes to merge
  40566. features. The function takes four arguments: an array of
  40567. three elements each of type <see cref="T:System.Double"/>, an
  40568. array of four pointers, an array of four elements each of
  40569. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  40570. delegate prototype for this callback is
  40571. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  40572. </para>
  40573. <para>
  40574. The vertex is defined as a linear combination of up to four
  40575. existing vertices, stored in <i>vertexData</i>. The
  40576. coefficients of the linear combination are given by
  40577. <i>weight</i>; these weights always add up to 1. All
  40578. vertex pointers are valid even when some of the weights are
  40579. 0. <i>coordinates</i> gives the location of the new vertex.
  40580. </para>
  40581. <para>
  40582. The user must allocate another vertex, interpolate parameters
  40583. using <i>vertexData</i> and <i>weight</i>, and return the new
  40584. vertex pointer in <i>outData</i>. This handle is supplied
  40585. during rendering callbacks. The user is responsible for
  40586. freeing the memory some time after
  40587. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  40588. </para>
  40589. <para>
  40590. For example, if the polygon lies in an arbitrary plane in
  40591. 3-space, and a color is associated with each vertex, the
  40592. <b>GLU_TESS_COMBINE</b> callback might look like this:
  40593. </para>
  40594. <para>
  40595. <code>
  40596. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  40597. VERTEX *newVertex = new_vertex();
  40598. newVertex-&gt;x = coords[0];
  40599. newVertex-&gt;y = coords[1];
  40600. newVertex-&gt;z = coords[2];
  40601. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  40602. w[3]*d[3]-&gt;r;
  40603. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  40604. w[3]*d[3]-&gt;g;
  40605. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  40606. w[3]*d[3]-&gt;b;
  40607. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  40608. w[3]*d[3]-&gt;a;
  40609. *dataOut = newVertex;
  40610. }
  40611. </code>
  40612. </para>
  40613. <para>
  40614. If the tessellation detects an intersection, then the
  40615. <b>GLU_TESS_COMBINE</b> or
  40616. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  40617. must be defined, and it must write a non-NULL pointer into
  40618. <i>outData</i>. Otherwise the
  40619. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  40620. and no output is generated.
  40621. </para>
  40622. </description>
  40623. </item>
  40624. <item>
  40625. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  40626. <description>
  40627. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  40628. that it takes an additional pointer argument. This pointer is
  40629. identical to the opaque pointer provided when
  40630. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40631. prototype for this callback is
  40632. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  40633. </description>
  40634. </item>
  40635. <item>
  40636. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  40637. <description>
  40638. <para>
  40639. The edge flag callback is similar to
  40640. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  40641. boolean flag that indicates which edges lie on the polygon
  40642. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  40643. each vertex that follows begins an edge that lies on the
  40644. polygon boundary, that is, an edge that separates an interior
  40645. region from an exterior one. If the flag is
  40646. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  40647. begins an edge that lies in the polygon interior. The edge
  40648. flag callback (if defined) is invoked before the first
  40649. vertex callback.
  40650. </para>
  40651. <para>
  40652. Since triangle fans and triangle strips do not support edge
  40653. flags, the begin callback is not called with
  40654. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  40655. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  40656. callback is provided. (If the callback is initialized to
  40657. <c>null</c>, there is no impact on performance). Instead,
  40658. the fans and strips are converted to independent triangles.
  40659. The delegate prototype for this callback is
  40660. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  40661. </para>
  40662. </description>
  40663. </item>
  40664. <item>
  40665. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  40666. <description>
  40667. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  40668. that it takes an additional pointer argument. This pointer is
  40669. identical to the opaque pointer provided when
  40670. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40671. prototype for this callback is
  40672. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  40673. </description>
  40674. </item>
  40675. <item>
  40676. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  40677. <description>
  40678. The end callback serves the same purpose as
  40679. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  40680. it takes no arguments. The delegate prototype for this callback
  40681. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  40682. </description>
  40683. </item>
  40684. <item>
  40685. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  40686. <description>
  40687. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  40688. it takes an additional pointer argument. This pointer is
  40689. identical to the opaque pointer provided when
  40690. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40691. prototype for this callback is
  40692. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  40693. </description>
  40694. </item>
  40695. <item>
  40696. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  40697. <description>
  40698. <para>
  40699. The error callback is called when an error is encountered.
  40700. The one argument is of type <see cref="T:System.Int32"/>; it
  40701. indicates the specific error that occurred and will be set to
  40702. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  40703. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  40704. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  40705. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  40706. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  40707. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  40708. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  40709. describing these errors can be retrieved with the
  40710. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  40711. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  40712. </para>
  40713. <para>
  40714. The GLU library will recover from the first four errors by
  40715. inserting the missing call(s).
  40716. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  40717. vertex coordinate exceeded the predefined constant
  40718. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  40719. the value has been clamped. (Coordinate values must be small
  40720. enough so that two can be multiplied together without
  40721. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  40722. indicates that the tessellation detected an intersection
  40723. between two edges in the input data, and the
  40724. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  40725. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  40726. provided. No output is generated.
  40727. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  40728. enough memory so no output is generated.
  40729. </para>
  40730. </description>
  40731. </item>
  40732. <item>
  40733. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  40734. <description>
  40735. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  40736. that it takes an additional pointer argument. This pointer is
  40737. identical to the opaque pointer provided when
  40738. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40739. prototype for this callback is
  40740. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  40741. </description>
  40742. </item>
  40743. <item>
  40744. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  40745. <description>
  40746. The vertex callback is invoked between the begin and end
  40747. callbacks. It is similar to Gl.glVertex*, and it defines the
  40748. vertices of the triangles created by the tessellation process.
  40749. The function takes a pointer as its only argument. This pointer
  40750. is identical to the opaque pointer provided by the user when the
  40751. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  40752. delegate prototype for this callback is
  40753. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  40754. </description>
  40755. </item>
  40756. <item>
  40757. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  40758. <description>
  40759. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  40760. that it takes an additional pointer argument. This pointer is
  40761. identical to the opaque pointer provided when
  40762. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40763. prototype for this callback is
  40764. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  40765. </description>
  40766. </item>
  40767. </list>
  40768. </para>
  40769. </param>
  40770. <param name="func">
  40771. The function to be called.
  40772. </param>
  40773. <remarks>
  40774. <para>
  40775. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  40776. tessellation object. If the specified callback is already defined, then it
  40777. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  40778. becomes undefined.
  40779. </para>
  40780. <para>
  40781. These callbacks are used by the tessellation object to describe how a polygon
  40782. specified by the user is broken into triangles. Note that there are two
  40783. versions of each callback: one with user-specified polygon data and one
  40784. without. If both versions of a particular callback are specified, then the
  40785. callback with user-specified polygon data will be used. Note that the
  40786. <i>polygonData</i> parameter used by some of the functions is a copy of the
  40787. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  40788. called.
  40789. </para>
  40790. <para>
  40791. <b>EXAMPLE</b>
  40792. </para>
  40793. <para>
  40794. You can directly render tessallated polygons as follows:
  40795. </para>
  40796. <para>
  40797. <code>
  40798. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  40799. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  40800. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  40801. Glu.gluTessBeginPolygon(tess, null);
  40802. Glu.gluTessBeginContour(tess);
  40803. Glu.gluTessVertex(tess, v, v);
  40804. . . .
  40805. Glu.gluTessEndContour(tess);
  40806. Glu.gluTessEndPolygon(tess);
  40807. </code>
  40808. </para>
  40809. </remarks>
  40810. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  40811. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  40812. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  40813. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  40814. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  40815. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  40816. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  40817. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  40818. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  40819. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  40820. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  40821. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  40822. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  40823. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  40824. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  40825. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  40826. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  40827. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  40828. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  40829. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  40830. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  40831. </member>
  40832. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEdgeFlagCallback)">
  40833. <summary>
  40834. Defines a callback for a tessellation object.
  40835. </summary>
  40836. <param name="tess">
  40837. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  40838. </param>
  40839. <param name="which">
  40840. <para>
  40841. The callback being defined. The following values are valid:
  40842. </para>
  40843. <para>
  40844. <list type="table">
  40845. <listheader>
  40846. <term>Value</term>
  40847. <description>Description</description>
  40848. </listheader>
  40849. <item>
  40850. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  40851. <description>
  40852. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  40853. indicate the start of a (triangle) primitive. The function takes
  40854. a single argument of type <see cref="T:System.Int32"/>. If the
  40855. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  40856. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  40857. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  40858. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  40859. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  40860. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  40861. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  40862. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  40863. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  40864. </description>
  40865. </item>
  40866. <item>
  40867. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  40868. <description>
  40869. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  40870. that it takes an additional pointer argument. This pointer is
  40871. identical to the opaque pointer provided when
  40872. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40873. prototype for this callback is
  40874. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  40875. </description>
  40876. </item>
  40877. <item>
  40878. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  40879. <description>
  40880. <para>
  40881. The combine callback is called to create a new vertex when
  40882. the tessellation detects an intersection, or wishes to merge
  40883. features. The function takes four arguments: an array of
  40884. three elements each of type <see cref="T:System.Double"/>, an
  40885. array of four pointers, an array of four elements each of
  40886. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  40887. delegate prototype for this callback is
  40888. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  40889. </para>
  40890. <para>
  40891. The vertex is defined as a linear combination of up to four
  40892. existing vertices, stored in <i>vertexData</i>. The
  40893. coefficients of the linear combination are given by
  40894. <i>weight</i>; these weights always add up to 1. All
  40895. vertex pointers are valid even when some of the weights are
  40896. 0. <i>coordinates</i> gives the location of the new vertex.
  40897. </para>
  40898. <para>
  40899. The user must allocate another vertex, interpolate parameters
  40900. using <i>vertexData</i> and <i>weight</i>, and return the new
  40901. vertex pointer in <i>outData</i>. This handle is supplied
  40902. during rendering callbacks. The user is responsible for
  40903. freeing the memory some time after
  40904. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  40905. </para>
  40906. <para>
  40907. For example, if the polygon lies in an arbitrary plane in
  40908. 3-space, and a color is associated with each vertex, the
  40909. <b>GLU_TESS_COMBINE</b> callback might look like this:
  40910. </para>
  40911. <para>
  40912. <code>
  40913. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  40914. VERTEX *newVertex = new_vertex();
  40915. newVertex-&gt;x = coords[0];
  40916. newVertex-&gt;y = coords[1];
  40917. newVertex-&gt;z = coords[2];
  40918. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  40919. w[3]*d[3]-&gt;r;
  40920. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  40921. w[3]*d[3]-&gt;g;
  40922. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  40923. w[3]*d[3]-&gt;b;
  40924. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  40925. w[3]*d[3]-&gt;a;
  40926. *dataOut = newVertex;
  40927. }
  40928. </code>
  40929. </para>
  40930. <para>
  40931. If the tessellation detects an intersection, then the
  40932. <b>GLU_TESS_COMBINE</b> or
  40933. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  40934. must be defined, and it must write a non-NULL pointer into
  40935. <i>outData</i>. Otherwise the
  40936. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  40937. and no output is generated.
  40938. </para>
  40939. </description>
  40940. </item>
  40941. <item>
  40942. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  40943. <description>
  40944. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  40945. that it takes an additional pointer argument. This pointer is
  40946. identical to the opaque pointer provided when
  40947. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40948. prototype for this callback is
  40949. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  40950. </description>
  40951. </item>
  40952. <item>
  40953. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  40954. <description>
  40955. <para>
  40956. The edge flag callback is similar to
  40957. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  40958. boolean flag that indicates which edges lie on the polygon
  40959. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  40960. each vertex that follows begins an edge that lies on the
  40961. polygon boundary, that is, an edge that separates an interior
  40962. region from an exterior one. If the flag is
  40963. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  40964. begins an edge that lies in the polygon interior. The edge
  40965. flag callback (if defined) is invoked before the first
  40966. vertex callback.
  40967. </para>
  40968. <para>
  40969. Since triangle fans and triangle strips do not support edge
  40970. flags, the begin callback is not called with
  40971. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  40972. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  40973. callback is provided. (If the callback is initialized to
  40974. <c>null</c>, there is no impact on performance). Instead,
  40975. the fans and strips are converted to independent triangles.
  40976. The delegate prototype for this callback is
  40977. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  40978. </para>
  40979. </description>
  40980. </item>
  40981. <item>
  40982. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  40983. <description>
  40984. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  40985. that it takes an additional pointer argument. This pointer is
  40986. identical to the opaque pointer provided when
  40987. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  40988. prototype for this callback is
  40989. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  40990. </description>
  40991. </item>
  40992. <item>
  40993. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  40994. <description>
  40995. The end callback serves the same purpose as
  40996. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  40997. it takes no arguments. The delegate prototype for this callback
  40998. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  40999. </description>
  41000. </item>
  41001. <item>
  41002. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  41003. <description>
  41004. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  41005. it takes an additional pointer argument. This pointer is
  41006. identical to the opaque pointer provided when
  41007. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41008. prototype for this callback is
  41009. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  41010. </description>
  41011. </item>
  41012. <item>
  41013. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  41014. <description>
  41015. <para>
  41016. The error callback is called when an error is encountered.
  41017. The one argument is of type <see cref="T:System.Int32"/>; it
  41018. indicates the specific error that occurred and will be set to
  41019. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  41020. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  41021. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  41022. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  41023. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  41024. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  41025. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  41026. describing these errors can be retrieved with the
  41027. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  41028. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  41029. </para>
  41030. <para>
  41031. The GLU library will recover from the first four errors by
  41032. inserting the missing call(s).
  41033. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  41034. vertex coordinate exceeded the predefined constant
  41035. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  41036. the value has been clamped. (Coordinate values must be small
  41037. enough so that two can be multiplied together without
  41038. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  41039. indicates that the tessellation detected an intersection
  41040. between two edges in the input data, and the
  41041. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  41042. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  41043. provided. No output is generated.
  41044. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  41045. enough memory so no output is generated.
  41046. </para>
  41047. </description>
  41048. </item>
  41049. <item>
  41050. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  41051. <description>
  41052. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  41053. that it takes an additional pointer argument. This pointer is
  41054. identical to the opaque pointer provided when
  41055. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41056. prototype for this callback is
  41057. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  41058. </description>
  41059. </item>
  41060. <item>
  41061. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  41062. <description>
  41063. The vertex callback is invoked between the begin and end
  41064. callbacks. It is similar to Gl.glVertex*, and it defines the
  41065. vertices of the triangles created by the tessellation process.
  41066. The function takes a pointer as its only argument. This pointer
  41067. is identical to the opaque pointer provided by the user when the
  41068. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  41069. delegate prototype for this callback is
  41070. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  41071. </description>
  41072. </item>
  41073. <item>
  41074. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  41075. <description>
  41076. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  41077. that it takes an additional pointer argument. This pointer is
  41078. identical to the opaque pointer provided when
  41079. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41080. prototype for this callback is
  41081. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  41082. </description>
  41083. </item>
  41084. </list>
  41085. </para>
  41086. </param>
  41087. <param name="func">
  41088. The function to be called.
  41089. </param>
  41090. <remarks>
  41091. <para>
  41092. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  41093. tessellation object. If the specified callback is already defined, then it
  41094. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  41095. becomes undefined.
  41096. </para>
  41097. <para>
  41098. These callbacks are used by the tessellation object to describe how a polygon
  41099. specified by the user is broken into triangles. Note that there are two
  41100. versions of each callback: one with user-specified polygon data and one
  41101. without. If both versions of a particular callback are specified, then the
  41102. callback with user-specified polygon data will be used. Note that the
  41103. <i>polygonData</i> parameter used by some of the functions is a copy of the
  41104. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  41105. called.
  41106. </para>
  41107. <para>
  41108. <b>EXAMPLE</b>
  41109. </para>
  41110. <para>
  41111. You can directly render tessallated polygons as follows:
  41112. </para>
  41113. <para>
  41114. <code>
  41115. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  41116. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  41117. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  41118. Glu.gluTessBeginPolygon(tess, null);
  41119. Glu.gluTessBeginContour(tess);
  41120. Glu.gluTessVertex(tess, v, v);
  41121. . . .
  41122. Glu.gluTessEndContour(tess);
  41123. Glu.gluTessEndPolygon(tess);
  41124. </code>
  41125. </para>
  41126. </remarks>
  41127. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  41128. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  41129. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  41130. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  41131. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  41132. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  41133. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  41134. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  41135. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  41136. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  41137. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  41138. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  41139. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  41140. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  41141. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  41142. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  41143. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  41144. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  41145. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  41146. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  41147. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  41148. </member>
  41149. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEdgeFlagDataCallback)">
  41150. <summary>
  41151. Defines a callback for a tessellation object.
  41152. </summary>
  41153. <param name="tess">
  41154. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  41155. </param>
  41156. <param name="which">
  41157. <para>
  41158. The callback being defined. The following values are valid:
  41159. </para>
  41160. <para>
  41161. <list type="table">
  41162. <listheader>
  41163. <term>Value</term>
  41164. <description>Description</description>
  41165. </listheader>
  41166. <item>
  41167. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  41168. <description>
  41169. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  41170. indicate the start of a (triangle) primitive. The function takes
  41171. a single argument of type <see cref="T:System.Int32"/>. If the
  41172. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  41173. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  41174. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  41175. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  41176. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  41177. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  41178. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  41179. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  41180. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  41181. </description>
  41182. </item>
  41183. <item>
  41184. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  41185. <description>
  41186. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  41187. that it takes an additional pointer argument. This pointer is
  41188. identical to the opaque pointer provided when
  41189. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41190. prototype for this callback is
  41191. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  41192. </description>
  41193. </item>
  41194. <item>
  41195. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  41196. <description>
  41197. <para>
  41198. The combine callback is called to create a new vertex when
  41199. the tessellation detects an intersection, or wishes to merge
  41200. features. The function takes four arguments: an array of
  41201. three elements each of type <see cref="T:System.Double"/>, an
  41202. array of four pointers, an array of four elements each of
  41203. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  41204. delegate prototype for this callback is
  41205. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  41206. </para>
  41207. <para>
  41208. The vertex is defined as a linear combination of up to four
  41209. existing vertices, stored in <i>vertexData</i>. The
  41210. coefficients of the linear combination are given by
  41211. <i>weight</i>; these weights always add up to 1. All
  41212. vertex pointers are valid even when some of the weights are
  41213. 0. <i>coordinates</i> gives the location of the new vertex.
  41214. </para>
  41215. <para>
  41216. The user must allocate another vertex, interpolate parameters
  41217. using <i>vertexData</i> and <i>weight</i>, and return the new
  41218. vertex pointer in <i>outData</i>. This handle is supplied
  41219. during rendering callbacks. The user is responsible for
  41220. freeing the memory some time after
  41221. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  41222. </para>
  41223. <para>
  41224. For example, if the polygon lies in an arbitrary plane in
  41225. 3-space, and a color is associated with each vertex, the
  41226. <b>GLU_TESS_COMBINE</b> callback might look like this:
  41227. </para>
  41228. <para>
  41229. <code>
  41230. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  41231. VERTEX *newVertex = new_vertex();
  41232. newVertex-&gt;x = coords[0];
  41233. newVertex-&gt;y = coords[1];
  41234. newVertex-&gt;z = coords[2];
  41235. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  41236. w[3]*d[3]-&gt;r;
  41237. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  41238. w[3]*d[3]-&gt;g;
  41239. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  41240. w[3]*d[3]-&gt;b;
  41241. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  41242. w[3]*d[3]-&gt;a;
  41243. *dataOut = newVertex;
  41244. }
  41245. </code>
  41246. </para>
  41247. <para>
  41248. If the tessellation detects an intersection, then the
  41249. <b>GLU_TESS_COMBINE</b> or
  41250. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  41251. must be defined, and it must write a non-NULL pointer into
  41252. <i>outData</i>. Otherwise the
  41253. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  41254. and no output is generated.
  41255. </para>
  41256. </description>
  41257. </item>
  41258. <item>
  41259. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  41260. <description>
  41261. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  41262. that it takes an additional pointer argument. This pointer is
  41263. identical to the opaque pointer provided when
  41264. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41265. prototype for this callback is
  41266. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  41267. </description>
  41268. </item>
  41269. <item>
  41270. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  41271. <description>
  41272. <para>
  41273. The edge flag callback is similar to
  41274. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  41275. boolean flag that indicates which edges lie on the polygon
  41276. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  41277. each vertex that follows begins an edge that lies on the
  41278. polygon boundary, that is, an edge that separates an interior
  41279. region from an exterior one. If the flag is
  41280. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  41281. begins an edge that lies in the polygon interior. The edge
  41282. flag callback (if defined) is invoked before the first
  41283. vertex callback.
  41284. </para>
  41285. <para>
  41286. Since triangle fans and triangle strips do not support edge
  41287. flags, the begin callback is not called with
  41288. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  41289. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  41290. callback is provided. (If the callback is initialized to
  41291. <c>null</c>, there is no impact on performance). Instead,
  41292. the fans and strips are converted to independent triangles.
  41293. The delegate prototype for this callback is
  41294. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  41295. </para>
  41296. </description>
  41297. </item>
  41298. <item>
  41299. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  41300. <description>
  41301. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  41302. that it takes an additional pointer argument. This pointer is
  41303. identical to the opaque pointer provided when
  41304. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41305. prototype for this callback is
  41306. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  41307. </description>
  41308. </item>
  41309. <item>
  41310. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  41311. <description>
  41312. The end callback serves the same purpose as
  41313. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  41314. it takes no arguments. The delegate prototype for this callback
  41315. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  41316. </description>
  41317. </item>
  41318. <item>
  41319. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  41320. <description>
  41321. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  41322. it takes an additional pointer argument. This pointer is
  41323. identical to the opaque pointer provided when
  41324. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41325. prototype for this callback is
  41326. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  41327. </description>
  41328. </item>
  41329. <item>
  41330. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  41331. <description>
  41332. <para>
  41333. The error callback is called when an error is encountered.
  41334. The one argument is of type <see cref="T:System.Int32"/>; it
  41335. indicates the specific error that occurred and will be set to
  41336. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  41337. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  41338. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  41339. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  41340. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  41341. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  41342. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  41343. describing these errors can be retrieved with the
  41344. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  41345. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  41346. </para>
  41347. <para>
  41348. The GLU library will recover from the first four errors by
  41349. inserting the missing call(s).
  41350. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  41351. vertex coordinate exceeded the predefined constant
  41352. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  41353. the value has been clamped. (Coordinate values must be small
  41354. enough so that two can be multiplied together without
  41355. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  41356. indicates that the tessellation detected an intersection
  41357. between two edges in the input data, and the
  41358. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  41359. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  41360. provided. No output is generated.
  41361. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  41362. enough memory so no output is generated.
  41363. </para>
  41364. </description>
  41365. </item>
  41366. <item>
  41367. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  41368. <description>
  41369. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  41370. that it takes an additional pointer argument. This pointer is
  41371. identical to the opaque pointer provided when
  41372. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41373. prototype for this callback is
  41374. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  41375. </description>
  41376. </item>
  41377. <item>
  41378. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  41379. <description>
  41380. The vertex callback is invoked between the begin and end
  41381. callbacks. It is similar to Gl.glVertex*, and it defines the
  41382. vertices of the triangles created by the tessellation process.
  41383. The function takes a pointer as its only argument. This pointer
  41384. is identical to the opaque pointer provided by the user when the
  41385. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  41386. delegate prototype for this callback is
  41387. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  41388. </description>
  41389. </item>
  41390. <item>
  41391. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  41392. <description>
  41393. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  41394. that it takes an additional pointer argument. This pointer is
  41395. identical to the opaque pointer provided when
  41396. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41397. prototype for this callback is
  41398. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  41399. </description>
  41400. </item>
  41401. </list>
  41402. </para>
  41403. </param>
  41404. <param name="func">
  41405. The function to be called.
  41406. </param>
  41407. <remarks>
  41408. <para>
  41409. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  41410. tessellation object. If the specified callback is already defined, then it
  41411. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  41412. becomes undefined.
  41413. </para>
  41414. <para>
  41415. These callbacks are used by the tessellation object to describe how a polygon
  41416. specified by the user is broken into triangles. Note that there are two
  41417. versions of each callback: one with user-specified polygon data and one
  41418. without. If both versions of a particular callback are specified, then the
  41419. callback with user-specified polygon data will be used. Note that the
  41420. <i>polygonData</i> parameter used by some of the functions is a copy of the
  41421. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  41422. called.
  41423. </para>
  41424. <para>
  41425. <b>EXAMPLE</b>
  41426. </para>
  41427. <para>
  41428. You can directly render tessallated polygons as follows:
  41429. </para>
  41430. <para>
  41431. <code>
  41432. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  41433. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  41434. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  41435. Glu.gluTessBeginPolygon(tess, null);
  41436. Glu.gluTessBeginContour(tess);
  41437. Glu.gluTessVertex(tess, v, v);
  41438. . . .
  41439. Glu.gluTessEndContour(tess);
  41440. Glu.gluTessEndPolygon(tess);
  41441. </code>
  41442. </para>
  41443. </remarks>
  41444. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  41445. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  41446. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  41447. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  41448. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  41449. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  41450. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  41451. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  41452. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  41453. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  41454. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  41455. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  41456. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  41457. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  41458. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  41459. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  41460. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  41461. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  41462. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  41463. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  41464. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  41465. </member>
  41466. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEndCallback)">
  41467. <summary>
  41468. Defines a callback for a tessellation object.
  41469. </summary>
  41470. <param name="tess">
  41471. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  41472. </param>
  41473. <param name="which">
  41474. <para>
  41475. The callback being defined. The following values are valid:
  41476. </para>
  41477. <para>
  41478. <list type="table">
  41479. <listheader>
  41480. <term>Value</term>
  41481. <description>Description</description>
  41482. </listheader>
  41483. <item>
  41484. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  41485. <description>
  41486. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  41487. indicate the start of a (triangle) primitive. The function takes
  41488. a single argument of type <see cref="T:System.Int32"/>. If the
  41489. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  41490. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  41491. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  41492. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  41493. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  41494. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  41495. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  41496. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  41497. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  41498. </description>
  41499. </item>
  41500. <item>
  41501. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  41502. <description>
  41503. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  41504. that it takes an additional pointer argument. This pointer is
  41505. identical to the opaque pointer provided when
  41506. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41507. prototype for this callback is
  41508. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  41509. </description>
  41510. </item>
  41511. <item>
  41512. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  41513. <description>
  41514. <para>
  41515. The combine callback is called to create a new vertex when
  41516. the tessellation detects an intersection, or wishes to merge
  41517. features. The function takes four arguments: an array of
  41518. three elements each of type <see cref="T:System.Double"/>, an
  41519. array of four pointers, an array of four elements each of
  41520. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  41521. delegate prototype for this callback is
  41522. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  41523. </para>
  41524. <para>
  41525. The vertex is defined as a linear combination of up to four
  41526. existing vertices, stored in <i>vertexData</i>. The
  41527. coefficients of the linear combination are given by
  41528. <i>weight</i>; these weights always add up to 1. All
  41529. vertex pointers are valid even when some of the weights are
  41530. 0. <i>coordinates</i> gives the location of the new vertex.
  41531. </para>
  41532. <para>
  41533. The user must allocate another vertex, interpolate parameters
  41534. using <i>vertexData</i> and <i>weight</i>, and return the new
  41535. vertex pointer in <i>outData</i>. This handle is supplied
  41536. during rendering callbacks. The user is responsible for
  41537. freeing the memory some time after
  41538. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  41539. </para>
  41540. <para>
  41541. For example, if the polygon lies in an arbitrary plane in
  41542. 3-space, and a color is associated with each vertex, the
  41543. <b>GLU_TESS_COMBINE</b> callback might look like this:
  41544. </para>
  41545. <para>
  41546. <code>
  41547. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  41548. VERTEX *newVertex = new_vertex();
  41549. newVertex-&gt;x = coords[0];
  41550. newVertex-&gt;y = coords[1];
  41551. newVertex-&gt;z = coords[2];
  41552. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  41553. w[3]*d[3]-&gt;r;
  41554. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  41555. w[3]*d[3]-&gt;g;
  41556. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  41557. w[3]*d[3]-&gt;b;
  41558. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  41559. w[3]*d[3]-&gt;a;
  41560. *dataOut = newVertex;
  41561. }
  41562. </code>
  41563. </para>
  41564. <para>
  41565. If the tessellation detects an intersection, then the
  41566. <b>GLU_TESS_COMBINE</b> or
  41567. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  41568. must be defined, and it must write a non-NULL pointer into
  41569. <i>outData</i>. Otherwise the
  41570. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  41571. and no output is generated.
  41572. </para>
  41573. </description>
  41574. </item>
  41575. <item>
  41576. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  41577. <description>
  41578. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  41579. that it takes an additional pointer argument. This pointer is
  41580. identical to the opaque pointer provided when
  41581. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41582. prototype for this callback is
  41583. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  41584. </description>
  41585. </item>
  41586. <item>
  41587. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  41588. <description>
  41589. <para>
  41590. The edge flag callback is similar to
  41591. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  41592. boolean flag that indicates which edges lie on the polygon
  41593. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  41594. each vertex that follows begins an edge that lies on the
  41595. polygon boundary, that is, an edge that separates an interior
  41596. region from an exterior one. If the flag is
  41597. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  41598. begins an edge that lies in the polygon interior. The edge
  41599. flag callback (if defined) is invoked before the first
  41600. vertex callback.
  41601. </para>
  41602. <para>
  41603. Since triangle fans and triangle strips do not support edge
  41604. flags, the begin callback is not called with
  41605. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  41606. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  41607. callback is provided. (If the callback is initialized to
  41608. <c>null</c>, there is no impact on performance). Instead,
  41609. the fans and strips are converted to independent triangles.
  41610. The delegate prototype for this callback is
  41611. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  41612. </para>
  41613. </description>
  41614. </item>
  41615. <item>
  41616. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  41617. <description>
  41618. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  41619. that it takes an additional pointer argument. This pointer is
  41620. identical to the opaque pointer provided when
  41621. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41622. prototype for this callback is
  41623. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  41624. </description>
  41625. </item>
  41626. <item>
  41627. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  41628. <description>
  41629. The end callback serves the same purpose as
  41630. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  41631. it takes no arguments. The delegate prototype for this callback
  41632. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  41633. </description>
  41634. </item>
  41635. <item>
  41636. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  41637. <description>
  41638. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  41639. it takes an additional pointer argument. This pointer is
  41640. identical to the opaque pointer provided when
  41641. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41642. prototype for this callback is
  41643. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  41644. </description>
  41645. </item>
  41646. <item>
  41647. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  41648. <description>
  41649. <para>
  41650. The error callback is called when an error is encountered.
  41651. The one argument is of type <see cref="T:System.Int32"/>; it
  41652. indicates the specific error that occurred and will be set to
  41653. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  41654. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  41655. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  41656. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  41657. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  41658. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  41659. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  41660. describing these errors can be retrieved with the
  41661. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  41662. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  41663. </para>
  41664. <para>
  41665. The GLU library will recover from the first four errors by
  41666. inserting the missing call(s).
  41667. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  41668. vertex coordinate exceeded the predefined constant
  41669. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  41670. the value has been clamped. (Coordinate values must be small
  41671. enough so that two can be multiplied together without
  41672. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  41673. indicates that the tessellation detected an intersection
  41674. between two edges in the input data, and the
  41675. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  41676. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  41677. provided. No output is generated.
  41678. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  41679. enough memory so no output is generated.
  41680. </para>
  41681. </description>
  41682. </item>
  41683. <item>
  41684. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  41685. <description>
  41686. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  41687. that it takes an additional pointer argument. This pointer is
  41688. identical to the opaque pointer provided when
  41689. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41690. prototype for this callback is
  41691. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  41692. </description>
  41693. </item>
  41694. <item>
  41695. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  41696. <description>
  41697. The vertex callback is invoked between the begin and end
  41698. callbacks. It is similar to Gl.glVertex*, and it defines the
  41699. vertices of the triangles created by the tessellation process.
  41700. The function takes a pointer as its only argument. This pointer
  41701. is identical to the opaque pointer provided by the user when the
  41702. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  41703. delegate prototype for this callback is
  41704. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  41705. </description>
  41706. </item>
  41707. <item>
  41708. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  41709. <description>
  41710. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  41711. that it takes an additional pointer argument. This pointer is
  41712. identical to the opaque pointer provided when
  41713. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41714. prototype for this callback is
  41715. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  41716. </description>
  41717. </item>
  41718. </list>
  41719. </para>
  41720. </param>
  41721. <param name="func">
  41722. The function to be called.
  41723. </param>
  41724. <remarks>
  41725. <para>
  41726. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  41727. tessellation object. If the specified callback is already defined, then it
  41728. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  41729. becomes undefined.
  41730. </para>
  41731. <para>
  41732. These callbacks are used by the tessellation object to describe how a polygon
  41733. specified by the user is broken into triangles. Note that there are two
  41734. versions of each callback: one with user-specified polygon data and one
  41735. without. If both versions of a particular callback are specified, then the
  41736. callback with user-specified polygon data will be used. Note that the
  41737. <i>polygonData</i> parameter used by some of the functions is a copy of the
  41738. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  41739. called.
  41740. </para>
  41741. <para>
  41742. <b>EXAMPLE</b>
  41743. </para>
  41744. <para>
  41745. You can directly render tessallated polygons as follows:
  41746. </para>
  41747. <para>
  41748. <code>
  41749. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  41750. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  41751. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  41752. Glu.gluTessBeginPolygon(tess, null);
  41753. Glu.gluTessBeginContour(tess);
  41754. Glu.gluTessVertex(tess, v, v);
  41755. . . .
  41756. Glu.gluTessEndContour(tess);
  41757. Glu.gluTessEndPolygon(tess);
  41758. </code>
  41759. </para>
  41760. </remarks>
  41761. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  41762. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  41763. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  41764. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  41765. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  41766. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  41767. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  41768. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  41769. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  41770. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  41771. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  41772. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  41773. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  41774. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  41775. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  41776. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  41777. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  41778. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  41779. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  41780. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  41781. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  41782. </member>
  41783. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessEndDataCallback)">
  41784. <summary>
  41785. Defines a callback for a tessellation object.
  41786. </summary>
  41787. <param name="tess">
  41788. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  41789. </param>
  41790. <param name="which">
  41791. <para>
  41792. The callback being defined. The following values are valid:
  41793. </para>
  41794. <para>
  41795. <list type="table">
  41796. <listheader>
  41797. <term>Value</term>
  41798. <description>Description</description>
  41799. </listheader>
  41800. <item>
  41801. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  41802. <description>
  41803. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  41804. indicate the start of a (triangle) primitive. The function takes
  41805. a single argument of type <see cref="T:System.Int32"/>. If the
  41806. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  41807. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  41808. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  41809. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  41810. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  41811. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  41812. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  41813. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  41814. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  41815. </description>
  41816. </item>
  41817. <item>
  41818. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  41819. <description>
  41820. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  41821. that it takes an additional pointer argument. This pointer is
  41822. identical to the opaque pointer provided when
  41823. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41824. prototype for this callback is
  41825. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  41826. </description>
  41827. </item>
  41828. <item>
  41829. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  41830. <description>
  41831. <para>
  41832. The combine callback is called to create a new vertex when
  41833. the tessellation detects an intersection, or wishes to merge
  41834. features. The function takes four arguments: an array of
  41835. three elements each of type <see cref="T:System.Double"/>, an
  41836. array of four pointers, an array of four elements each of
  41837. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  41838. delegate prototype for this callback is
  41839. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  41840. </para>
  41841. <para>
  41842. The vertex is defined as a linear combination of up to four
  41843. existing vertices, stored in <i>vertexData</i>. The
  41844. coefficients of the linear combination are given by
  41845. <i>weight</i>; these weights always add up to 1. All
  41846. vertex pointers are valid even when some of the weights are
  41847. 0. <i>coordinates</i> gives the location of the new vertex.
  41848. </para>
  41849. <para>
  41850. The user must allocate another vertex, interpolate parameters
  41851. using <i>vertexData</i> and <i>weight</i>, and return the new
  41852. vertex pointer in <i>outData</i>. This handle is supplied
  41853. during rendering callbacks. The user is responsible for
  41854. freeing the memory some time after
  41855. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  41856. </para>
  41857. <para>
  41858. For example, if the polygon lies in an arbitrary plane in
  41859. 3-space, and a color is associated with each vertex, the
  41860. <b>GLU_TESS_COMBINE</b> callback might look like this:
  41861. </para>
  41862. <para>
  41863. <code>
  41864. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  41865. VERTEX *newVertex = new_vertex();
  41866. newVertex-&gt;x = coords[0];
  41867. newVertex-&gt;y = coords[1];
  41868. newVertex-&gt;z = coords[2];
  41869. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  41870. w[3]*d[3]-&gt;r;
  41871. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  41872. w[3]*d[3]-&gt;g;
  41873. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  41874. w[3]*d[3]-&gt;b;
  41875. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  41876. w[3]*d[3]-&gt;a;
  41877. *dataOut = newVertex;
  41878. }
  41879. </code>
  41880. </para>
  41881. <para>
  41882. If the tessellation detects an intersection, then the
  41883. <b>GLU_TESS_COMBINE</b> or
  41884. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  41885. must be defined, and it must write a non-NULL pointer into
  41886. <i>outData</i>. Otherwise the
  41887. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  41888. and no output is generated.
  41889. </para>
  41890. </description>
  41891. </item>
  41892. <item>
  41893. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  41894. <description>
  41895. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  41896. that it takes an additional pointer argument. This pointer is
  41897. identical to the opaque pointer provided when
  41898. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41899. prototype for this callback is
  41900. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  41901. </description>
  41902. </item>
  41903. <item>
  41904. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  41905. <description>
  41906. <para>
  41907. The edge flag callback is similar to
  41908. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  41909. boolean flag that indicates which edges lie on the polygon
  41910. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  41911. each vertex that follows begins an edge that lies on the
  41912. polygon boundary, that is, an edge that separates an interior
  41913. region from an exterior one. If the flag is
  41914. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  41915. begins an edge that lies in the polygon interior. The edge
  41916. flag callback (if defined) is invoked before the first
  41917. vertex callback.
  41918. </para>
  41919. <para>
  41920. Since triangle fans and triangle strips do not support edge
  41921. flags, the begin callback is not called with
  41922. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  41923. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  41924. callback is provided. (If the callback is initialized to
  41925. <c>null</c>, there is no impact on performance). Instead,
  41926. the fans and strips are converted to independent triangles.
  41927. The delegate prototype for this callback is
  41928. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  41929. </para>
  41930. </description>
  41931. </item>
  41932. <item>
  41933. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  41934. <description>
  41935. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  41936. that it takes an additional pointer argument. This pointer is
  41937. identical to the opaque pointer provided when
  41938. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41939. prototype for this callback is
  41940. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  41941. </description>
  41942. </item>
  41943. <item>
  41944. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  41945. <description>
  41946. The end callback serves the same purpose as
  41947. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  41948. it takes no arguments. The delegate prototype for this callback
  41949. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  41950. </description>
  41951. </item>
  41952. <item>
  41953. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  41954. <description>
  41955. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  41956. it takes an additional pointer argument. This pointer is
  41957. identical to the opaque pointer provided when
  41958. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  41959. prototype for this callback is
  41960. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  41961. </description>
  41962. </item>
  41963. <item>
  41964. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  41965. <description>
  41966. <para>
  41967. The error callback is called when an error is encountered.
  41968. The one argument is of type <see cref="T:System.Int32"/>; it
  41969. indicates the specific error that occurred and will be set to
  41970. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  41971. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  41972. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  41973. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  41974. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  41975. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  41976. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  41977. describing these errors can be retrieved with the
  41978. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  41979. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  41980. </para>
  41981. <para>
  41982. The GLU library will recover from the first four errors by
  41983. inserting the missing call(s).
  41984. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  41985. vertex coordinate exceeded the predefined constant
  41986. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  41987. the value has been clamped. (Coordinate values must be small
  41988. enough so that two can be multiplied together without
  41989. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  41990. indicates that the tessellation detected an intersection
  41991. between two edges in the input data, and the
  41992. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  41993. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  41994. provided. No output is generated.
  41995. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  41996. enough memory so no output is generated.
  41997. </para>
  41998. </description>
  41999. </item>
  42000. <item>
  42001. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  42002. <description>
  42003. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  42004. that it takes an additional pointer argument. This pointer is
  42005. identical to the opaque pointer provided when
  42006. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42007. prototype for this callback is
  42008. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  42009. </description>
  42010. </item>
  42011. <item>
  42012. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  42013. <description>
  42014. The vertex callback is invoked between the begin and end
  42015. callbacks. It is similar to Gl.glVertex*, and it defines the
  42016. vertices of the triangles created by the tessellation process.
  42017. The function takes a pointer as its only argument. This pointer
  42018. is identical to the opaque pointer provided by the user when the
  42019. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  42020. delegate prototype for this callback is
  42021. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  42022. </description>
  42023. </item>
  42024. <item>
  42025. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  42026. <description>
  42027. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  42028. that it takes an additional pointer argument. This pointer is
  42029. identical to the opaque pointer provided when
  42030. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42031. prototype for this callback is
  42032. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  42033. </description>
  42034. </item>
  42035. </list>
  42036. </para>
  42037. </param>
  42038. <param name="func">
  42039. The function to be called.
  42040. </param>
  42041. <remarks>
  42042. <para>
  42043. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  42044. tessellation object. If the specified callback is already defined, then it
  42045. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  42046. becomes undefined.
  42047. </para>
  42048. <para>
  42049. These callbacks are used by the tessellation object to describe how a polygon
  42050. specified by the user is broken into triangles. Note that there are two
  42051. versions of each callback: one with user-specified polygon data and one
  42052. without. If both versions of a particular callback are specified, then the
  42053. callback with user-specified polygon data will be used. Note that the
  42054. <i>polygonData</i> parameter used by some of the functions is a copy of the
  42055. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  42056. called.
  42057. </para>
  42058. <para>
  42059. <b>EXAMPLE</b>
  42060. </para>
  42061. <para>
  42062. You can directly render tessallated polygons as follows:
  42063. </para>
  42064. <para>
  42065. <code>
  42066. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  42067. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  42068. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  42069. Glu.gluTessBeginPolygon(tess, null);
  42070. Glu.gluTessBeginContour(tess);
  42071. Glu.gluTessVertex(tess, v, v);
  42072. . . .
  42073. Glu.gluTessEndContour(tess);
  42074. Glu.gluTessEndPolygon(tess);
  42075. </code>
  42076. </para>
  42077. </remarks>
  42078. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  42079. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  42080. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  42081. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  42082. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  42083. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  42084. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  42085. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  42086. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  42087. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  42088. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  42089. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  42090. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  42091. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  42092. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  42093. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  42094. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  42095. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  42096. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  42097. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  42098. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  42099. </member>
  42100. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessErrorCallback)">
  42101. <summary>
  42102. Defines a callback for a tessellation object.
  42103. </summary>
  42104. <param name="tess">
  42105. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  42106. </param>
  42107. <param name="which">
  42108. <para>
  42109. The callback being defined. The following values are valid:
  42110. </para>
  42111. <para>
  42112. <list type="table">
  42113. <listheader>
  42114. <term>Value</term>
  42115. <description>Description</description>
  42116. </listheader>
  42117. <item>
  42118. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  42119. <description>
  42120. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  42121. indicate the start of a (triangle) primitive. The function takes
  42122. a single argument of type <see cref="T:System.Int32"/>. If the
  42123. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  42124. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  42125. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  42126. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  42127. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  42128. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  42129. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  42130. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  42131. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  42132. </description>
  42133. </item>
  42134. <item>
  42135. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  42136. <description>
  42137. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  42138. that it takes an additional pointer argument. This pointer is
  42139. identical to the opaque pointer provided when
  42140. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42141. prototype for this callback is
  42142. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  42143. </description>
  42144. </item>
  42145. <item>
  42146. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  42147. <description>
  42148. <para>
  42149. The combine callback is called to create a new vertex when
  42150. the tessellation detects an intersection, or wishes to merge
  42151. features. The function takes four arguments: an array of
  42152. three elements each of type <see cref="T:System.Double"/>, an
  42153. array of four pointers, an array of four elements each of
  42154. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  42155. delegate prototype for this callback is
  42156. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  42157. </para>
  42158. <para>
  42159. The vertex is defined as a linear combination of up to four
  42160. existing vertices, stored in <i>vertexData</i>. The
  42161. coefficients of the linear combination are given by
  42162. <i>weight</i>; these weights always add up to 1. All
  42163. vertex pointers are valid even when some of the weights are
  42164. 0. <i>coordinates</i> gives the location of the new vertex.
  42165. </para>
  42166. <para>
  42167. The user must allocate another vertex, interpolate parameters
  42168. using <i>vertexData</i> and <i>weight</i>, and return the new
  42169. vertex pointer in <i>outData</i>. This handle is supplied
  42170. during rendering callbacks. The user is responsible for
  42171. freeing the memory some time after
  42172. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  42173. </para>
  42174. <para>
  42175. For example, if the polygon lies in an arbitrary plane in
  42176. 3-space, and a color is associated with each vertex, the
  42177. <b>GLU_TESS_COMBINE</b> callback might look like this:
  42178. </para>
  42179. <para>
  42180. <code>
  42181. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  42182. VERTEX *newVertex = new_vertex();
  42183. newVertex-&gt;x = coords[0];
  42184. newVertex-&gt;y = coords[1];
  42185. newVertex-&gt;z = coords[2];
  42186. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  42187. w[3]*d[3]-&gt;r;
  42188. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  42189. w[3]*d[3]-&gt;g;
  42190. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  42191. w[3]*d[3]-&gt;b;
  42192. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  42193. w[3]*d[3]-&gt;a;
  42194. *dataOut = newVertex;
  42195. }
  42196. </code>
  42197. </para>
  42198. <para>
  42199. If the tessellation detects an intersection, then the
  42200. <b>GLU_TESS_COMBINE</b> or
  42201. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  42202. must be defined, and it must write a non-NULL pointer into
  42203. <i>outData</i>. Otherwise the
  42204. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  42205. and no output is generated.
  42206. </para>
  42207. </description>
  42208. </item>
  42209. <item>
  42210. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  42211. <description>
  42212. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  42213. that it takes an additional pointer argument. This pointer is
  42214. identical to the opaque pointer provided when
  42215. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42216. prototype for this callback is
  42217. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  42218. </description>
  42219. </item>
  42220. <item>
  42221. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  42222. <description>
  42223. <para>
  42224. The edge flag callback is similar to
  42225. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  42226. boolean flag that indicates which edges lie on the polygon
  42227. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  42228. each vertex that follows begins an edge that lies on the
  42229. polygon boundary, that is, an edge that separates an interior
  42230. region from an exterior one. If the flag is
  42231. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  42232. begins an edge that lies in the polygon interior. The edge
  42233. flag callback (if defined) is invoked before the first
  42234. vertex callback.
  42235. </para>
  42236. <para>
  42237. Since triangle fans and triangle strips do not support edge
  42238. flags, the begin callback is not called with
  42239. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  42240. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  42241. callback is provided. (If the callback is initialized to
  42242. <c>null</c>, there is no impact on performance). Instead,
  42243. the fans and strips are converted to independent triangles.
  42244. The delegate prototype for this callback is
  42245. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  42246. </para>
  42247. </description>
  42248. </item>
  42249. <item>
  42250. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  42251. <description>
  42252. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  42253. that it takes an additional pointer argument. This pointer is
  42254. identical to the opaque pointer provided when
  42255. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42256. prototype for this callback is
  42257. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  42258. </description>
  42259. </item>
  42260. <item>
  42261. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  42262. <description>
  42263. The end callback serves the same purpose as
  42264. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  42265. it takes no arguments. The delegate prototype for this callback
  42266. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  42267. </description>
  42268. </item>
  42269. <item>
  42270. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  42271. <description>
  42272. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  42273. it takes an additional pointer argument. This pointer is
  42274. identical to the opaque pointer provided when
  42275. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42276. prototype for this callback is
  42277. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  42278. </description>
  42279. </item>
  42280. <item>
  42281. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  42282. <description>
  42283. <para>
  42284. The error callback is called when an error is encountered.
  42285. The one argument is of type <see cref="T:System.Int32"/>; it
  42286. indicates the specific error that occurred and will be set to
  42287. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  42288. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  42289. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  42290. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  42291. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  42292. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  42293. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  42294. describing these errors can be retrieved with the
  42295. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  42296. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  42297. </para>
  42298. <para>
  42299. The GLU library will recover from the first four errors by
  42300. inserting the missing call(s).
  42301. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  42302. vertex coordinate exceeded the predefined constant
  42303. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  42304. the value has been clamped. (Coordinate values must be small
  42305. enough so that two can be multiplied together without
  42306. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  42307. indicates that the tessellation detected an intersection
  42308. between two edges in the input data, and the
  42309. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  42310. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  42311. provided. No output is generated.
  42312. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  42313. enough memory so no output is generated.
  42314. </para>
  42315. </description>
  42316. </item>
  42317. <item>
  42318. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  42319. <description>
  42320. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  42321. that it takes an additional pointer argument. This pointer is
  42322. identical to the opaque pointer provided when
  42323. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42324. prototype for this callback is
  42325. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  42326. </description>
  42327. </item>
  42328. <item>
  42329. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  42330. <description>
  42331. The vertex callback is invoked between the begin and end
  42332. callbacks. It is similar to Gl.glVertex*, and it defines the
  42333. vertices of the triangles created by the tessellation process.
  42334. The function takes a pointer as its only argument. This pointer
  42335. is identical to the opaque pointer provided by the user when the
  42336. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  42337. delegate prototype for this callback is
  42338. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  42339. </description>
  42340. </item>
  42341. <item>
  42342. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  42343. <description>
  42344. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  42345. that it takes an additional pointer argument. This pointer is
  42346. identical to the opaque pointer provided when
  42347. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42348. prototype for this callback is
  42349. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  42350. </description>
  42351. </item>
  42352. </list>
  42353. </para>
  42354. </param>
  42355. <param name="func">
  42356. The function to be called.
  42357. </param>
  42358. <remarks>
  42359. <para>
  42360. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  42361. tessellation object. If the specified callback is already defined, then it
  42362. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  42363. becomes undefined.
  42364. </para>
  42365. <para>
  42366. These callbacks are used by the tessellation object to describe how a polygon
  42367. specified by the user is broken into triangles. Note that there are two
  42368. versions of each callback: one with user-specified polygon data and one
  42369. without. If both versions of a particular callback are specified, then the
  42370. callback with user-specified polygon data will be used. Note that the
  42371. <i>polygonData</i> parameter used by some of the functions is a copy of the
  42372. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  42373. called.
  42374. </para>
  42375. <para>
  42376. <b>EXAMPLE</b>
  42377. </para>
  42378. <para>
  42379. You can directly render tessallated polygons as follows:
  42380. </para>
  42381. <para>
  42382. <code>
  42383. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  42384. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  42385. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  42386. Glu.gluTessBeginPolygon(tess, null);
  42387. Glu.gluTessBeginContour(tess);
  42388. Glu.gluTessVertex(tess, v, v);
  42389. . . .
  42390. Glu.gluTessEndContour(tess);
  42391. Glu.gluTessEndPolygon(tess);
  42392. </code>
  42393. </para>
  42394. </remarks>
  42395. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  42396. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  42397. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  42398. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  42399. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  42400. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  42401. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  42402. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  42403. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  42404. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  42405. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  42406. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  42407. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  42408. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  42409. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  42410. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  42411. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  42412. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  42413. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  42414. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  42415. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  42416. </member>
  42417. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessErrorDataCallback)">
  42418. <summary>
  42419. Defines a callback for a tessellation object.
  42420. </summary>
  42421. <param name="tess">
  42422. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  42423. </param>
  42424. <param name="which">
  42425. <para>
  42426. The callback being defined. The following values are valid:
  42427. </para>
  42428. <para>
  42429. <list type="table">
  42430. <listheader>
  42431. <term>Value</term>
  42432. <description>Description</description>
  42433. </listheader>
  42434. <item>
  42435. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  42436. <description>
  42437. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  42438. indicate the start of a (triangle) primitive. The function takes
  42439. a single argument of type <see cref="T:System.Int32"/>. If the
  42440. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  42441. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  42442. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  42443. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  42444. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  42445. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  42446. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  42447. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  42448. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  42449. </description>
  42450. </item>
  42451. <item>
  42452. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  42453. <description>
  42454. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  42455. that it takes an additional pointer argument. This pointer is
  42456. identical to the opaque pointer provided when
  42457. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42458. prototype for this callback is
  42459. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  42460. </description>
  42461. </item>
  42462. <item>
  42463. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  42464. <description>
  42465. <para>
  42466. The combine callback is called to create a new vertex when
  42467. the tessellation detects an intersection, or wishes to merge
  42468. features. The function takes four arguments: an array of
  42469. three elements each of type <see cref="T:System.Double"/>, an
  42470. array of four pointers, an array of four elements each of
  42471. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  42472. delegate prototype for this callback is
  42473. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  42474. </para>
  42475. <para>
  42476. The vertex is defined as a linear combination of up to four
  42477. existing vertices, stored in <i>vertexData</i>. The
  42478. coefficients of the linear combination are given by
  42479. <i>weight</i>; these weights always add up to 1. All
  42480. vertex pointers are valid even when some of the weights are
  42481. 0. <i>coordinates</i> gives the location of the new vertex.
  42482. </para>
  42483. <para>
  42484. The user must allocate another vertex, interpolate parameters
  42485. using <i>vertexData</i> and <i>weight</i>, and return the new
  42486. vertex pointer in <i>outData</i>. This handle is supplied
  42487. during rendering callbacks. The user is responsible for
  42488. freeing the memory some time after
  42489. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  42490. </para>
  42491. <para>
  42492. For example, if the polygon lies in an arbitrary plane in
  42493. 3-space, and a color is associated with each vertex, the
  42494. <b>GLU_TESS_COMBINE</b> callback might look like this:
  42495. </para>
  42496. <para>
  42497. <code>
  42498. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  42499. VERTEX *newVertex = new_vertex();
  42500. newVertex-&gt;x = coords[0];
  42501. newVertex-&gt;y = coords[1];
  42502. newVertex-&gt;z = coords[2];
  42503. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  42504. w[3]*d[3]-&gt;r;
  42505. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  42506. w[3]*d[3]-&gt;g;
  42507. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  42508. w[3]*d[3]-&gt;b;
  42509. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  42510. w[3]*d[3]-&gt;a;
  42511. *dataOut = newVertex;
  42512. }
  42513. </code>
  42514. </para>
  42515. <para>
  42516. If the tessellation detects an intersection, then the
  42517. <b>GLU_TESS_COMBINE</b> or
  42518. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  42519. must be defined, and it must write a non-NULL pointer into
  42520. <i>outData</i>. Otherwise the
  42521. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  42522. and no output is generated.
  42523. </para>
  42524. </description>
  42525. </item>
  42526. <item>
  42527. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  42528. <description>
  42529. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  42530. that it takes an additional pointer argument. This pointer is
  42531. identical to the opaque pointer provided when
  42532. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42533. prototype for this callback is
  42534. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  42535. </description>
  42536. </item>
  42537. <item>
  42538. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  42539. <description>
  42540. <para>
  42541. The edge flag callback is similar to
  42542. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  42543. boolean flag that indicates which edges lie on the polygon
  42544. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  42545. each vertex that follows begins an edge that lies on the
  42546. polygon boundary, that is, an edge that separates an interior
  42547. region from an exterior one. If the flag is
  42548. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  42549. begins an edge that lies in the polygon interior. The edge
  42550. flag callback (if defined) is invoked before the first
  42551. vertex callback.
  42552. </para>
  42553. <para>
  42554. Since triangle fans and triangle strips do not support edge
  42555. flags, the begin callback is not called with
  42556. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  42557. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  42558. callback is provided. (If the callback is initialized to
  42559. <c>null</c>, there is no impact on performance). Instead,
  42560. the fans and strips are converted to independent triangles.
  42561. The delegate prototype for this callback is
  42562. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  42563. </para>
  42564. </description>
  42565. </item>
  42566. <item>
  42567. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  42568. <description>
  42569. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  42570. that it takes an additional pointer argument. This pointer is
  42571. identical to the opaque pointer provided when
  42572. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42573. prototype for this callback is
  42574. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  42575. </description>
  42576. </item>
  42577. <item>
  42578. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  42579. <description>
  42580. The end callback serves the same purpose as
  42581. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  42582. it takes no arguments. The delegate prototype for this callback
  42583. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  42584. </description>
  42585. </item>
  42586. <item>
  42587. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  42588. <description>
  42589. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  42590. it takes an additional pointer argument. This pointer is
  42591. identical to the opaque pointer provided when
  42592. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42593. prototype for this callback is
  42594. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  42595. </description>
  42596. </item>
  42597. <item>
  42598. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  42599. <description>
  42600. <para>
  42601. The error callback is called when an error is encountered.
  42602. The one argument is of type <see cref="T:System.Int32"/>; it
  42603. indicates the specific error that occurred and will be set to
  42604. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  42605. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  42606. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  42607. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  42608. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  42609. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  42610. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  42611. describing these errors can be retrieved with the
  42612. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  42613. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  42614. </para>
  42615. <para>
  42616. The GLU library will recover from the first four errors by
  42617. inserting the missing call(s).
  42618. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  42619. vertex coordinate exceeded the predefined constant
  42620. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  42621. the value has been clamped. (Coordinate values must be small
  42622. enough so that two can be multiplied together without
  42623. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  42624. indicates that the tessellation detected an intersection
  42625. between two edges in the input data, and the
  42626. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  42627. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  42628. provided. No output is generated.
  42629. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  42630. enough memory so no output is generated.
  42631. </para>
  42632. </description>
  42633. </item>
  42634. <item>
  42635. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  42636. <description>
  42637. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  42638. that it takes an additional pointer argument. This pointer is
  42639. identical to the opaque pointer provided when
  42640. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42641. prototype for this callback is
  42642. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  42643. </description>
  42644. </item>
  42645. <item>
  42646. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  42647. <description>
  42648. The vertex callback is invoked between the begin and end
  42649. callbacks. It is similar to Gl.glVertex*, and it defines the
  42650. vertices of the triangles created by the tessellation process.
  42651. The function takes a pointer as its only argument. This pointer
  42652. is identical to the opaque pointer provided by the user when the
  42653. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  42654. delegate prototype for this callback is
  42655. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  42656. </description>
  42657. </item>
  42658. <item>
  42659. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  42660. <description>
  42661. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  42662. that it takes an additional pointer argument. This pointer is
  42663. identical to the opaque pointer provided when
  42664. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42665. prototype for this callback is
  42666. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  42667. </description>
  42668. </item>
  42669. </list>
  42670. </para>
  42671. </param>
  42672. <param name="func">
  42673. The function to be called.
  42674. </param>
  42675. <remarks>
  42676. <para>
  42677. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  42678. tessellation object. If the specified callback is already defined, then it
  42679. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  42680. becomes undefined.
  42681. </para>
  42682. <para>
  42683. These callbacks are used by the tessellation object to describe how a polygon
  42684. specified by the user is broken into triangles. Note that there are two
  42685. versions of each callback: one with user-specified polygon data and one
  42686. without. If both versions of a particular callback are specified, then the
  42687. callback with user-specified polygon data will be used. Note that the
  42688. <i>polygonData</i> parameter used by some of the functions is a copy of the
  42689. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  42690. called.
  42691. </para>
  42692. <para>
  42693. <b>EXAMPLE</b>
  42694. </para>
  42695. <para>
  42696. You can directly render tessallated polygons as follows:
  42697. </para>
  42698. <para>
  42699. <code>
  42700. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  42701. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  42702. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  42703. Glu.gluTessBeginPolygon(tess, null);
  42704. Glu.gluTessBeginContour(tess);
  42705. Glu.gluTessVertex(tess, v, v);
  42706. . . .
  42707. Glu.gluTessEndContour(tess);
  42708. Glu.gluTessEndPolygon(tess);
  42709. </code>
  42710. </para>
  42711. </remarks>
  42712. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  42713. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  42714. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  42715. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  42716. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  42717. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  42718. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  42719. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  42720. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  42721. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  42722. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  42723. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  42724. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  42725. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  42726. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  42727. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  42728. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  42729. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  42730. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  42731. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  42732. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  42733. </member>
  42734. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessVertexCallback)">
  42735. <summary>
  42736. Defines a callback for a tessellation object.
  42737. </summary>
  42738. <param name="tess">
  42739. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  42740. </param>
  42741. <param name="which">
  42742. <para>
  42743. The callback being defined. The following values are valid:
  42744. </para>
  42745. <para>
  42746. <list type="table">
  42747. <listheader>
  42748. <term>Value</term>
  42749. <description>Description</description>
  42750. </listheader>
  42751. <item>
  42752. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  42753. <description>
  42754. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  42755. indicate the start of a (triangle) primitive. The function takes
  42756. a single argument of type <see cref="T:System.Int32"/>. If the
  42757. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  42758. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  42759. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  42760. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  42761. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  42762. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  42763. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  42764. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  42765. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  42766. </description>
  42767. </item>
  42768. <item>
  42769. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  42770. <description>
  42771. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  42772. that it takes an additional pointer argument. This pointer is
  42773. identical to the opaque pointer provided when
  42774. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42775. prototype for this callback is
  42776. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  42777. </description>
  42778. </item>
  42779. <item>
  42780. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  42781. <description>
  42782. <para>
  42783. The combine callback is called to create a new vertex when
  42784. the tessellation detects an intersection, or wishes to merge
  42785. features. The function takes four arguments: an array of
  42786. three elements each of type <see cref="T:System.Double"/>, an
  42787. array of four pointers, an array of four elements each of
  42788. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  42789. delegate prototype for this callback is
  42790. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  42791. </para>
  42792. <para>
  42793. The vertex is defined as a linear combination of up to four
  42794. existing vertices, stored in <i>vertexData</i>. The
  42795. coefficients of the linear combination are given by
  42796. <i>weight</i>; these weights always add up to 1. All
  42797. vertex pointers are valid even when some of the weights are
  42798. 0. <i>coordinates</i> gives the location of the new vertex.
  42799. </para>
  42800. <para>
  42801. The user must allocate another vertex, interpolate parameters
  42802. using <i>vertexData</i> and <i>weight</i>, and return the new
  42803. vertex pointer in <i>outData</i>. This handle is supplied
  42804. during rendering callbacks. The user is responsible for
  42805. freeing the memory some time after
  42806. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  42807. </para>
  42808. <para>
  42809. For example, if the polygon lies in an arbitrary plane in
  42810. 3-space, and a color is associated with each vertex, the
  42811. <b>GLU_TESS_COMBINE</b> callback might look like this:
  42812. </para>
  42813. <para>
  42814. <code>
  42815. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  42816. VERTEX *newVertex = new_vertex();
  42817. newVertex-&gt;x = coords[0];
  42818. newVertex-&gt;y = coords[1];
  42819. newVertex-&gt;z = coords[2];
  42820. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  42821. w[3]*d[3]-&gt;r;
  42822. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  42823. w[3]*d[3]-&gt;g;
  42824. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  42825. w[3]*d[3]-&gt;b;
  42826. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  42827. w[3]*d[3]-&gt;a;
  42828. *dataOut = newVertex;
  42829. }
  42830. </code>
  42831. </para>
  42832. <para>
  42833. If the tessellation detects an intersection, then the
  42834. <b>GLU_TESS_COMBINE</b> or
  42835. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  42836. must be defined, and it must write a non-NULL pointer into
  42837. <i>outData</i>. Otherwise the
  42838. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  42839. and no output is generated.
  42840. </para>
  42841. </description>
  42842. </item>
  42843. <item>
  42844. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  42845. <description>
  42846. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  42847. that it takes an additional pointer argument. This pointer is
  42848. identical to the opaque pointer provided when
  42849. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42850. prototype for this callback is
  42851. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  42852. </description>
  42853. </item>
  42854. <item>
  42855. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  42856. <description>
  42857. <para>
  42858. The edge flag callback is similar to
  42859. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  42860. boolean flag that indicates which edges lie on the polygon
  42861. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  42862. each vertex that follows begins an edge that lies on the
  42863. polygon boundary, that is, an edge that separates an interior
  42864. region from an exterior one. If the flag is
  42865. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  42866. begins an edge that lies in the polygon interior. The edge
  42867. flag callback (if defined) is invoked before the first
  42868. vertex callback.
  42869. </para>
  42870. <para>
  42871. Since triangle fans and triangle strips do not support edge
  42872. flags, the begin callback is not called with
  42873. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  42874. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  42875. callback is provided. (If the callback is initialized to
  42876. <c>null</c>, there is no impact on performance). Instead,
  42877. the fans and strips are converted to independent triangles.
  42878. The delegate prototype for this callback is
  42879. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  42880. </para>
  42881. </description>
  42882. </item>
  42883. <item>
  42884. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  42885. <description>
  42886. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  42887. that it takes an additional pointer argument. This pointer is
  42888. identical to the opaque pointer provided when
  42889. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42890. prototype for this callback is
  42891. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  42892. </description>
  42893. </item>
  42894. <item>
  42895. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  42896. <description>
  42897. The end callback serves the same purpose as
  42898. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  42899. it takes no arguments. The delegate prototype for this callback
  42900. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  42901. </description>
  42902. </item>
  42903. <item>
  42904. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  42905. <description>
  42906. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  42907. it takes an additional pointer argument. This pointer is
  42908. identical to the opaque pointer provided when
  42909. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42910. prototype for this callback is
  42911. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  42912. </description>
  42913. </item>
  42914. <item>
  42915. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  42916. <description>
  42917. <para>
  42918. The error callback is called when an error is encountered.
  42919. The one argument is of type <see cref="T:System.Int32"/>; it
  42920. indicates the specific error that occurred and will be set to
  42921. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  42922. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  42923. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  42924. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  42925. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  42926. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  42927. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  42928. describing these errors can be retrieved with the
  42929. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  42930. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  42931. </para>
  42932. <para>
  42933. The GLU library will recover from the first four errors by
  42934. inserting the missing call(s).
  42935. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  42936. vertex coordinate exceeded the predefined constant
  42937. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  42938. the value has been clamped. (Coordinate values must be small
  42939. enough so that two can be multiplied together without
  42940. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  42941. indicates that the tessellation detected an intersection
  42942. between two edges in the input data, and the
  42943. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  42944. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  42945. provided. No output is generated.
  42946. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  42947. enough memory so no output is generated.
  42948. </para>
  42949. </description>
  42950. </item>
  42951. <item>
  42952. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  42953. <description>
  42954. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  42955. that it takes an additional pointer argument. This pointer is
  42956. identical to the opaque pointer provided when
  42957. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42958. prototype for this callback is
  42959. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  42960. </description>
  42961. </item>
  42962. <item>
  42963. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  42964. <description>
  42965. The vertex callback is invoked between the begin and end
  42966. callbacks. It is similar to Gl.glVertex*, and it defines the
  42967. vertices of the triangles created by the tessellation process.
  42968. The function takes a pointer as its only argument. This pointer
  42969. is identical to the opaque pointer provided by the user when the
  42970. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  42971. delegate prototype for this callback is
  42972. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  42973. </description>
  42974. </item>
  42975. <item>
  42976. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  42977. <description>
  42978. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  42979. that it takes an additional pointer argument. This pointer is
  42980. identical to the opaque pointer provided when
  42981. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  42982. prototype for this callback is
  42983. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  42984. </description>
  42985. </item>
  42986. </list>
  42987. </para>
  42988. </param>
  42989. <param name="func">
  42990. The function to be called.
  42991. </param>
  42992. <remarks>
  42993. <para>
  42994. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  42995. tessellation object. If the specified callback is already defined, then it
  42996. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  42997. becomes undefined.
  42998. </para>
  42999. <para>
  43000. These callbacks are used by the tessellation object to describe how a polygon
  43001. specified by the user is broken into triangles. Note that there are two
  43002. versions of each callback: one with user-specified polygon data and one
  43003. without. If both versions of a particular callback are specified, then the
  43004. callback with user-specified polygon data will be used. Note that the
  43005. <i>polygonData</i> parameter used by some of the functions is a copy of the
  43006. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  43007. called.
  43008. </para>
  43009. <para>
  43010. <b>EXAMPLE</b>
  43011. </para>
  43012. <para>
  43013. You can directly render tessallated polygons as follows:
  43014. </para>
  43015. <para>
  43016. <code>
  43017. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  43018. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  43019. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  43020. Glu.gluTessBeginPolygon(tess, null);
  43021. Glu.gluTessBeginContour(tess);
  43022. Glu.gluTessVertex(tess, v, v);
  43023. . . .
  43024. Glu.gluTessEndContour(tess);
  43025. Glu.gluTessEndPolygon(tess);
  43026. </code>
  43027. </para>
  43028. </remarks>
  43029. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  43030. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  43031. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  43032. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  43033. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  43034. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  43035. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  43036. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  43037. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  43038. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  43039. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  43040. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  43041. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  43042. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  43043. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  43044. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  43045. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  43046. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  43047. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  43048. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  43049. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  43050. </member>
  43051. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessVertexCallback1)">
  43052. <summary>
  43053. Defines a callback for a tessellation object.
  43054. </summary>
  43055. <param name="tess">
  43056. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  43057. </param>
  43058. <param name="which">
  43059. <para>
  43060. The callback being defined. The following values are valid:
  43061. </para>
  43062. <para>
  43063. <list type="table">
  43064. <listheader>
  43065. <term>Value</term>
  43066. <description>Description</description>
  43067. </listheader>
  43068. <item>
  43069. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  43070. <description>
  43071. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  43072. indicate the start of a (triangle) primitive. The function takes
  43073. a single argument of type <see cref="T:System.Int32"/>. If the
  43074. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  43075. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  43076. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  43077. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  43078. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  43079. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  43080. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  43081. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  43082. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  43083. </description>
  43084. </item>
  43085. <item>
  43086. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  43087. <description>
  43088. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  43089. that it takes an additional pointer argument. This pointer is
  43090. identical to the opaque pointer provided when
  43091. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43092. prototype for this callback is
  43093. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  43094. </description>
  43095. </item>
  43096. <item>
  43097. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  43098. <description>
  43099. <para>
  43100. The combine callback is called to create a new vertex when
  43101. the tessellation detects an intersection, or wishes to merge
  43102. features. The function takes four arguments: an array of
  43103. three elements each of type <see cref="T:System.Double"/>, an
  43104. array of four pointers, an array of four elements each of
  43105. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  43106. delegate prototype for this callback is
  43107. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  43108. </para>
  43109. <para>
  43110. The vertex is defined as a linear combination of up to four
  43111. existing vertices, stored in <i>vertexData</i>. The
  43112. coefficients of the linear combination are given by
  43113. <i>weight</i>; these weights always add up to 1. All
  43114. vertex pointers are valid even when some of the weights are
  43115. 0. <i>coordinates</i> gives the location of the new vertex.
  43116. </para>
  43117. <para>
  43118. The user must allocate another vertex, interpolate parameters
  43119. using <i>vertexData</i> and <i>weight</i>, and return the new
  43120. vertex pointer in <i>outData</i>. This handle is supplied
  43121. during rendering callbacks. The user is responsible for
  43122. freeing the memory some time after
  43123. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  43124. </para>
  43125. <para>
  43126. For example, if the polygon lies in an arbitrary plane in
  43127. 3-space, and a color is associated with each vertex, the
  43128. <b>GLU_TESS_COMBINE</b> callback might look like this:
  43129. </para>
  43130. <para>
  43131. <code>
  43132. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  43133. VERTEX *newVertex = new_vertex();
  43134. newVertex-&gt;x = coords[0];
  43135. newVertex-&gt;y = coords[1];
  43136. newVertex-&gt;z = coords[2];
  43137. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  43138. w[3]*d[3]-&gt;r;
  43139. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  43140. w[3]*d[3]-&gt;g;
  43141. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  43142. w[3]*d[3]-&gt;b;
  43143. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  43144. w[3]*d[3]-&gt;a;
  43145. *dataOut = newVertex;
  43146. }
  43147. </code>
  43148. </para>
  43149. <para>
  43150. If the tessellation detects an intersection, then the
  43151. <b>GLU_TESS_COMBINE</b> or
  43152. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  43153. must be defined, and it must write a non-NULL pointer into
  43154. <i>outData</i>. Otherwise the
  43155. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  43156. and no output is generated.
  43157. </para>
  43158. </description>
  43159. </item>
  43160. <item>
  43161. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  43162. <description>
  43163. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  43164. that it takes an additional pointer argument. This pointer is
  43165. identical to the opaque pointer provided when
  43166. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43167. prototype for this callback is
  43168. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  43169. </description>
  43170. </item>
  43171. <item>
  43172. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  43173. <description>
  43174. <para>
  43175. The edge flag callback is similar to
  43176. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  43177. boolean flag that indicates which edges lie on the polygon
  43178. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  43179. each vertex that follows begins an edge that lies on the
  43180. polygon boundary, that is, an edge that separates an interior
  43181. region from an exterior one. If the flag is
  43182. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  43183. begins an edge that lies in the polygon interior. The edge
  43184. flag callback (if defined) is invoked before the first
  43185. vertex callback.
  43186. </para>
  43187. <para>
  43188. Since triangle fans and triangle strips do not support edge
  43189. flags, the begin callback is not called with
  43190. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  43191. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  43192. callback is provided. (If the callback is initialized to
  43193. <c>null</c>, there is no impact on performance). Instead,
  43194. the fans and strips are converted to independent triangles.
  43195. The delegate prototype for this callback is
  43196. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  43197. </para>
  43198. </description>
  43199. </item>
  43200. <item>
  43201. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  43202. <description>
  43203. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  43204. that it takes an additional pointer argument. This pointer is
  43205. identical to the opaque pointer provided when
  43206. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43207. prototype for this callback is
  43208. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  43209. </description>
  43210. </item>
  43211. <item>
  43212. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  43213. <description>
  43214. The end callback serves the same purpose as
  43215. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  43216. it takes no arguments. The delegate prototype for this callback
  43217. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  43218. </description>
  43219. </item>
  43220. <item>
  43221. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  43222. <description>
  43223. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  43224. it takes an additional pointer argument. This pointer is
  43225. identical to the opaque pointer provided when
  43226. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43227. prototype for this callback is
  43228. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  43229. </description>
  43230. </item>
  43231. <item>
  43232. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  43233. <description>
  43234. <para>
  43235. The error callback is called when an error is encountered.
  43236. The one argument is of type <see cref="T:System.Int32"/>; it
  43237. indicates the specific error that occurred and will be set to
  43238. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  43239. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  43240. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  43241. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  43242. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  43243. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  43244. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  43245. describing these errors can be retrieved with the
  43246. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  43247. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  43248. </para>
  43249. <para>
  43250. The GLU library will recover from the first four errors by
  43251. inserting the missing call(s).
  43252. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  43253. vertex coordinate exceeded the predefined constant
  43254. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  43255. the value has been clamped. (Coordinate values must be small
  43256. enough so that two can be multiplied together without
  43257. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  43258. indicates that the tessellation detected an intersection
  43259. between two edges in the input data, and the
  43260. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  43261. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  43262. provided. No output is generated.
  43263. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  43264. enough memory so no output is generated.
  43265. </para>
  43266. </description>
  43267. </item>
  43268. <item>
  43269. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  43270. <description>
  43271. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  43272. that it takes an additional pointer argument. This pointer is
  43273. identical to the opaque pointer provided when
  43274. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43275. prototype for this callback is
  43276. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  43277. </description>
  43278. </item>
  43279. <item>
  43280. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  43281. <description>
  43282. The vertex callback is invoked between the begin and end
  43283. callbacks. It is similar to Gl.glVertex*, and it defines the
  43284. vertices of the triangles created by the tessellation process.
  43285. The function takes a pointer as its only argument. This pointer
  43286. is identical to the opaque pointer provided by the user when the
  43287. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  43288. delegate prototype for this callback is
  43289. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  43290. </description>
  43291. </item>
  43292. <item>
  43293. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  43294. <description>
  43295. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  43296. that it takes an additional pointer argument. This pointer is
  43297. identical to the opaque pointer provided when
  43298. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43299. prototype for this callback is
  43300. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  43301. </description>
  43302. </item>
  43303. </list>
  43304. </para>
  43305. </param>
  43306. <param name="func">
  43307. The function to be called.
  43308. </param>
  43309. <remarks>
  43310. <para>
  43311. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  43312. tessellation object. If the specified callback is already defined, then it
  43313. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  43314. becomes undefined.
  43315. </para>
  43316. <para>
  43317. These callbacks are used by the tessellation object to describe how a polygon
  43318. specified by the user is broken into triangles. Note that there are two
  43319. versions of each callback: one with user-specified polygon data and one
  43320. without. If both versions of a particular callback are specified, then the
  43321. callback with user-specified polygon data will be used. Note that the
  43322. <i>polygonData</i> parameter used by some of the functions is a copy of the
  43323. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  43324. called.
  43325. </para>
  43326. <para>
  43327. <b>EXAMPLE</b>
  43328. </para>
  43329. <para>
  43330. You can directly render tessallated polygons as follows:
  43331. </para>
  43332. <para>
  43333. <code>
  43334. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  43335. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  43336. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  43337. Glu.gluTessBeginPolygon(tess, null);
  43338. Glu.gluTessBeginContour(tess);
  43339. Glu.gluTessVertex(tess, v, v);
  43340. . . .
  43341. Glu.gluTessEndContour(tess);
  43342. Glu.gluTessEndPolygon(tess);
  43343. </code>
  43344. </para>
  43345. </remarks>
  43346. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  43347. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  43348. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  43349. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  43350. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  43351. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  43352. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  43353. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  43354. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  43355. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  43356. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  43357. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  43358. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  43359. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  43360. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  43361. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  43362. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  43363. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  43364. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  43365. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  43366. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  43367. </member>
  43368. <member name="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessVertexDataCallback)">
  43369. <summary>
  43370. Defines a callback for a tessellation object.
  43371. </summary>
  43372. <param name="tess">
  43373. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  43374. </param>
  43375. <param name="which">
  43376. <para>
  43377. The callback being defined. The following values are valid:
  43378. </para>
  43379. <para>
  43380. <list type="table">
  43381. <listheader>
  43382. <term>Value</term>
  43383. <description>Description</description>
  43384. </listheader>
  43385. <item>
  43386. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/></term>
  43387. <description>
  43388. The begin callback is invoked like <see cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/> to
  43389. indicate the start of a (triangle) primitive. The function takes
  43390. a single argument of type <see cref="T:System.Int32"/>. If the
  43391. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  43392. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then the argument is set to either
  43393. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/>,
  43394. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/>, or
  43395. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLES"/>. If the
  43396. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/> property is set to
  43397. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then the argument will be set to
  43398. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/>. The delegate prototype for this
  43399. callback is <see cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>.
  43400. </description>
  43401. </item>
  43402. <item>
  43403. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/></term>
  43404. <description>
  43405. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> callback except
  43406. that it takes an additional pointer argument. This pointer is
  43407. identical to the opaque pointer provided when
  43408. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43409. prototype for this callback is
  43410. <see cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>.
  43411. </description>
  43412. </item>
  43413. <item>
  43414. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/></term>
  43415. <description>
  43416. <para>
  43417. The combine callback is called to create a new vertex when
  43418. the tessellation detects an intersection, or wishes to merge
  43419. features. The function takes four arguments: an array of
  43420. three elements each of type <see cref="T:System.Double"/>, an
  43421. array of four pointers, an array of four elements each of
  43422. type <see cref="T:System.Single"/>, and a pointer to a pointer. The
  43423. delegate prototype for this callback is
  43424. <see cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>.
  43425. </para>
  43426. <para>
  43427. The vertex is defined as a linear combination of up to four
  43428. existing vertices, stored in <i>vertexData</i>. The
  43429. coefficients of the linear combination are given by
  43430. <i>weight</i>; these weights always add up to 1. All
  43431. vertex pointers are valid even when some of the weights are
  43432. 0. <i>coordinates</i> gives the location of the new vertex.
  43433. </para>
  43434. <para>
  43435. The user must allocate another vertex, interpolate parameters
  43436. using <i>vertexData</i> and <i>weight</i>, and return the new
  43437. vertex pointer in <i>outData</i>. This handle is supplied
  43438. during rendering callbacks. The user is responsible for
  43439. freeing the memory some time after
  43440. <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/> is called.
  43441. </para>
  43442. <para>
  43443. For example, if the polygon lies in an arbitrary plane in
  43444. 3-space, and a color is associated with each vertex, the
  43445. <b>GLU_TESS_COMBINE</b> callback might look like this:
  43446. </para>
  43447. <para>
  43448. <code>
  43449. void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
  43450. VERTEX *newVertex = new_vertex();
  43451. newVertex-&gt;x = coords[0];
  43452. newVertex-&gt;y = coords[1];
  43453. newVertex-&gt;z = coords[2];
  43454. newVertex-&gt;r = w[0]*d[0]-&gt;r + w[1]*d[1]-&gt;r + w[2]*d[2]-&gt;r +
  43455. w[3]*d[3]-&gt;r;
  43456. newVertex-&gt;g = w[0]*d[0]-&gt;g + w[1]*d[1]-&gt;g + w[2]*d[2]-&gt;g +
  43457. w[3]*d[3]-&gt;g;
  43458. newVertex-&gt;b = w[0]*d[0]-&gt;b + w[1]*d[1]-&gt;b + w[2]*d[2]-&gt;b +
  43459. w[3]*d[3]-&gt;b;
  43460. newVertex-&gt;a = w[0]*d[0]-&gt;a + w[1]*d[1]-&gt;a + w[2]*d[2]-&gt;a +
  43461. w[3]*d[3]-&gt;a;
  43462. *dataOut = newVertex;
  43463. }
  43464. </code>
  43465. </para>
  43466. <para>
  43467. If the tessellation detects an intersection, then the
  43468. <b>GLU_TESS_COMBINE</b> or
  43469. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback (see below)
  43470. must be defined, and it must write a non-NULL pointer into
  43471. <i>outData</i>. Otherwise the
  43472. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error occurs,
  43473. and no output is generated.
  43474. </para>
  43475. </description>
  43476. </item>
  43477. <item>
  43478. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/></term>
  43479. <description>
  43480. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> callback except
  43481. that it takes an additional pointer argument. This pointer is
  43482. identical to the opaque pointer provided when
  43483. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43484. prototype for this callback is
  43485. <see cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>.
  43486. </description>
  43487. </item>
  43488. <item>
  43489. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/></term>
  43490. <description>
  43491. <para>
  43492. The edge flag callback is similar to
  43493. <see cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>. The function takes a single
  43494. boolean flag that indicates which edges lie on the polygon
  43495. boundary. If the flag is <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, then
  43496. each vertex that follows begins an edge that lies on the
  43497. polygon boundary, that is, an edge that separates an interior
  43498. region from an exterior one. If the flag is
  43499. <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>, then each vertex that follows
  43500. begins an edge that lies in the polygon interior. The edge
  43501. flag callback (if defined) is invoked before the first
  43502. vertex callback.
  43503. </para>
  43504. <para>
  43505. Since triangle fans and triangle strips do not support edge
  43506. flags, the begin callback is not called with
  43507. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_FAN"/> or
  43508. <see cref="F:Tao.OpenGl.Gl.GL_TRIANGLE_STRIP"/> if a non-NULL edge flag
  43509. callback is provided. (If the callback is initialized to
  43510. <c>null</c>, there is no impact on performance). Instead,
  43511. the fans and strips are converted to independent triangles.
  43512. The delegate prototype for this callback is
  43513. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>.
  43514. </para>
  43515. </description>
  43516. </item>
  43517. <item>
  43518. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG_DATA"/></term>
  43519. <description>
  43520. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_EDGE_FLAG"/> callback except
  43521. that it takes an additional pointer argument. This pointer is
  43522. identical to the opaque pointer provided when
  43523. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43524. prototype for this callback is
  43525. <see cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>.
  43526. </description>
  43527. </item>
  43528. <item>
  43529. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/></term>
  43530. <description>
  43531. The end callback serves the same purpose as
  43532. <see cref="M:Tao.OpenGl.Gl.glEnd"/>. It indicates the end of a primitive and
  43533. it takes no arguments. The delegate prototype for this callback
  43534. is <see cref="T:Tao.OpenGl.Glu.TessEndCallback"/>.
  43535. </description>
  43536. </item>
  43537. <item>
  43538. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_END_DATA"/></term>
  43539. <description>
  43540. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_END"/> callback except that
  43541. it takes an additional pointer argument. This pointer is
  43542. identical to the opaque pointer provided when
  43543. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43544. prototype for this callback is
  43545. <see cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>.
  43546. </description>
  43547. </item>
  43548. <item>
  43549. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/></term>
  43550. <description>
  43551. <para>
  43552. The error callback is called when an error is encountered.
  43553. The one argument is of type <see cref="T:System.Int32"/>; it
  43554. indicates the specific error that occurred and will be set to
  43555. one of <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_POLYGON"/>,
  43556. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_POLYGON"/>,
  43557. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_BEGIN_CONTOUR"/>,
  43558. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MISSING_END_CONTOUR"/>,
  43559. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/>,
  43560. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> or
  43561. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/>. Character strings
  43562. describing these errors can be retrieved with the
  43563. <see cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/> call. The delegate prototype
  43564. for this callback is <see cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>.
  43565. </para>
  43566. <para>
  43567. The GLU library will recover from the first four errors by
  43568. inserting the missing call(s).
  43569. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COORD_TOO_LARGE"/> indicates that some
  43570. vertex coordinate exceeded the predefined constant
  43571. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_MAX_COORD"/> in absolute value, and that
  43572. the value has been clamped. (Coordinate values must be small
  43573. enough so that two can be multiplied together without
  43574. overflow.) <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/>
  43575. indicates that the tessellation detected an intersection
  43576. between two edges in the input data, and the
  43577. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE"/> or
  43578. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_COMBINE_DATA"/> callback was not
  43579. provided. No output is generated.
  43580. <see cref="F:Tao.OpenGl.Glu.GLU_OUT_OF_MEMORY"/> indicates that there is not
  43581. enough memory so no output is generated.
  43582. </para>
  43583. </description>
  43584. </item>
  43585. <item>
  43586. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR_DATA"/></term>
  43587. <description>
  43588. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_ERROR"/> callback except
  43589. that it takes an additional pointer argument. This pointer is
  43590. identical to the opaque pointer provided when
  43591. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43592. prototype for this callback is
  43593. <see cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>.
  43594. </description>
  43595. </item>
  43596. <item>
  43597. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/></term>
  43598. <description>
  43599. The vertex callback is invoked between the begin and end
  43600. callbacks. It is similar to Gl.glVertex*, and it defines the
  43601. vertices of the triangles created by the tessellation process.
  43602. The function takes a pointer as its only argument. This pointer
  43603. is identical to the opaque pointer provided by the user when the
  43604. vertex was described (see <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>). The
  43605. delegate prototype for this callback is
  43606. <see cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>.
  43607. </description>
  43608. </item>
  43609. <item>
  43610. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/></term>
  43611. <description>
  43612. The same as the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/> callback except
  43613. that it takes an additional pointer argument. This pointer is
  43614. identical to the opaque pointer provided when
  43615. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was called. The delegate
  43616. prototype for this callback is
  43617. <see cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>.
  43618. </description>
  43619. </item>
  43620. </list>
  43621. </para>
  43622. </param>
  43623. <param name="func">
  43624. The function to be called.
  43625. </param>
  43626. <remarks>
  43627. <para>
  43628. <b>gluTessCallback</b> is used to indicate a callback to be used by a
  43629. tessellation object. If the specified callback is already defined, then it
  43630. is replaced. If <i>func</i> is <c>null</c>, then the existing callback
  43631. becomes undefined.
  43632. </para>
  43633. <para>
  43634. These callbacks are used by the tessellation object to describe how a polygon
  43635. specified by the user is broken into triangles. Note that there are two
  43636. versions of each callback: one with user-specified polygon data and one
  43637. without. If both versions of a particular callback are specified, then the
  43638. callback with user-specified polygon data will be used. Note that the
  43639. <i>polygonData</i> parameter used by some of the functions is a copy of the
  43640. pointer that was specified when <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> was
  43641. called.
  43642. </para>
  43643. <para>
  43644. <b>EXAMPLE</b>
  43645. </para>
  43646. <para>
  43647. You can directly render tessallated polygons as follows:
  43648. </para>
  43649. <para>
  43650. <code>
  43651. Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
  43652. Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
  43653. Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
  43654. Glu.gluTessBeginPolygon(tess, null);
  43655. Glu.gluTessBeginContour(tess);
  43656. Glu.gluTessVertex(tess, v, v);
  43657. . . .
  43658. Glu.gluTessEndContour(tess);
  43659. Glu.gluTessEndPolygon(tess);
  43660. </code>
  43661. </para>
  43662. </remarks>
  43663. <seealso cref="T:Tao.OpenGl.Glu.TessBeginCallback"/>
  43664. <seealso cref="T:Tao.OpenGl.Glu.TessBeginDataCallback"/>
  43665. <seealso cref="T:Tao.OpenGl.Glu.TessCombineCallback"/>
  43666. <seealso cref="T:Tao.OpenGl.Glu.TessCombineDataCallback"/>
  43667. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagCallback"/>
  43668. <seealso cref="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback"/>
  43669. <seealso cref="T:Tao.OpenGl.Glu.TessEndCallback"/>
  43670. <seealso cref="T:Tao.OpenGl.Glu.TessEndDataCallback"/>
  43671. <seealso cref="T:Tao.OpenGl.Glu.TessErrorCallback"/>
  43672. <seealso cref="T:Tao.OpenGl.Glu.TessErrorDataCallback"/>
  43673. <seealso cref="T:Tao.OpenGl.Glu.TessVertexCallback"/>
  43674. <seealso cref="T:Tao.OpenGl.Glu.TessVertexDataCallback"/>
  43675. <seealso cref="M:Tao.OpenGl.Gl.glBegin(System.Int32)"/>
  43676. <seealso cref="M:Tao.OpenGl.Gl.glEdgeFlag(System.Int32)"/>
  43677. <seealso cref="M:Tao.OpenGl.Glu.gluErrorString(System.Int32)"/>
  43678. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  43679. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  43680. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  43681. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  43682. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  43683. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  43684. </member>
  43685. <member name="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)">
  43686. <summary>
  43687. Delimits a contour description.
  43688. </summary>
  43689. <param name="tess">
  43690. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  43691. </param>
  43692. <remarks>
  43693. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <b>gluTessEndContour</b> delimit the
  43694. definition of a polygon contour. Within each
  43695. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<b>gluTessEndContour</b> pair, there can
  43696. be zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>. The vertices specify
  43697. a closed contour (the last vertex of each contour is automatically linked to
  43698. the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/> reference page for more
  43699. details. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> can only be called between
  43700. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>.
  43701. </remarks>
  43702. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  43703. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  43704. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  43705. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  43706. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  43707. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  43708. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  43709. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  43710. </member>
  43711. <member name="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)">
  43712. <summary>
  43713. Delimits a polygon description.
  43714. </summary>
  43715. <param name="tess">
  43716. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  43717. </param>
  43718. <remarks>
  43719. <para>
  43720. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/> and <b>gluTessEndPolygon</b> delimit the
  43721. definition of a convex, concave or self-intersecting polygon. Within each
  43722. <see cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>/<b>gluTessEndPolygon</b> pair, there must
  43723. be one or more calls to
  43724. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>/<see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>. Within
  43725. each contour, there are zero or more calls to <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>.
  43726. The vertices specify a closed contour (the last vertex of each contour is
  43727. automatically linked to the first). See the <see cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>,
  43728. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>, and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  43729. reference pages for more details.
  43730. </para>
  43731. <para>
  43732. Once <b>gluTessEndPolygon</b> is called, the polygon is tessellated,
  43733. and the resulting triangles are described through callbacks. See
  43734. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> for descriptions of the callback functions.
  43735. </para>
  43736. <para>
  43737. <b>EXAMPLE</b>
  43738. </para>
  43739. <para>
  43740. The following describes a quadrilateral with a triangular hole:
  43741. </para>
  43742. <para>
  43743. <code>
  43744. Glu.gluTessBeginPolygon(tobj, null);
  43745. Glu.gluTessBeginContour(tobj);
  43746. Glu.gluTessVertex(tobj, v1, v1);
  43747. Glu.gluTessVertex(tobj, v2, v2);
  43748. Glu.gluTessVertex(tobj, v3, v3);
  43749. Glu.gluTessVertex(tobj, v4, v4);
  43750. Glu.gluTessEndContour(tobj);
  43751. Glu.gluTessBeginContour(tobj);
  43752. Glu.gluTessVertex(tobj, v5, v5);
  43753. Glu.gluTessVertex(tobj, v6, v6);
  43754. Glu.gluTessVertex(tobj, v7, v7);
  43755. Glu.gluTessEndContour(tobj);
  43756. Glu.gluTessEndPolygon(tobj);
  43757. </code>
  43758. </para>
  43759. </remarks>
  43760. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  43761. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  43762. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  43763. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  43764. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  43765. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  43766. <seealso cref="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])"/>
  43767. </member>
  43768. <member name="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)">
  43769. <summary>
  43770. Specifies a normal for a polygon.
  43771. </summary>
  43772. <param name="tess">
  43773. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  43774. </param>
  43775. <param name="x">
  43776. The x-coordinate component of a normal.
  43777. </param>
  43778. <param name="y">
  43779. The y-coordinate component of a normal.
  43780. </param>
  43781. <param name="z">
  43782. The z-coordinate component of a normal.
  43783. </param>
  43784. <remarks>
  43785. <para>
  43786. <b>gluTessNormal</b> describes a normal for a polygon that the program is
  43787. defining. All input data will be projected onto a plane perpendicular to one
  43788. of the three coordinate axes before tessellation and all output triangles
  43789. will be oriented CCW with respect to the normal (CW orientation can be
  43790. obtained by reversing the sign of the supplied normal). For example, if you
  43791. know that all polygons lie in the x-y plane, call
  43792. <c>Glu.gluTessNormal(tess, 0.0, 0.0, 1.0)</c> before rendering any polygons.
  43793. </para>
  43794. <para>
  43795. If the supplied normal is (0.0, 0.0, 0.0) (the initial value), the normal is
  43796. determined as follows. The direction of the normal, up to its sign, is found
  43797. by fitting a plane to the vertices, without regard to how the vertices are
  43798. connected. It is expected that the input data lies approximately in the
  43799. plane; otherwise, projection perpendicular to one of the three coordinate
  43800. axes may substantially change the geometry. The sign of the normal is chosen
  43801. so that the sum of the signed areas of all input contours is nonnegative
  43802. (where a CCW contour has positive area).
  43803. </para>
  43804. <para>
  43805. The supplied normal persists until it is changed by another call to
  43806. <b>gluTessNormal</b>.
  43807. </para>
  43808. </remarks>
  43809. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  43810. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  43811. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  43812. </member>
  43813. <member name="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)">
  43814. <summary>
  43815. Sets the property of a tessellation object.
  43816. </summary>
  43817. <param name="tess">
  43818. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  43819. </param>
  43820. <param name="which">
  43821. <para>
  43822. The property value to set. The following values are valid:
  43823. </para>
  43824. <para>
  43825. <list type="table">
  43826. <listheader>
  43827. <term>Value</term>
  43828. <description>Description</description>
  43829. </listheader>
  43830. <item>
  43831. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_RULE"/></term>
  43832. <description>
  43833. <para>
  43834. Determines which parts of the polygon are on the "interior".
  43835. <i>data</i> may be set to one of
  43836. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_ODD"/>,
  43837. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_NONZERO"/>,
  43838. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_POSITIVE"/>, or
  43839. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_NEGATIVE"/>, or
  43840. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_WINDING_ABS_GEQ_TWO"/>.
  43841. </para>
  43842. <para>
  43843. To understand how the winding rule works, consider that the
  43844. input contours partition the plane into regions. The winding
  43845. rule determines which of these regions are inside the
  43846. polygon.
  43847. </para>
  43848. <para>
  43849. For a single contour C, the winding number of a point x is
  43850. simply the signed number of revolutions we make around x as
  43851. we travel once around C (where CCW is positive). When there
  43852. are several contours, the individual winding numbers are
  43853. summed. This procedure associates a signed integer value
  43854. with each point x in the plane. Note that the winding number
  43855. is the same for all points in a single region.
  43856. </para>
  43857. <para>
  43858. The winding rule classifies a region as "inside" if its
  43859. winding number belongs to the chosen category (odd, nonzero,
  43860. positive, negative, or absolute value of at least two). The
  43861. previous GLU tessellator (prior to GLU 1.2) used the "odd"
  43862. rule. The "nonzero" rule is another common way to define the
  43863. interior. The other three rules are useful for polygon CSG
  43864. operations.
  43865. </para>
  43866. </description>
  43867. </item>
  43868. <item>
  43869. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_BOUNDARY_ONLY"/></term>
  43870. <description>
  43871. Is a boolean value ("value" should be set to
  43872. <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> or <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/>). When
  43873. set to <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>, a set of closed contours
  43874. separating the polygon interior and exterior are returned instead
  43875. of a tessellation. Exterior contours are oriented CCW with
  43876. respect to the normal; interior contours are oriented CW. The
  43877. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN"/> and
  43878. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_BEGIN_DATA"/> callbacks use the type
  43879. <see cref="F:Tao.OpenGl.Gl.GL_LINE_LOOP"/> for each contour.
  43880. </description>
  43881. </item>
  43882. <item>
  43883. <term><see cref="F:Tao.OpenGl.Glu.GLU_TESS_TOLERANCE"/></term>
  43884. <description>
  43885. <para>
  43886. Specifies a tolerance for merging features to reduce the size
  43887. of the output. For example, two vertices that are very close
  43888. to each other might be replaced by a single vertex. The
  43889. tolerance is multiplied by the largest coordinate magnitude
  43890. of any input vertex; this specifies the maximum distance that
  43891. any feature can move as the result of a single merge
  43892. operation. If a single feature takes part in several merge
  43893. operations, the total distance moved could be larger.
  43894. </para>
  43895. <para>
  43896. Feature merging is completely optional; the tolerance is only
  43897. a hint. The implementation is free to merge in some cases
  43898. and not in others, or to never merge features at all. The
  43899. initial tolerance is 0.
  43900. </para>
  43901. <para>
  43902. The current implementation merges vertices only if they are
  43903. exactly coincident, regardless of the current tolerance. A
  43904. vertex is spliced into an edge only if the implementation is
  43905. unable to distinguish which side of the edge the vertex lies
  43906. on. Two edges are merged only when both endpoints are
  43907. identical.
  43908. </para>
  43909. </description>
  43910. </item>
  43911. </list>
  43912. </para>
  43913. </param>
  43914. <param name="data">
  43915. The value of the indicated property.
  43916. </param>
  43917. <remarks>
  43918. <b>gluTessProperty</b> is used to control properties stored in a tessellation
  43919. object. These properties affect the way that the polygons are interpreted
  43920. and rendered.
  43921. </remarks>
  43922. <seealso cref="M:Tao.OpenGl.Glu.gluGetTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double[])"/>
  43923. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  43924. </member>
  43925. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[])">
  43926. <summary>
  43927. Specifies a vertex on a polygon.
  43928. </summary>
  43929. <param name="tess">
  43930. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  43931. </param>
  43932. <param name="location">
  43933. The location of the vertex.
  43934. </param>
  43935. <param name="data">
  43936. A pointer passed back to the program with the vertex callback (as specified
  43937. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  43938. </param>
  43939. <remarks>
  43940. <para>
  43941. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  43942. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  43943. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  43944. called four times. <b>gluTessVertex</b> can only be called between
  43945. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  43946. </para>
  43947. <para>
  43948. <i>data</i> normally points to a structure containing the vertex location,
  43949. as well as other per-vertex attributes such as color and normal. This
  43950. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  43951. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  43952. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  43953. </para>
  43954. <para>
  43955. <b>EXAMPLE</b>
  43956. </para>
  43957. <para>
  43958. The following describes a quadrilateral with a triangular hole:
  43959. </para>
  43960. <para>
  43961. <code>
  43962. Glu.gluTessBeginPolygon(tess, null);
  43963. Glu.gluTessBeginContour(tess);
  43964. Glu.gluTessVertex(tess, v1, v1);
  43965. Glu.gluTessVertex(tess, v2, v2);
  43966. Glu.gluTessVertex(tess, v3, v3);
  43967. Glu.gluTessVertex(tess, v4, v4);
  43968. Glu.gluTessEndContour(tess);
  43969. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  43970. Glu.gluTessBeginContour(tess);
  43971. Glu.gluTessVertex(tess, v5, v5);
  43972. Glu.gluTessVertex(tess, v6, v6);
  43973. Glu.gluTessVertex(tess, v7, v7);
  43974. Glu.gluTessEndContour(tess);
  43975. Glu.gluTessEndPolygon(tess);
  43976. </code>
  43977. </para>
  43978. <para>
  43979. <b>NOTES</b>
  43980. </para>
  43981. <para>
  43982. It is a common error to use a local variable for <i>location</i> or
  43983. <i>data</i> and store values into it as part of a loop. For example:
  43984. </para>
  43985. <para>
  43986. <code>
  43987. for(int i = 0; i &lt; NVERTICES; ++i) {
  43988. double data[3];
  43989. data[0] = vertex[i, 0];
  43990. data[1] = vertex[i, 1];
  43991. data[2] = vertex[i, 2];
  43992. Glu.gluTessVertex(tobj, data, data);
  43993. }
  43994. </code>
  43995. </para>
  43996. <para>
  43997. This doesn't work. Because the pointers specified by <i>location</i> and
  43998. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  43999. is executed, all the vertex coordinates but the very last set could be
  44000. overwritten before tessellation begins.
  44001. </para>
  44002. <para>
  44003. Two common symptoms of this problem are consists of a single point (when a
  44004. local variable is used for <i>data</i>) and a
  44005. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44006. is used for <i>location</i>).
  44007. </para>
  44008. </remarks>
  44009. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44010. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44011. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44012. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44013. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44014. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44015. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44016. </member>
  44017. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[0:,0:])">
  44018. <summary>
  44019. Specifies a vertex on a polygon.
  44020. </summary>
  44021. <param name="tess">
  44022. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44023. </param>
  44024. <param name="location">
  44025. The location of the vertex.
  44026. </param>
  44027. <param name="data">
  44028. A pointer passed back to the program with the vertex callback (as specified
  44029. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44030. </param>
  44031. <remarks>
  44032. <para>
  44033. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44034. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44035. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44036. called four times. <b>gluTessVertex</b> can only be called between
  44037. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44038. </para>
  44039. <para>
  44040. <i>data</i> normally points to a structure containing the vertex location,
  44041. as well as other per-vertex attributes such as color and normal. This
  44042. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44043. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44044. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44045. </para>
  44046. <para>
  44047. <b>EXAMPLE</b>
  44048. </para>
  44049. <para>
  44050. The following describes a quadrilateral with a triangular hole:
  44051. </para>
  44052. <para>
  44053. <code>
  44054. Glu.gluTessBeginPolygon(tess, null);
  44055. Glu.gluTessBeginContour(tess);
  44056. Glu.gluTessVertex(tess, v1, v1);
  44057. Glu.gluTessVertex(tess, v2, v2);
  44058. Glu.gluTessVertex(tess, v3, v3);
  44059. Glu.gluTessVertex(tess, v4, v4);
  44060. Glu.gluTessEndContour(tess);
  44061. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44062. Glu.gluTessBeginContour(tess);
  44063. Glu.gluTessVertex(tess, v5, v5);
  44064. Glu.gluTessVertex(tess, v6, v6);
  44065. Glu.gluTessVertex(tess, v7, v7);
  44066. Glu.gluTessEndContour(tess);
  44067. Glu.gluTessEndPolygon(tess);
  44068. </code>
  44069. </para>
  44070. <para>
  44071. <b>NOTES</b>
  44072. </para>
  44073. <para>
  44074. It is a common error to use a local variable for <i>location</i> or
  44075. <i>data</i> and store values into it as part of a loop. For example:
  44076. </para>
  44077. <para>
  44078. <code>
  44079. for(int i = 0; i &lt; NVERTICES; ++i) {
  44080. double data[3];
  44081. data[0] = vertex[i, 0];
  44082. data[1] = vertex[i, 1];
  44083. data[2] = vertex[i, 2];
  44084. Glu.gluTessVertex(tobj, data, data);
  44085. }
  44086. </code>
  44087. </para>
  44088. <para>
  44089. This doesn't work. Because the pointers specified by <i>location</i> and
  44090. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44091. is executed, all the vertex coordinates but the very last set could be
  44092. overwritten before tessellation begins.
  44093. </para>
  44094. <para>
  44095. Two common symptoms of this problem are consists of a single point (when a
  44096. local variable is used for <i>data</i>) and a
  44097. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44098. is used for <i>location</i>).
  44099. </para>
  44100. </remarks>
  44101. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44102. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44103. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44104. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44105. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44106. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44107. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44108. </member>
  44109. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Byte[0:,0:,0:])">
  44110. <summary>
  44111. Specifies a vertex on a polygon.
  44112. </summary>
  44113. <param name="tess">
  44114. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44115. </param>
  44116. <param name="location">
  44117. The location of the vertex.
  44118. </param>
  44119. <param name="data">
  44120. A pointer passed back to the program with the vertex callback (as specified
  44121. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44122. </param>
  44123. <remarks>
  44124. <para>
  44125. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44126. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44127. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44128. called four times. <b>gluTessVertex</b> can only be called between
  44129. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44130. </para>
  44131. <para>
  44132. <i>data</i> normally points to a structure containing the vertex location,
  44133. as well as other per-vertex attributes such as color and normal. This
  44134. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44135. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44136. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44137. </para>
  44138. <para>
  44139. <b>EXAMPLE</b>
  44140. </para>
  44141. <para>
  44142. The following describes a quadrilateral with a triangular hole:
  44143. </para>
  44144. <para>
  44145. <code>
  44146. Glu.gluTessBeginPolygon(tess, null);
  44147. Glu.gluTessBeginContour(tess);
  44148. Glu.gluTessVertex(tess, v1, v1);
  44149. Glu.gluTessVertex(tess, v2, v2);
  44150. Glu.gluTessVertex(tess, v3, v3);
  44151. Glu.gluTessVertex(tess, v4, v4);
  44152. Glu.gluTessEndContour(tess);
  44153. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44154. Glu.gluTessBeginContour(tess);
  44155. Glu.gluTessVertex(tess, v5, v5);
  44156. Glu.gluTessVertex(tess, v6, v6);
  44157. Glu.gluTessVertex(tess, v7, v7);
  44158. Glu.gluTessEndContour(tess);
  44159. Glu.gluTessEndPolygon(tess);
  44160. </code>
  44161. </para>
  44162. <para>
  44163. <b>NOTES</b>
  44164. </para>
  44165. <para>
  44166. It is a common error to use a local variable for <i>location</i> or
  44167. <i>data</i> and store values into it as part of a loop. For example:
  44168. </para>
  44169. <para>
  44170. <code>
  44171. for(int i = 0; i &lt; NVERTICES; ++i) {
  44172. double data[3];
  44173. data[0] = vertex[i, 0];
  44174. data[1] = vertex[i, 1];
  44175. data[2] = vertex[i, 2];
  44176. Glu.gluTessVertex(tobj, data, data);
  44177. }
  44178. </code>
  44179. </para>
  44180. <para>
  44181. This doesn't work. Because the pointers specified by <i>location</i> and
  44182. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44183. is executed, all the vertex coordinates but the very last set could be
  44184. overwritten before tessellation begins.
  44185. </para>
  44186. <para>
  44187. Two common symptoms of this problem are consists of a single point (when a
  44188. local variable is used for <i>data</i>) and a
  44189. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44190. is used for <i>location</i>).
  44191. </para>
  44192. </remarks>
  44193. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44194. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44195. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44196. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44197. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44198. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44199. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44200. </member>
  44201. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Double[])">
  44202. <summary>
  44203. Specifies a vertex on a polygon.
  44204. </summary>
  44205. <param name="tess">
  44206. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44207. </param>
  44208. <param name="location">
  44209. The location of the vertex.
  44210. </param>
  44211. <param name="data">
  44212. A pointer passed back to the program with the vertex callback (as specified
  44213. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44214. </param>
  44215. <remarks>
  44216. <para>
  44217. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44218. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44219. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44220. called four times. <b>gluTessVertex</b> can only be called between
  44221. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44222. </para>
  44223. <para>
  44224. <i>data</i> normally points to a structure containing the vertex location,
  44225. as well as other per-vertex attributes such as color and normal. This
  44226. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44227. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44228. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44229. </para>
  44230. <para>
  44231. <b>EXAMPLE</b>
  44232. </para>
  44233. <para>
  44234. The following describes a quadrilateral with a triangular hole:
  44235. </para>
  44236. <para>
  44237. <code>
  44238. Glu.gluTessBeginPolygon(tess, null);
  44239. Glu.gluTessBeginContour(tess);
  44240. Glu.gluTessVertex(tess, v1, v1);
  44241. Glu.gluTessVertex(tess, v2, v2);
  44242. Glu.gluTessVertex(tess, v3, v3);
  44243. Glu.gluTessVertex(tess, v4, v4);
  44244. Glu.gluTessEndContour(tess);
  44245. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44246. Glu.gluTessBeginContour(tess);
  44247. Glu.gluTessVertex(tess, v5, v5);
  44248. Glu.gluTessVertex(tess, v6, v6);
  44249. Glu.gluTessVertex(tess, v7, v7);
  44250. Glu.gluTessEndContour(tess);
  44251. Glu.gluTessEndPolygon(tess);
  44252. </code>
  44253. </para>
  44254. <para>
  44255. <b>NOTES</b>
  44256. </para>
  44257. <para>
  44258. It is a common error to use a local variable for <i>location</i> or
  44259. <i>data</i> and store values into it as part of a loop. For example:
  44260. </para>
  44261. <para>
  44262. <code>
  44263. for(int i = 0; i &lt; NVERTICES; ++i) {
  44264. double data[3];
  44265. data[0] = vertex[i, 0];
  44266. data[1] = vertex[i, 1];
  44267. data[2] = vertex[i, 2];
  44268. Glu.gluTessVertex(tobj, data, data);
  44269. }
  44270. </code>
  44271. </para>
  44272. <para>
  44273. This doesn't work. Because the pointers specified by <i>location</i> and
  44274. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44275. is executed, all the vertex coordinates but the very last set could be
  44276. overwritten before tessellation begins.
  44277. </para>
  44278. <para>
  44279. Two common symptoms of this problem are consists of a single point (when a
  44280. local variable is used for <i>data</i>) and a
  44281. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44282. is used for <i>location</i>).
  44283. </para>
  44284. </remarks>
  44285. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44286. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44287. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44288. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44289. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44290. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44291. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44292. </member>
  44293. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Double[0:,0:])">
  44294. <summary>
  44295. Specifies a vertex on a polygon.
  44296. </summary>
  44297. <param name="tess">
  44298. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44299. </param>
  44300. <param name="location">
  44301. The location of the vertex.
  44302. </param>
  44303. <param name="data">
  44304. A pointer passed back to the program with the vertex callback (as specified
  44305. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44306. </param>
  44307. <remarks>
  44308. <para>
  44309. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44310. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44311. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44312. called four times. <b>gluTessVertex</b> can only be called between
  44313. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44314. </para>
  44315. <para>
  44316. <i>data</i> normally points to a structure containing the vertex location,
  44317. as well as other per-vertex attributes such as color and normal. This
  44318. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44319. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44320. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44321. </para>
  44322. <para>
  44323. <b>EXAMPLE</b>
  44324. </para>
  44325. <para>
  44326. The following describes a quadrilateral with a triangular hole:
  44327. </para>
  44328. <para>
  44329. <code>
  44330. Glu.gluTessBeginPolygon(tess, null);
  44331. Glu.gluTessBeginContour(tess);
  44332. Glu.gluTessVertex(tess, v1, v1);
  44333. Glu.gluTessVertex(tess, v2, v2);
  44334. Glu.gluTessVertex(tess, v3, v3);
  44335. Glu.gluTessVertex(tess, v4, v4);
  44336. Glu.gluTessEndContour(tess);
  44337. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44338. Glu.gluTessBeginContour(tess);
  44339. Glu.gluTessVertex(tess, v5, v5);
  44340. Glu.gluTessVertex(tess, v6, v6);
  44341. Glu.gluTessVertex(tess, v7, v7);
  44342. Glu.gluTessEndContour(tess);
  44343. Glu.gluTessEndPolygon(tess);
  44344. </code>
  44345. </para>
  44346. <para>
  44347. <b>NOTES</b>
  44348. </para>
  44349. <para>
  44350. It is a common error to use a local variable for <i>location</i> or
  44351. <i>data</i> and store values into it as part of a loop. For example:
  44352. </para>
  44353. <para>
  44354. <code>
  44355. for(int i = 0; i &lt; NVERTICES; ++i) {
  44356. double data[3];
  44357. data[0] = vertex[i, 0];
  44358. data[1] = vertex[i, 1];
  44359. data[2] = vertex[i, 2];
  44360. Glu.gluTessVertex(tobj, data, data);
  44361. }
  44362. </code>
  44363. </para>
  44364. <para>
  44365. This doesn't work. Because the pointers specified by <i>location</i> and
  44366. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44367. is executed, all the vertex coordinates but the very last set could be
  44368. overwritten before tessellation begins.
  44369. </para>
  44370. <para>
  44371. Two common symptoms of this problem are consists of a single point (when a
  44372. local variable is used for <i>data</i>) and a
  44373. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44374. is used for <i>location</i>).
  44375. </para>
  44376. </remarks>
  44377. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44378. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44379. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44380. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44381. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44382. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44383. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44384. </member>
  44385. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Double[0:,0:,0:])">
  44386. <summary>
  44387. Specifies a vertex on a polygon.
  44388. </summary>
  44389. <param name="tess">
  44390. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44391. </param>
  44392. <param name="location">
  44393. The location of the vertex.
  44394. </param>
  44395. <param name="data">
  44396. A pointer passed back to the program with the vertex callback (as specified
  44397. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44398. </param>
  44399. <remarks>
  44400. <para>
  44401. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44402. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44403. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44404. called four times. <b>gluTessVertex</b> can only be called between
  44405. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44406. </para>
  44407. <para>
  44408. <i>data</i> normally points to a structure containing the vertex location,
  44409. as well as other per-vertex attributes such as color and normal. This
  44410. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44411. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44412. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44413. </para>
  44414. <para>
  44415. <b>EXAMPLE</b>
  44416. </para>
  44417. <para>
  44418. The following describes a quadrilateral with a triangular hole:
  44419. </para>
  44420. <para>
  44421. <code>
  44422. Glu.gluTessBeginPolygon(tess, null);
  44423. Glu.gluTessBeginContour(tess);
  44424. Glu.gluTessVertex(tess, v1, v1);
  44425. Glu.gluTessVertex(tess, v2, v2);
  44426. Glu.gluTessVertex(tess, v3, v3);
  44427. Glu.gluTessVertex(tess, v4, v4);
  44428. Glu.gluTessEndContour(tess);
  44429. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44430. Glu.gluTessBeginContour(tess);
  44431. Glu.gluTessVertex(tess, v5, v5);
  44432. Glu.gluTessVertex(tess, v6, v6);
  44433. Glu.gluTessVertex(tess, v7, v7);
  44434. Glu.gluTessEndContour(tess);
  44435. Glu.gluTessEndPolygon(tess);
  44436. </code>
  44437. </para>
  44438. <para>
  44439. <b>NOTES</b>
  44440. </para>
  44441. <para>
  44442. It is a common error to use a local variable for <i>location</i> or
  44443. <i>data</i> and store values into it as part of a loop. For example:
  44444. </para>
  44445. <para>
  44446. <code>
  44447. for(int i = 0; i &lt; NVERTICES; ++i) {
  44448. double data[3];
  44449. data[0] = vertex[i, 0];
  44450. data[1] = vertex[i, 1];
  44451. data[2] = vertex[i, 2];
  44452. Glu.gluTessVertex(tobj, data, data);
  44453. }
  44454. </code>
  44455. </para>
  44456. <para>
  44457. This doesn't work. Because the pointers specified by <i>location</i> and
  44458. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44459. is executed, all the vertex coordinates but the very last set could be
  44460. overwritten before tessellation begins.
  44461. </para>
  44462. <para>
  44463. Two common symptoms of this problem are consists of a single point (when a
  44464. local variable is used for <i>data</i>) and a
  44465. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44466. is used for <i>location</i>).
  44467. </para>
  44468. </remarks>
  44469. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44470. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44471. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44472. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44473. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44474. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44475. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44476. </member>
  44477. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Int16[])">
  44478. <summary>
  44479. Specifies a vertex on a polygon.
  44480. </summary>
  44481. <param name="tess">
  44482. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44483. </param>
  44484. <param name="location">
  44485. The location of the vertex.
  44486. </param>
  44487. <param name="data">
  44488. A pointer passed back to the program with the vertex callback (as specified
  44489. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44490. </param>
  44491. <remarks>
  44492. <para>
  44493. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44494. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44495. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44496. called four times. <b>gluTessVertex</b> can only be called between
  44497. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44498. </para>
  44499. <para>
  44500. <i>data</i> normally points to a structure containing the vertex location,
  44501. as well as other per-vertex attributes such as color and normal. This
  44502. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44503. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44504. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44505. </para>
  44506. <para>
  44507. <b>EXAMPLE</b>
  44508. </para>
  44509. <para>
  44510. The following describes a quadrilateral with a triangular hole:
  44511. </para>
  44512. <para>
  44513. <code>
  44514. Glu.gluTessBeginPolygon(tess, null);
  44515. Glu.gluTessBeginContour(tess);
  44516. Glu.gluTessVertex(tess, v1, v1);
  44517. Glu.gluTessVertex(tess, v2, v2);
  44518. Glu.gluTessVertex(tess, v3, v3);
  44519. Glu.gluTessVertex(tess, v4, v4);
  44520. Glu.gluTessEndContour(tess);
  44521. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44522. Glu.gluTessBeginContour(tess);
  44523. Glu.gluTessVertex(tess, v5, v5);
  44524. Glu.gluTessVertex(tess, v6, v6);
  44525. Glu.gluTessVertex(tess, v7, v7);
  44526. Glu.gluTessEndContour(tess);
  44527. Glu.gluTessEndPolygon(tess);
  44528. </code>
  44529. </para>
  44530. <para>
  44531. <b>NOTES</b>
  44532. </para>
  44533. <para>
  44534. It is a common error to use a local variable for <i>location</i> or
  44535. <i>data</i> and store values into it as part of a loop. For example:
  44536. </para>
  44537. <para>
  44538. <code>
  44539. for(int i = 0; i &lt; NVERTICES; ++i) {
  44540. double data[3];
  44541. data[0] = vertex[i, 0];
  44542. data[1] = vertex[i, 1];
  44543. data[2] = vertex[i, 2];
  44544. Glu.gluTessVertex(tobj, data, data);
  44545. }
  44546. </code>
  44547. </para>
  44548. <para>
  44549. This doesn't work. Because the pointers specified by <i>location</i> and
  44550. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44551. is executed, all the vertex coordinates but the very last set could be
  44552. overwritten before tessellation begins.
  44553. </para>
  44554. <para>
  44555. Two common symptoms of this problem are consists of a single point (when a
  44556. local variable is used for <i>data</i>) and a
  44557. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44558. is used for <i>location</i>).
  44559. </para>
  44560. </remarks>
  44561. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44562. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44563. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44564. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44565. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44566. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44567. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44568. </member>
  44569. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Int16[0:,0:])">
  44570. <summary>
  44571. Specifies a vertex on a polygon.
  44572. </summary>
  44573. <param name="tess">
  44574. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44575. </param>
  44576. <param name="location">
  44577. The location of the vertex.
  44578. </param>
  44579. <param name="data">
  44580. A pointer passed back to the program with the vertex callback (as specified
  44581. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44582. </param>
  44583. <remarks>
  44584. <para>
  44585. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44586. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44587. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44588. called four times. <b>gluTessVertex</b> can only be called between
  44589. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44590. </para>
  44591. <para>
  44592. <i>data</i> normally points to a structure containing the vertex location,
  44593. as well as other per-vertex attributes such as color and normal. This
  44594. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44595. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44596. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44597. </para>
  44598. <para>
  44599. <b>EXAMPLE</b>
  44600. </para>
  44601. <para>
  44602. The following describes a quadrilateral with a triangular hole:
  44603. </para>
  44604. <para>
  44605. <code>
  44606. Glu.gluTessBeginPolygon(tess, null);
  44607. Glu.gluTessBeginContour(tess);
  44608. Glu.gluTessVertex(tess, v1, v1);
  44609. Glu.gluTessVertex(tess, v2, v2);
  44610. Glu.gluTessVertex(tess, v3, v3);
  44611. Glu.gluTessVertex(tess, v4, v4);
  44612. Glu.gluTessEndContour(tess);
  44613. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44614. Glu.gluTessBeginContour(tess);
  44615. Glu.gluTessVertex(tess, v5, v5);
  44616. Glu.gluTessVertex(tess, v6, v6);
  44617. Glu.gluTessVertex(tess, v7, v7);
  44618. Glu.gluTessEndContour(tess);
  44619. Glu.gluTessEndPolygon(tess);
  44620. </code>
  44621. </para>
  44622. <para>
  44623. <b>NOTES</b>
  44624. </para>
  44625. <para>
  44626. It is a common error to use a local variable for <i>location</i> or
  44627. <i>data</i> and store values into it as part of a loop. For example:
  44628. </para>
  44629. <para>
  44630. <code>
  44631. for(int i = 0; i &lt; NVERTICES; ++i) {
  44632. double data[3];
  44633. data[0] = vertex[i, 0];
  44634. data[1] = vertex[i, 1];
  44635. data[2] = vertex[i, 2];
  44636. Glu.gluTessVertex(tobj, data, data);
  44637. }
  44638. </code>
  44639. </para>
  44640. <para>
  44641. This doesn't work. Because the pointers specified by <i>location</i> and
  44642. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44643. is executed, all the vertex coordinates but the very last set could be
  44644. overwritten before tessellation begins.
  44645. </para>
  44646. <para>
  44647. Two common symptoms of this problem are consists of a single point (when a
  44648. local variable is used for <i>data</i>) and a
  44649. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44650. is used for <i>location</i>).
  44651. </para>
  44652. </remarks>
  44653. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44654. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44655. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44656. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44657. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44658. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44659. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44660. </member>
  44661. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Int16[0:,0:,0:])">
  44662. <summary>
  44663. Specifies a vertex on a polygon.
  44664. </summary>
  44665. <param name="tess">
  44666. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44667. </param>
  44668. <param name="location">
  44669. The location of the vertex.
  44670. </param>
  44671. <param name="data">
  44672. A pointer passed back to the program with the vertex callback (as specified
  44673. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44674. </param>
  44675. <remarks>
  44676. <para>
  44677. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44678. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44679. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44680. called four times. <b>gluTessVertex</b> can only be called between
  44681. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44682. </para>
  44683. <para>
  44684. <i>data</i> normally points to a structure containing the vertex location,
  44685. as well as other per-vertex attributes such as color and normal. This
  44686. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44687. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44688. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44689. </para>
  44690. <para>
  44691. <b>EXAMPLE</b>
  44692. </para>
  44693. <para>
  44694. The following describes a quadrilateral with a triangular hole:
  44695. </para>
  44696. <para>
  44697. <code>
  44698. Glu.gluTessBeginPolygon(tess, null);
  44699. Glu.gluTessBeginContour(tess);
  44700. Glu.gluTessVertex(tess, v1, v1);
  44701. Glu.gluTessVertex(tess, v2, v2);
  44702. Glu.gluTessVertex(tess, v3, v3);
  44703. Glu.gluTessVertex(tess, v4, v4);
  44704. Glu.gluTessEndContour(tess);
  44705. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44706. Glu.gluTessBeginContour(tess);
  44707. Glu.gluTessVertex(tess, v5, v5);
  44708. Glu.gluTessVertex(tess, v6, v6);
  44709. Glu.gluTessVertex(tess, v7, v7);
  44710. Glu.gluTessEndContour(tess);
  44711. Glu.gluTessEndPolygon(tess);
  44712. </code>
  44713. </para>
  44714. <para>
  44715. <b>NOTES</b>
  44716. </para>
  44717. <para>
  44718. It is a common error to use a local variable for <i>location</i> or
  44719. <i>data</i> and store values into it as part of a loop. For example:
  44720. </para>
  44721. <para>
  44722. <code>
  44723. for(int i = 0; i &lt; NVERTICES; ++i) {
  44724. double data[3];
  44725. data[0] = vertex[i, 0];
  44726. data[1] = vertex[i, 1];
  44727. data[2] = vertex[i, 2];
  44728. Glu.gluTessVertex(tobj, data, data);
  44729. }
  44730. </code>
  44731. </para>
  44732. <para>
  44733. This doesn't work. Because the pointers specified by <i>location</i> and
  44734. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44735. is executed, all the vertex coordinates but the very last set could be
  44736. overwritten before tessellation begins.
  44737. </para>
  44738. <para>
  44739. Two common symptoms of this problem are consists of a single point (when a
  44740. local variable is used for <i>data</i>) and a
  44741. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44742. is used for <i>location</i>).
  44743. </para>
  44744. </remarks>
  44745. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44746. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44747. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44748. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44749. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44750. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44751. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44752. </member>
  44753. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Int32[])">
  44754. <summary>
  44755. Specifies a vertex on a polygon.
  44756. </summary>
  44757. <param name="tess">
  44758. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44759. </param>
  44760. <param name="location">
  44761. The location of the vertex.
  44762. </param>
  44763. <param name="data">
  44764. A pointer passed back to the program with the vertex callback (as specified
  44765. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44766. </param>
  44767. <remarks>
  44768. <para>
  44769. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44770. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44771. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44772. called four times. <b>gluTessVertex</b> can only be called between
  44773. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44774. </para>
  44775. <para>
  44776. <i>data</i> normally points to a structure containing the vertex location,
  44777. as well as other per-vertex attributes such as color and normal. This
  44778. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44779. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44780. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44781. </para>
  44782. <para>
  44783. <b>EXAMPLE</b>
  44784. </para>
  44785. <para>
  44786. The following describes a quadrilateral with a triangular hole:
  44787. </para>
  44788. <para>
  44789. <code>
  44790. Glu.gluTessBeginPolygon(tess, null);
  44791. Glu.gluTessBeginContour(tess);
  44792. Glu.gluTessVertex(tess, v1, v1);
  44793. Glu.gluTessVertex(tess, v2, v2);
  44794. Glu.gluTessVertex(tess, v3, v3);
  44795. Glu.gluTessVertex(tess, v4, v4);
  44796. Glu.gluTessEndContour(tess);
  44797. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44798. Glu.gluTessBeginContour(tess);
  44799. Glu.gluTessVertex(tess, v5, v5);
  44800. Glu.gluTessVertex(tess, v6, v6);
  44801. Glu.gluTessVertex(tess, v7, v7);
  44802. Glu.gluTessEndContour(tess);
  44803. Glu.gluTessEndPolygon(tess);
  44804. </code>
  44805. </para>
  44806. <para>
  44807. <b>NOTES</b>
  44808. </para>
  44809. <para>
  44810. It is a common error to use a local variable for <i>location</i> or
  44811. <i>data</i> and store values into it as part of a loop. For example:
  44812. </para>
  44813. <para>
  44814. <code>
  44815. for(int i = 0; i &lt; NVERTICES; ++i) {
  44816. double data[3];
  44817. data[0] = vertex[i, 0];
  44818. data[1] = vertex[i, 1];
  44819. data[2] = vertex[i, 2];
  44820. Glu.gluTessVertex(tobj, data, data);
  44821. }
  44822. </code>
  44823. </para>
  44824. <para>
  44825. This doesn't work. Because the pointers specified by <i>location</i> and
  44826. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44827. is executed, all the vertex coordinates but the very last set could be
  44828. overwritten before tessellation begins.
  44829. </para>
  44830. <para>
  44831. Two common symptoms of this problem are consists of a single point (when a
  44832. local variable is used for <i>data</i>) and a
  44833. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44834. is used for <i>location</i>).
  44835. </para>
  44836. </remarks>
  44837. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44838. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44839. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44840. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44841. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44842. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44843. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44844. </member>
  44845. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Int32[0:,0:])">
  44846. <summary>
  44847. Specifies a vertex on a polygon.
  44848. </summary>
  44849. <param name="tess">
  44850. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44851. </param>
  44852. <param name="location">
  44853. The location of the vertex.
  44854. </param>
  44855. <param name="data">
  44856. A pointer passed back to the program with the vertex callback (as specified
  44857. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44858. </param>
  44859. <remarks>
  44860. <para>
  44861. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44862. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44863. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44864. called four times. <b>gluTessVertex</b> can only be called between
  44865. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44866. </para>
  44867. <para>
  44868. <i>data</i> normally points to a structure containing the vertex location,
  44869. as well as other per-vertex attributes such as color and normal. This
  44870. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44871. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44872. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44873. </para>
  44874. <para>
  44875. <b>EXAMPLE</b>
  44876. </para>
  44877. <para>
  44878. The following describes a quadrilateral with a triangular hole:
  44879. </para>
  44880. <para>
  44881. <code>
  44882. Glu.gluTessBeginPolygon(tess, null);
  44883. Glu.gluTessBeginContour(tess);
  44884. Glu.gluTessVertex(tess, v1, v1);
  44885. Glu.gluTessVertex(tess, v2, v2);
  44886. Glu.gluTessVertex(tess, v3, v3);
  44887. Glu.gluTessVertex(tess, v4, v4);
  44888. Glu.gluTessEndContour(tess);
  44889. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44890. Glu.gluTessBeginContour(tess);
  44891. Glu.gluTessVertex(tess, v5, v5);
  44892. Glu.gluTessVertex(tess, v6, v6);
  44893. Glu.gluTessVertex(tess, v7, v7);
  44894. Glu.gluTessEndContour(tess);
  44895. Glu.gluTessEndPolygon(tess);
  44896. </code>
  44897. </para>
  44898. <para>
  44899. <b>NOTES</b>
  44900. </para>
  44901. <para>
  44902. It is a common error to use a local variable for <i>location</i> or
  44903. <i>data</i> and store values into it as part of a loop. For example:
  44904. </para>
  44905. <para>
  44906. <code>
  44907. for(int i = 0; i &lt; NVERTICES; ++i) {
  44908. double data[3];
  44909. data[0] = vertex[i, 0];
  44910. data[1] = vertex[i, 1];
  44911. data[2] = vertex[i, 2];
  44912. Glu.gluTessVertex(tobj, data, data);
  44913. }
  44914. </code>
  44915. </para>
  44916. <para>
  44917. This doesn't work. Because the pointers specified by <i>location</i> and
  44918. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44919. is executed, all the vertex coordinates but the very last set could be
  44920. overwritten before tessellation begins.
  44921. </para>
  44922. <para>
  44923. Two common symptoms of this problem are consists of a single point (when a
  44924. local variable is used for <i>data</i>) and a
  44925. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  44926. is used for <i>location</i>).
  44927. </para>
  44928. </remarks>
  44929. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  44930. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  44931. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  44932. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  44933. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  44934. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  44935. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  44936. </member>
  44937. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Int32[0:,0:,0:])">
  44938. <summary>
  44939. Specifies a vertex on a polygon.
  44940. </summary>
  44941. <param name="tess">
  44942. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  44943. </param>
  44944. <param name="location">
  44945. The location of the vertex.
  44946. </param>
  44947. <param name="data">
  44948. A pointer passed back to the program with the vertex callback (as specified
  44949. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  44950. </param>
  44951. <remarks>
  44952. <para>
  44953. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  44954. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  44955. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  44956. called four times. <b>gluTessVertex</b> can only be called between
  44957. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  44958. </para>
  44959. <para>
  44960. <i>data</i> normally points to a structure containing the vertex location,
  44961. as well as other per-vertex attributes such as color and normal. This
  44962. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  44963. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  44964. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  44965. </para>
  44966. <para>
  44967. <b>EXAMPLE</b>
  44968. </para>
  44969. <para>
  44970. The following describes a quadrilateral with a triangular hole:
  44971. </para>
  44972. <para>
  44973. <code>
  44974. Glu.gluTessBeginPolygon(tess, null);
  44975. Glu.gluTessBeginContour(tess);
  44976. Glu.gluTessVertex(tess, v1, v1);
  44977. Glu.gluTessVertex(tess, v2, v2);
  44978. Glu.gluTessVertex(tess, v3, v3);
  44979. Glu.gluTessVertex(tess, v4, v4);
  44980. Glu.gluTessEndContour(tess);
  44981. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  44982. Glu.gluTessBeginContour(tess);
  44983. Glu.gluTessVertex(tess, v5, v5);
  44984. Glu.gluTessVertex(tess, v6, v6);
  44985. Glu.gluTessVertex(tess, v7, v7);
  44986. Glu.gluTessEndContour(tess);
  44987. Glu.gluTessEndPolygon(tess);
  44988. </code>
  44989. </para>
  44990. <para>
  44991. <b>NOTES</b>
  44992. </para>
  44993. <para>
  44994. It is a common error to use a local variable for <i>location</i> or
  44995. <i>data</i> and store values into it as part of a loop. For example:
  44996. </para>
  44997. <para>
  44998. <code>
  44999. for(int i = 0; i &lt; NVERTICES; ++i) {
  45000. double data[3];
  45001. data[0] = vertex[i, 0];
  45002. data[1] = vertex[i, 1];
  45003. data[2] = vertex[i, 2];
  45004. Glu.gluTessVertex(tobj, data, data);
  45005. }
  45006. </code>
  45007. </para>
  45008. <para>
  45009. This doesn't work. Because the pointers specified by <i>location</i> and
  45010. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45011. is executed, all the vertex coordinates but the very last set could be
  45012. overwritten before tessellation begins.
  45013. </para>
  45014. <para>
  45015. Two common symptoms of this problem are consists of a single point (when a
  45016. local variable is used for <i>data</i>) and a
  45017. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45018. is used for <i>location</i>).
  45019. </para>
  45020. </remarks>
  45021. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45022. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45023. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45024. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45025. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45026. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45027. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45028. </member>
  45029. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Single[])">
  45030. <summary>
  45031. Specifies a vertex on a polygon.
  45032. </summary>
  45033. <param name="tess">
  45034. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45035. </param>
  45036. <param name="location">
  45037. The location of the vertex.
  45038. </param>
  45039. <param name="data">
  45040. A pointer passed back to the program with the vertex callback (as specified
  45041. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45042. </param>
  45043. <remarks>
  45044. <para>
  45045. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45046. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45047. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45048. called four times. <b>gluTessVertex</b> can only be called between
  45049. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45050. </para>
  45051. <para>
  45052. <i>data</i> normally points to a structure containing the vertex location,
  45053. as well as other per-vertex attributes such as color and normal. This
  45054. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45055. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45056. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45057. </para>
  45058. <para>
  45059. <b>EXAMPLE</b>
  45060. </para>
  45061. <para>
  45062. The following describes a quadrilateral with a triangular hole:
  45063. </para>
  45064. <para>
  45065. <code>
  45066. Glu.gluTessBeginPolygon(tess, null);
  45067. Glu.gluTessBeginContour(tess);
  45068. Glu.gluTessVertex(tess, v1, v1);
  45069. Glu.gluTessVertex(tess, v2, v2);
  45070. Glu.gluTessVertex(tess, v3, v3);
  45071. Glu.gluTessVertex(tess, v4, v4);
  45072. Glu.gluTessEndContour(tess);
  45073. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45074. Glu.gluTessBeginContour(tess);
  45075. Glu.gluTessVertex(tess, v5, v5);
  45076. Glu.gluTessVertex(tess, v6, v6);
  45077. Glu.gluTessVertex(tess, v7, v7);
  45078. Glu.gluTessEndContour(tess);
  45079. Glu.gluTessEndPolygon(tess);
  45080. </code>
  45081. </para>
  45082. <para>
  45083. <b>NOTES</b>
  45084. </para>
  45085. <para>
  45086. It is a common error to use a local variable for <i>location</i> or
  45087. <i>data</i> and store values into it as part of a loop. For example:
  45088. </para>
  45089. <para>
  45090. <code>
  45091. for(int i = 0; i &lt; NVERTICES; ++i) {
  45092. double data[3];
  45093. data[0] = vertex[i, 0];
  45094. data[1] = vertex[i, 1];
  45095. data[2] = vertex[i, 2];
  45096. Glu.gluTessVertex(tobj, data, data);
  45097. }
  45098. </code>
  45099. </para>
  45100. <para>
  45101. This doesn't work. Because the pointers specified by <i>location</i> and
  45102. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45103. is executed, all the vertex coordinates but the very last set could be
  45104. overwritten before tessellation begins.
  45105. </para>
  45106. <para>
  45107. Two common symptoms of this problem are consists of a single point (when a
  45108. local variable is used for <i>data</i>) and a
  45109. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45110. is used for <i>location</i>).
  45111. </para>
  45112. </remarks>
  45113. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45114. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45115. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45116. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45117. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45118. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45119. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45120. </member>
  45121. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Single[0:,0:])">
  45122. <summary>
  45123. Specifies a vertex on a polygon.
  45124. </summary>
  45125. <param name="tess">
  45126. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45127. </param>
  45128. <param name="location">
  45129. The location of the vertex.
  45130. </param>
  45131. <param name="data">
  45132. A pointer passed back to the program with the vertex callback (as specified
  45133. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45134. </param>
  45135. <remarks>
  45136. <para>
  45137. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45138. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45139. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45140. called four times. <b>gluTessVertex</b> can only be called between
  45141. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45142. </para>
  45143. <para>
  45144. <i>data</i> normally points to a structure containing the vertex location,
  45145. as well as other per-vertex attributes such as color and normal. This
  45146. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45147. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45148. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45149. </para>
  45150. <para>
  45151. <b>EXAMPLE</b>
  45152. </para>
  45153. <para>
  45154. The following describes a quadrilateral with a triangular hole:
  45155. </para>
  45156. <para>
  45157. <code>
  45158. Glu.gluTessBeginPolygon(tess, null);
  45159. Glu.gluTessBeginContour(tess);
  45160. Glu.gluTessVertex(tess, v1, v1);
  45161. Glu.gluTessVertex(tess, v2, v2);
  45162. Glu.gluTessVertex(tess, v3, v3);
  45163. Glu.gluTessVertex(tess, v4, v4);
  45164. Glu.gluTessEndContour(tess);
  45165. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45166. Glu.gluTessBeginContour(tess);
  45167. Glu.gluTessVertex(tess, v5, v5);
  45168. Glu.gluTessVertex(tess, v6, v6);
  45169. Glu.gluTessVertex(tess, v7, v7);
  45170. Glu.gluTessEndContour(tess);
  45171. Glu.gluTessEndPolygon(tess);
  45172. </code>
  45173. </para>
  45174. <para>
  45175. <b>NOTES</b>
  45176. </para>
  45177. <para>
  45178. It is a common error to use a local variable for <i>location</i> or
  45179. <i>data</i> and store values into it as part of a loop. For example:
  45180. </para>
  45181. <para>
  45182. <code>
  45183. for(int i = 0; i &lt; NVERTICES; ++i) {
  45184. double data[3];
  45185. data[0] = vertex[i, 0];
  45186. data[1] = vertex[i, 1];
  45187. data[2] = vertex[i, 2];
  45188. Glu.gluTessVertex(tobj, data, data);
  45189. }
  45190. </code>
  45191. </para>
  45192. <para>
  45193. This doesn't work. Because the pointers specified by <i>location</i> and
  45194. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45195. is executed, all the vertex coordinates but the very last set could be
  45196. overwritten before tessellation begins.
  45197. </para>
  45198. <para>
  45199. Two common symptoms of this problem are consists of a single point (when a
  45200. local variable is used for <i>data</i>) and a
  45201. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45202. is used for <i>location</i>).
  45203. </para>
  45204. </remarks>
  45205. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45206. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45207. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45208. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45209. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45210. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45211. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45212. </member>
  45213. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Single[0:,0:,0:])">
  45214. <summary>
  45215. Specifies a vertex on a polygon.
  45216. </summary>
  45217. <param name="tess">
  45218. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45219. </param>
  45220. <param name="location">
  45221. The location of the vertex.
  45222. </param>
  45223. <param name="data">
  45224. A pointer passed back to the program with the vertex callback (as specified
  45225. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45226. </param>
  45227. <remarks>
  45228. <para>
  45229. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45230. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45231. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45232. called four times. <b>gluTessVertex</b> can only be called between
  45233. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45234. </para>
  45235. <para>
  45236. <i>data</i> normally points to a structure containing the vertex location,
  45237. as well as other per-vertex attributes such as color and normal. This
  45238. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45239. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45240. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45241. </para>
  45242. <para>
  45243. <b>EXAMPLE</b>
  45244. </para>
  45245. <para>
  45246. The following describes a quadrilateral with a triangular hole:
  45247. </para>
  45248. <para>
  45249. <code>
  45250. Glu.gluTessBeginPolygon(tess, null);
  45251. Glu.gluTessBeginContour(tess);
  45252. Glu.gluTessVertex(tess, v1, v1);
  45253. Glu.gluTessVertex(tess, v2, v2);
  45254. Glu.gluTessVertex(tess, v3, v3);
  45255. Glu.gluTessVertex(tess, v4, v4);
  45256. Glu.gluTessEndContour(tess);
  45257. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45258. Glu.gluTessBeginContour(tess);
  45259. Glu.gluTessVertex(tess, v5, v5);
  45260. Glu.gluTessVertex(tess, v6, v6);
  45261. Glu.gluTessVertex(tess, v7, v7);
  45262. Glu.gluTessEndContour(tess);
  45263. Glu.gluTessEndPolygon(tess);
  45264. </code>
  45265. </para>
  45266. <para>
  45267. <b>NOTES</b>
  45268. </para>
  45269. <para>
  45270. It is a common error to use a local variable for <i>location</i> or
  45271. <i>data</i> and store values into it as part of a loop. For example:
  45272. </para>
  45273. <para>
  45274. <code>
  45275. for(int i = 0; i &lt; NVERTICES; ++i) {
  45276. double data[3];
  45277. data[0] = vertex[i, 0];
  45278. data[1] = vertex[i, 1];
  45279. data[2] = vertex[i, 2];
  45280. Glu.gluTessVertex(tobj, data, data);
  45281. }
  45282. </code>
  45283. </para>
  45284. <para>
  45285. This doesn't work. Because the pointers specified by <i>location</i> and
  45286. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45287. is executed, all the vertex coordinates but the very last set could be
  45288. overwritten before tessellation begins.
  45289. </para>
  45290. <para>
  45291. Two common symptoms of this problem are consists of a single point (when a
  45292. local variable is used for <i>data</i>) and a
  45293. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45294. is used for <i>location</i>).
  45295. </para>
  45296. </remarks>
  45297. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45298. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45299. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45300. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45301. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45302. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45303. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45304. </member>
  45305. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.UInt16[])">
  45306. <summary>
  45307. Specifies a vertex on a polygon.
  45308. </summary>
  45309. <param name="tess">
  45310. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45311. </param>
  45312. <param name="location">
  45313. The location of the vertex.
  45314. </param>
  45315. <param name="data">
  45316. A pointer passed back to the program with the vertex callback (as specified
  45317. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45318. </param>
  45319. <remarks>
  45320. <para>
  45321. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45322. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45323. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45324. called four times. <b>gluTessVertex</b> can only be called between
  45325. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45326. </para>
  45327. <para>
  45328. <i>data</i> normally points to a structure containing the vertex location,
  45329. as well as other per-vertex attributes such as color and normal. This
  45330. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45331. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45332. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45333. </para>
  45334. <para>
  45335. <b>EXAMPLE</b>
  45336. </para>
  45337. <para>
  45338. The following describes a quadrilateral with a triangular hole:
  45339. </para>
  45340. <para>
  45341. <code>
  45342. Glu.gluTessBeginPolygon(tess, null);
  45343. Glu.gluTessBeginContour(tess);
  45344. Glu.gluTessVertex(tess, v1, v1);
  45345. Glu.gluTessVertex(tess, v2, v2);
  45346. Glu.gluTessVertex(tess, v3, v3);
  45347. Glu.gluTessVertex(tess, v4, v4);
  45348. Glu.gluTessEndContour(tess);
  45349. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45350. Glu.gluTessBeginContour(tess);
  45351. Glu.gluTessVertex(tess, v5, v5);
  45352. Glu.gluTessVertex(tess, v6, v6);
  45353. Glu.gluTessVertex(tess, v7, v7);
  45354. Glu.gluTessEndContour(tess);
  45355. Glu.gluTessEndPolygon(tess);
  45356. </code>
  45357. </para>
  45358. <para>
  45359. <b>NOTES</b>
  45360. </para>
  45361. <para>
  45362. It is a common error to use a local variable for <i>location</i> or
  45363. <i>data</i> and store values into it as part of a loop. For example:
  45364. </para>
  45365. <para>
  45366. <code>
  45367. for(int i = 0; i &lt; NVERTICES; ++i) {
  45368. double data[3];
  45369. data[0] = vertex[i, 0];
  45370. data[1] = vertex[i, 1];
  45371. data[2] = vertex[i, 2];
  45372. Glu.gluTessVertex(tobj, data, data);
  45373. }
  45374. </code>
  45375. </para>
  45376. <para>
  45377. This doesn't work. Because the pointers specified by <i>location</i> and
  45378. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45379. is executed, all the vertex coordinates but the very last set could be
  45380. overwritten before tessellation begins.
  45381. </para>
  45382. <para>
  45383. Two common symptoms of this problem are consists of a single point (when a
  45384. local variable is used for <i>data</i>) and a
  45385. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45386. is used for <i>location</i>).
  45387. </para>
  45388. </remarks>
  45389. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45390. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45391. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45392. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45393. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45394. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45395. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45396. </member>
  45397. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.UInt16[0:,0:])">
  45398. <summary>
  45399. Specifies a vertex on a polygon.
  45400. </summary>
  45401. <param name="tess">
  45402. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45403. </param>
  45404. <param name="location">
  45405. The location of the vertex.
  45406. </param>
  45407. <param name="data">
  45408. A pointer passed back to the program with the vertex callback (as specified
  45409. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45410. </param>
  45411. <remarks>
  45412. <para>
  45413. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45414. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45415. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45416. called four times. <b>gluTessVertex</b> can only be called between
  45417. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45418. </para>
  45419. <para>
  45420. <i>data</i> normally points to a structure containing the vertex location,
  45421. as well as other per-vertex attributes such as color and normal. This
  45422. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45423. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45424. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45425. </para>
  45426. <para>
  45427. <b>EXAMPLE</b>
  45428. </para>
  45429. <para>
  45430. The following describes a quadrilateral with a triangular hole:
  45431. </para>
  45432. <para>
  45433. <code>
  45434. Glu.gluTessBeginPolygon(tess, null);
  45435. Glu.gluTessBeginContour(tess);
  45436. Glu.gluTessVertex(tess, v1, v1);
  45437. Glu.gluTessVertex(tess, v2, v2);
  45438. Glu.gluTessVertex(tess, v3, v3);
  45439. Glu.gluTessVertex(tess, v4, v4);
  45440. Glu.gluTessEndContour(tess);
  45441. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45442. Glu.gluTessBeginContour(tess);
  45443. Glu.gluTessVertex(tess, v5, v5);
  45444. Glu.gluTessVertex(tess, v6, v6);
  45445. Glu.gluTessVertex(tess, v7, v7);
  45446. Glu.gluTessEndContour(tess);
  45447. Glu.gluTessEndPolygon(tess);
  45448. </code>
  45449. </para>
  45450. <para>
  45451. <b>NOTES</b>
  45452. </para>
  45453. <para>
  45454. It is a common error to use a local variable for <i>location</i> or
  45455. <i>data</i> and store values into it as part of a loop. For example:
  45456. </para>
  45457. <para>
  45458. <code>
  45459. for(int i = 0; i &lt; NVERTICES; ++i) {
  45460. double data[3];
  45461. data[0] = vertex[i, 0];
  45462. data[1] = vertex[i, 1];
  45463. data[2] = vertex[i, 2];
  45464. Glu.gluTessVertex(tobj, data, data);
  45465. }
  45466. </code>
  45467. </para>
  45468. <para>
  45469. This doesn't work. Because the pointers specified by <i>location</i> and
  45470. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45471. is executed, all the vertex coordinates but the very last set could be
  45472. overwritten before tessellation begins.
  45473. </para>
  45474. <para>
  45475. Two common symptoms of this problem are consists of a single point (when a
  45476. local variable is used for <i>data</i>) and a
  45477. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45478. is used for <i>location</i>).
  45479. </para>
  45480. </remarks>
  45481. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45482. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45483. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45484. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45485. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45486. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45487. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45488. </member>
  45489. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.UInt16[0:,0:,0:])">
  45490. <summary>
  45491. Specifies a vertex on a polygon.
  45492. </summary>
  45493. <param name="tess">
  45494. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45495. </param>
  45496. <param name="location">
  45497. The location of the vertex.
  45498. </param>
  45499. <param name="data">
  45500. A pointer passed back to the program with the vertex callback (as specified
  45501. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45502. </param>
  45503. <remarks>
  45504. <para>
  45505. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45506. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45507. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45508. called four times. <b>gluTessVertex</b> can only be called between
  45509. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45510. </para>
  45511. <para>
  45512. <i>data</i> normally points to a structure containing the vertex location,
  45513. as well as other per-vertex attributes such as color and normal. This
  45514. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45515. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45516. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45517. </para>
  45518. <para>
  45519. <b>EXAMPLE</b>
  45520. </para>
  45521. <para>
  45522. The following describes a quadrilateral with a triangular hole:
  45523. </para>
  45524. <para>
  45525. <code>
  45526. Glu.gluTessBeginPolygon(tess, null);
  45527. Glu.gluTessBeginContour(tess);
  45528. Glu.gluTessVertex(tess, v1, v1);
  45529. Glu.gluTessVertex(tess, v2, v2);
  45530. Glu.gluTessVertex(tess, v3, v3);
  45531. Glu.gluTessVertex(tess, v4, v4);
  45532. Glu.gluTessEndContour(tess);
  45533. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45534. Glu.gluTessBeginContour(tess);
  45535. Glu.gluTessVertex(tess, v5, v5);
  45536. Glu.gluTessVertex(tess, v6, v6);
  45537. Glu.gluTessVertex(tess, v7, v7);
  45538. Glu.gluTessEndContour(tess);
  45539. Glu.gluTessEndPolygon(tess);
  45540. </code>
  45541. </para>
  45542. <para>
  45543. <b>NOTES</b>
  45544. </para>
  45545. <para>
  45546. It is a common error to use a local variable for <i>location</i> or
  45547. <i>data</i> and store values into it as part of a loop. For example:
  45548. </para>
  45549. <para>
  45550. <code>
  45551. for(int i = 0; i &lt; NVERTICES; ++i) {
  45552. double data[3];
  45553. data[0] = vertex[i, 0];
  45554. data[1] = vertex[i, 1];
  45555. data[2] = vertex[i, 2];
  45556. Glu.gluTessVertex(tobj, data, data);
  45557. }
  45558. </code>
  45559. </para>
  45560. <para>
  45561. This doesn't work. Because the pointers specified by <i>location</i> and
  45562. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45563. is executed, all the vertex coordinates but the very last set could be
  45564. overwritten before tessellation begins.
  45565. </para>
  45566. <para>
  45567. Two common symptoms of this problem are consists of a single point (when a
  45568. local variable is used for <i>data</i>) and a
  45569. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45570. is used for <i>location</i>).
  45571. </para>
  45572. </remarks>
  45573. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45574. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45575. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45576. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45577. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45578. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45579. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45580. </member>
  45581. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.UInt32[])">
  45582. <summary>
  45583. Specifies a vertex on a polygon.
  45584. </summary>
  45585. <param name="tess">
  45586. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45587. </param>
  45588. <param name="location">
  45589. The location of the vertex.
  45590. </param>
  45591. <param name="data">
  45592. A pointer passed back to the program with the vertex callback (as specified
  45593. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45594. </param>
  45595. <remarks>
  45596. <para>
  45597. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45598. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45599. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45600. called four times. <b>gluTessVertex</b> can only be called between
  45601. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45602. </para>
  45603. <para>
  45604. <i>data</i> normally points to a structure containing the vertex location,
  45605. as well as other per-vertex attributes such as color and normal. This
  45606. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45607. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45608. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45609. </para>
  45610. <para>
  45611. <b>EXAMPLE</b>
  45612. </para>
  45613. <para>
  45614. The following describes a quadrilateral with a triangular hole:
  45615. </para>
  45616. <para>
  45617. <code>
  45618. Glu.gluTessBeginPolygon(tess, null);
  45619. Glu.gluTessBeginContour(tess);
  45620. Glu.gluTessVertex(tess, v1, v1);
  45621. Glu.gluTessVertex(tess, v2, v2);
  45622. Glu.gluTessVertex(tess, v3, v3);
  45623. Glu.gluTessVertex(tess, v4, v4);
  45624. Glu.gluTessEndContour(tess);
  45625. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45626. Glu.gluTessBeginContour(tess);
  45627. Glu.gluTessVertex(tess, v5, v5);
  45628. Glu.gluTessVertex(tess, v6, v6);
  45629. Glu.gluTessVertex(tess, v7, v7);
  45630. Glu.gluTessEndContour(tess);
  45631. Glu.gluTessEndPolygon(tess);
  45632. </code>
  45633. </para>
  45634. <para>
  45635. <b>NOTES</b>
  45636. </para>
  45637. <para>
  45638. It is a common error to use a local variable for <i>location</i> or
  45639. <i>data</i> and store values into it as part of a loop. For example:
  45640. </para>
  45641. <para>
  45642. <code>
  45643. for(int i = 0; i &lt; NVERTICES; ++i) {
  45644. double data[3];
  45645. data[0] = vertex[i, 0];
  45646. data[1] = vertex[i, 1];
  45647. data[2] = vertex[i, 2];
  45648. Glu.gluTessVertex(tobj, data, data);
  45649. }
  45650. </code>
  45651. </para>
  45652. <para>
  45653. This doesn't work. Because the pointers specified by <i>location</i> and
  45654. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45655. is executed, all the vertex coordinates but the very last set could be
  45656. overwritten before tessellation begins.
  45657. </para>
  45658. <para>
  45659. Two common symptoms of this problem are consists of a single point (when a
  45660. local variable is used for <i>data</i>) and a
  45661. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45662. is used for <i>location</i>).
  45663. </para>
  45664. </remarks>
  45665. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45666. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45667. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45668. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45669. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45670. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45671. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45672. </member>
  45673. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.UInt32[0:,0:])">
  45674. <summary>
  45675. Specifies a vertex on a polygon.
  45676. </summary>
  45677. <param name="tess">
  45678. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45679. </param>
  45680. <param name="location">
  45681. The location of the vertex.
  45682. </param>
  45683. <param name="data">
  45684. A pointer passed back to the program with the vertex callback (as specified
  45685. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45686. </param>
  45687. <remarks>
  45688. <para>
  45689. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45690. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45691. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45692. called four times. <b>gluTessVertex</b> can only be called between
  45693. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45694. </para>
  45695. <para>
  45696. <i>data</i> normally points to a structure containing the vertex location,
  45697. as well as other per-vertex attributes such as color and normal. This
  45698. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45699. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45700. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45701. </para>
  45702. <para>
  45703. <b>EXAMPLE</b>
  45704. </para>
  45705. <para>
  45706. The following describes a quadrilateral with a triangular hole:
  45707. </para>
  45708. <para>
  45709. <code>
  45710. Glu.gluTessBeginPolygon(tess, null);
  45711. Glu.gluTessBeginContour(tess);
  45712. Glu.gluTessVertex(tess, v1, v1);
  45713. Glu.gluTessVertex(tess, v2, v2);
  45714. Glu.gluTessVertex(tess, v3, v3);
  45715. Glu.gluTessVertex(tess, v4, v4);
  45716. Glu.gluTessEndContour(tess);
  45717. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45718. Glu.gluTessBeginContour(tess);
  45719. Glu.gluTessVertex(tess, v5, v5);
  45720. Glu.gluTessVertex(tess, v6, v6);
  45721. Glu.gluTessVertex(tess, v7, v7);
  45722. Glu.gluTessEndContour(tess);
  45723. Glu.gluTessEndPolygon(tess);
  45724. </code>
  45725. </para>
  45726. <para>
  45727. <b>NOTES</b>
  45728. </para>
  45729. <para>
  45730. It is a common error to use a local variable for <i>location</i> or
  45731. <i>data</i> and store values into it as part of a loop. For example:
  45732. </para>
  45733. <para>
  45734. <code>
  45735. for(int i = 0; i &lt; NVERTICES; ++i) {
  45736. double data[3];
  45737. data[0] = vertex[i, 0];
  45738. data[1] = vertex[i, 1];
  45739. data[2] = vertex[i, 2];
  45740. Glu.gluTessVertex(tobj, data, data);
  45741. }
  45742. </code>
  45743. </para>
  45744. <para>
  45745. This doesn't work. Because the pointers specified by <i>location</i> and
  45746. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45747. is executed, all the vertex coordinates but the very last set could be
  45748. overwritten before tessellation begins.
  45749. </para>
  45750. <para>
  45751. Two common symptoms of this problem are consists of a single point (when a
  45752. local variable is used for <i>data</i>) and a
  45753. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45754. is used for <i>location</i>).
  45755. </para>
  45756. </remarks>
  45757. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45758. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45759. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45760. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45761. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45762. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45763. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45764. </member>
  45765. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.UInt32[0:,0:,0:])">
  45766. <summary>
  45767. Specifies a vertex on a polygon.
  45768. </summary>
  45769. <param name="tess">
  45770. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45771. </param>
  45772. <param name="location">
  45773. The location of the vertex.
  45774. </param>
  45775. <param name="data">
  45776. A pointer passed back to the program with the vertex callback (as specified
  45777. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45778. </param>
  45779. <remarks>
  45780. <para>
  45781. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45782. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45783. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45784. called four times. <b>gluTessVertex</b> can only be called between
  45785. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45786. </para>
  45787. <para>
  45788. <i>data</i> normally points to a structure containing the vertex location,
  45789. as well as other per-vertex attributes such as color and normal. This
  45790. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45791. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45792. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45793. </para>
  45794. <para>
  45795. <b>EXAMPLE</b>
  45796. </para>
  45797. <para>
  45798. The following describes a quadrilateral with a triangular hole:
  45799. </para>
  45800. <para>
  45801. <code>
  45802. Glu.gluTessBeginPolygon(tess, null);
  45803. Glu.gluTessBeginContour(tess);
  45804. Glu.gluTessVertex(tess, v1, v1);
  45805. Glu.gluTessVertex(tess, v2, v2);
  45806. Glu.gluTessVertex(tess, v3, v3);
  45807. Glu.gluTessVertex(tess, v4, v4);
  45808. Glu.gluTessEndContour(tess);
  45809. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45810. Glu.gluTessBeginContour(tess);
  45811. Glu.gluTessVertex(tess, v5, v5);
  45812. Glu.gluTessVertex(tess, v6, v6);
  45813. Glu.gluTessVertex(tess, v7, v7);
  45814. Glu.gluTessEndContour(tess);
  45815. Glu.gluTessEndPolygon(tess);
  45816. </code>
  45817. </para>
  45818. <para>
  45819. <b>NOTES</b>
  45820. </para>
  45821. <para>
  45822. It is a common error to use a local variable for <i>location</i> or
  45823. <i>data</i> and store values into it as part of a loop. For example:
  45824. </para>
  45825. <para>
  45826. <code>
  45827. for(int i = 0; i &lt; NVERTICES; ++i) {
  45828. double data[3];
  45829. data[0] = vertex[i, 0];
  45830. data[1] = vertex[i, 1];
  45831. data[2] = vertex[i, 2];
  45832. Glu.gluTessVertex(tobj, data, data);
  45833. }
  45834. </code>
  45835. </para>
  45836. <para>
  45837. This doesn't work. Because the pointers specified by <i>location</i> and
  45838. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45839. is executed, all the vertex coordinates but the very last set could be
  45840. overwritten before tessellation begins.
  45841. </para>
  45842. <para>
  45843. Two common symptoms of this problem are consists of a single point (when a
  45844. local variable is used for <i>data</i>) and a
  45845. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45846. is used for <i>location</i>).
  45847. </para>
  45848. </remarks>
  45849. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45850. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45851. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45852. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45853. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45854. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45855. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45856. </member>
  45857. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.IntPtr)">
  45858. <summary>
  45859. Specifies a vertex on a polygon.
  45860. </summary>
  45861. <param name="tess">
  45862. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45863. </param>
  45864. <param name="location">
  45865. The location of the vertex.
  45866. </param>
  45867. <param name="data">
  45868. A pointer passed back to the program with the vertex callback (as specified
  45869. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45870. </param>
  45871. <remarks>
  45872. <para>
  45873. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45874. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45875. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45876. called four times. <b>gluTessVertex</b> can only be called between
  45877. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45878. </para>
  45879. <para>
  45880. <i>data</i> normally points to a structure containing the vertex location,
  45881. as well as other per-vertex attributes such as color and normal. This
  45882. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45883. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45884. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45885. </para>
  45886. <para>
  45887. <b>EXAMPLE</b>
  45888. </para>
  45889. <para>
  45890. The following describes a quadrilateral with a triangular hole:
  45891. </para>
  45892. <para>
  45893. <code>
  45894. Glu.gluTessBeginPolygon(tess, null);
  45895. Glu.gluTessBeginContour(tess);
  45896. Glu.gluTessVertex(tess, v1, v1);
  45897. Glu.gluTessVertex(tess, v2, v2);
  45898. Glu.gluTessVertex(tess, v3, v3);
  45899. Glu.gluTessVertex(tess, v4, v4);
  45900. Glu.gluTessEndContour(tess);
  45901. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45902. Glu.gluTessBeginContour(tess);
  45903. Glu.gluTessVertex(tess, v5, v5);
  45904. Glu.gluTessVertex(tess, v6, v6);
  45905. Glu.gluTessVertex(tess, v7, v7);
  45906. Glu.gluTessEndContour(tess);
  45907. Glu.gluTessEndPolygon(tess);
  45908. </code>
  45909. </para>
  45910. <para>
  45911. <b>NOTES</b>
  45912. </para>
  45913. <para>
  45914. It is a common error to use a local variable for <i>location</i> or
  45915. <i>data</i> and store values into it as part of a loop. For example:
  45916. </para>
  45917. <para>
  45918. <code>
  45919. for(int i = 0; i &lt; NVERTICES; ++i) {
  45920. double data[3];
  45921. data[0] = vertex[i, 0];
  45922. data[1] = vertex[i, 1];
  45923. data[2] = vertex[i, 2];
  45924. Glu.gluTessVertex(tobj, data, data);
  45925. }
  45926. </code>
  45927. </para>
  45928. <para>
  45929. This doesn't work. Because the pointers specified by <i>location</i> and
  45930. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45931. is executed, all the vertex coordinates but the very last set could be
  45932. overwritten before tessellation begins.
  45933. </para>
  45934. <para>
  45935. Two common symptoms of this problem are consists of a single point (when a
  45936. local variable is used for <i>data</i>) and a
  45937. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  45938. is used for <i>location</i>).
  45939. </para>
  45940. </remarks>
  45941. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  45942. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  45943. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  45944. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  45945. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  45946. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  45947. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  45948. </member>
  45949. <member name="M:Tao.OpenGl.Glu.gluTessVertex(Tao.OpenGl.Glu.GLUtesselator,System.Double[],System.Void*)">
  45950. <summary>
  45951. Specifies a vertex on a polygon.
  45952. </summary>
  45953. <param name="tess">
  45954. The tessellation object (created with <see cref="M:Tao.OpenGl.Glu.gluNewTess"/>).
  45955. </param>
  45956. <param name="location">
  45957. The location of the vertex.
  45958. </param>
  45959. <param name="data">
  45960. A pointer passed back to the program with the vertex callback (as specified
  45961. by <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>).
  45962. </param>
  45963. <remarks>
  45964. <para>
  45965. <b>gluTessVertex</b> describes a vertex on a polygon that the program
  45966. defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
  45967. For example, to describe a quadrilateral <b>gluTessVertex</b> should be
  45968. called four times. <b>gluTessVertex</b> can only be called between
  45969. <see cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/> and <see cref="M:Tao.OpenGl.Glu.gluTessEndContour(Tao.OpenGl.Glu.GLUtesselator)"/>.
  45970. </para>
  45971. <para>
  45972. <i>data</i> normally points to a structure containing the vertex location,
  45973. as well as other per-vertex attributes such as color and normal. This
  45974. pointer is passed back to the user through the <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX"/>
  45975. or <see cref="F:Tao.OpenGl.Glu.GLU_TESS_VERTEX_DATA"/> callback after tessellation (see the
  45976. <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/> reference page).
  45977. </para>
  45978. <para>
  45979. <b>EXAMPLE</b>
  45980. </para>
  45981. <para>
  45982. The following describes a quadrilateral with a triangular hole:
  45983. </para>
  45984. <para>
  45985. <code>
  45986. Glu.gluTessBeginPolygon(tess, null);
  45987. Glu.gluTessBeginContour(tess);
  45988. Glu.gluTessVertex(tess, v1, v1);
  45989. Glu.gluTessVertex(tess, v2, v2);
  45990. Glu.gluTessVertex(tess, v3, v3);
  45991. Glu.gluTessVertex(tess, v4, v4);
  45992. Glu.gluTessEndContour(tess);
  45993. Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
  45994. Glu.gluTessBeginContour(tess);
  45995. Glu.gluTessVertex(tess, v5, v5);
  45996. Glu.gluTessVertex(tess, v6, v6);
  45997. Glu.gluTessVertex(tess, v7, v7);
  45998. Glu.gluTessEndContour(tess);
  45999. Glu.gluTessEndPolygon(tess);
  46000. </code>
  46001. </para>
  46002. <para>
  46003. <b>NOTES</b>
  46004. </para>
  46005. <para>
  46006. It is a common error to use a local variable for <i>location</i> or
  46007. <i>data</i> and store values into it as part of a loop. For example:
  46008. </para>
  46009. <para>
  46010. <code>
  46011. for(int i = 0; i &lt; NVERTICES; ++i) {
  46012. double data[3];
  46013. data[0] = vertex[i, 0];
  46014. data[1] = vertex[i, 1];
  46015. data[2] = vertex[i, 2];
  46016. Glu.gluTessVertex(tobj, data, data);
  46017. }
  46018. </code>
  46019. </para>
  46020. <para>
  46021. This doesn't work. Because the pointers specified by <i>location</i> and
  46022. <i>data</i> might not be dereferenced until <see cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  46023. is executed, all the vertex coordinates but the very last set could be
  46024. overwritten before tessellation begins.
  46025. </para>
  46026. <para>
  46027. Two common symptoms of this problem are consists of a single point (when a
  46028. local variable is used for <i>data</i>) and a
  46029. <see cref="F:Tao.OpenGl.Glu.GLU_TESS_NEED_COMBINE_CALLBACK"/> error (when a local variable
  46030. is used for <i>location</i>).
  46031. </para>
  46032. </remarks>
  46033. <seealso cref="M:Tao.OpenGl.Glu.gluNewTess"/>
  46034. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator,System.Byte[])"/>
  46035. <seealso cref="M:Tao.OpenGl.Glu.gluTessBeginContour(Tao.OpenGl.Glu.GLUtesselator)"/>
  46036. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46037. <seealso cref="M:Tao.OpenGl.Glu.gluTessEndPolygon(Tao.OpenGl.Glu.GLUtesselator)"/>
  46038. <seealso cref="M:Tao.OpenGl.Glu.gluTessNormal(Tao.OpenGl.Glu.GLUtesselator,System.Double,System.Double,System.Double)"/>
  46039. <seealso cref="M:Tao.OpenGl.Glu.gluTessProperty(Tao.OpenGl.Glu.GLUtesselator,System.Int32,System.Double)"/>
  46040. </member>
  46041. <member name="M:Tao.OpenGl.Glu.gluUnProject(System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double@,System.Double@,System.Double@)">
  46042. <summary>
  46043. Maps window coordinates to object coordinates.
  46044. </summary>
  46045. <param name="winX">
  46046. The window's x axis coordinate to be mapped.
  46047. </param>
  46048. <param name="winY">
  46049. The window's y axis coordinate to be mapped.
  46050. </param>
  46051. <param name="winZ">
  46052. The window's z axis coordinate to be mapped.
  46053. </param>
  46054. <param name="modelMatrix">
  46055. The modelview matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/> call).
  46056. </param>
  46057. <param name="projectionMatrix">
  46058. The projection matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/> call).
  46059. </param>
  46060. <param name="viewport">
  46061. The viewport (as from a <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> call).
  46062. </param>
  46063. <param name="objX">
  46064. The computed object's x axis coordinate.
  46065. </param>
  46066. <param name="objY">
  46067. The computed object's y axis coordinate.
  46068. </param>
  46069. <param name="objZ">
  46070. The computed object's z axis coordinate.
  46071. </param>
  46072. <returns>
  46073. A return value of <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> indicates success; a return value
  46074. of <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> indicates failure.
  46075. </returns>
  46076. <remarks>
  46077. <para>
  46078. <b>gluUnProject</b> maps the specified window coordinates into object
  46079. coordinates using <i>modelMatrix</i>, <i>projectionMatrix</i>, and
  46080. <i>viewport</i>. The result is stored in <i>objX</i>, <i>objY</i>, and
  46081. <i>objZ</i>. A return value of <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> indicates success;
  46082. a return value of <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> indicates failure.
  46083. </para>
  46084. <para>
  46085. To compute the coordinates (<i>objX</i>, <i>objY</i>, and <i>objZ</i>),
  46086. <b>gluUnProject</b> multiplies the normalized device coordinates by the
  46087. inverse of <i>modelMatrix</i> multiplied by <i>projectionMatrix</i> as
  46088. follows:
  46089. </para>
  46090. <para>
  46091. <code>
  46092. ( 2(winX - viewport[0]) )
  46093. | ----------------- - 1 |
  46094. | viewport[2] |
  46095. ( ) | |
  46096. | objX | | 2(winY - viewport[1]) |
  46097. | objY | = INV(PM)| ----------------- - 1 |
  46098. | objZ | | viewport[3] |
  46099. ( W ) | |
  46100. | 2(winZ) - 1 |
  46101. | |
  46102. ( 1 )
  46103. </code>
  46104. </para>
  46105. <para>
  46106. INV() denotes matrix inversion. W is an unused variable, included for
  46107. consistent matrix notation.
  46108. </para>
  46109. </remarks>
  46110. <seealso cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/>
  46111. <seealso cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/>
  46112. <seealso cref="M:Tao.OpenGl.Glu.gluProject(System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double@,System.Double@,System.Double@)"/>
  46113. </member>
  46114. <member name="M:Tao.OpenGl.Glu.gluUnProject4(System.Double,System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double,System.Double,System.Double@,System.Double@,System.Double@,System.Double@)">
  46115. <summary>
  46116. Maps window and clip coordinates to object coordinates.
  46117. </summary>
  46118. <param name="winX">
  46119. The window's x axis coordinate to be mapped.
  46120. </param>
  46121. <param name="winY">
  46122. The window's y axis coordinate to be mapped.
  46123. </param>
  46124. <param name="winZ">
  46125. The window's z axis coordinate to be mapped.
  46126. </param>
  46127. <param name="clipW">
  46128. The clip w coordinate to be mapped.
  46129. </param>
  46130. <param name="modelMatrix">
  46131. The modelview matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/> call).
  46132. </param>
  46133. <param name="projectionMatrix">
  46134. The projection matrix (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/> call).
  46135. </param>
  46136. <param name="viewport">
  46137. The viewport (as from a <see cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/> call).
  46138. </param>
  46139. <param name="nearVal">
  46140. The near plane (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/> call).
  46141. </param>
  46142. <param name="farVal">
  46143. The far plane (as from a <see cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/> call).
  46144. </param>
  46145. <param name="objX">
  46146. The computed object's x axis coordinate.
  46147. </param>
  46148. <param name="objY">
  46149. The computed object's y axis coordinate.
  46150. </param>
  46151. <param name="objZ">
  46152. The computed object's z axis coordinate.
  46153. </param>
  46154. <param name="objW">
  46155. The computed object's clip w coordinate.
  46156. </param>
  46157. <returns>
  46158. A return value of <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/> indicates success; a return
  46159. value of <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> indicates failure.
  46160. </returns>
  46161. <remarks>
  46162. <para>
  46163. <b>gluUnProject4</b> maps the specified window coordinates <i>winX</i>,
  46164. <i>winY</i> and <i>winZ</i> and its clip w coordinate <i>clipW</i> into
  46165. object coordinates (<i>objX</i>, <i>objY</i>, <i>objZ</i>, <i>objW</i>)
  46166. using <i>modelMatrix</i>, <i>projectionMatrix</i> and <i>viewport</i>.
  46167. <i>clipW</i> can be other than 1 as for vertices in
  46168. <see cref="M:Tao.OpenGl.Gl.glFeedbackBuffer(System.Int32,System.Int32,System.IntPtr)"/> when data type
  46169. <see cref="F:Tao.OpenGl.Gl.GL_4D_COLOR_TEXTURE"/> is returned. This also handles the
  46170. case where the <i>nearVal</i> and <i>farVal</i> planes are different from the
  46171. default, 0 and 1, respectively. A return value of <see cref="F:Tao.OpenGl.Gl.GL_TRUE"/>
  46172. indicates success; a return value of <see cref="F:Tao.OpenGl.Gl.GL_FALSE"/> indicates
  46173. failure.
  46174. </para>
  46175. <para>
  46176. To compute the coordinates (<i>objX</i>, <i>objY</i>, <i>objZ</i> and
  46177. <i>objW</i>), <b>gluUnProject4</b> multiplies the normalized device
  46178. coordinates by the inverse of <i>modelMatrix</i> multiplied by
  46179. <i>projectionMatrix</i> as follows:
  46180. </para>
  46181. <para>
  46182. <code>
  46183. ( 2(winX - viewport[0] )
  46184. | ---------------- - 1 |
  46185. | viewport[2] |
  46186. | |
  46187. | 2(winY - viewport[1] |
  46188. ( objX ) | ---------------- - 1 |
  46189. | objY | = INV(PM) * | viewport[3] |
  46190. | objZ | | |
  46191. ( objW ) | 2(winZ - nearVal) |
  46192. | -------------- - 1 |
  46193. | farVal - nearVal |
  46194. | |
  46195. ( clipW )
  46196. </code>
  46197. </para>
  46198. <para>
  46199. INV() denotes matrix inversion.
  46200. </para>
  46201. <para>
  46202. <b>gluUnProject4</b> is equivalent to <see cref="M:Tao.OpenGl.Glu.gluUnProject(System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double@,System.Double@,System.Double@)"/> when
  46203. <i>clipW</i> is 1, <i>nearVal</i> is 0 and <i>farVal</i> is 1.
  46204. </para>
  46205. <para>
  46206. <b>gluUnProject4</b> is available only if the GLU version is 1.3 or greater.
  46207. </para>
  46208. </remarks>
  46209. <seealso cref="M:Tao.OpenGl.Gl.glFeedbackBuffer(System.Int32,System.Int32,System.IntPtr)"/>
  46210. <seealso cref="M:Tao.OpenGl.Gl.glGetDoublev(System.Int32,System.IntPtr)"/>
  46211. <seealso cref="M:Tao.OpenGl.Gl.glGetIntegerv(System.Int32,System.IntPtr)"/>
  46212. <seealso cref="M:Tao.OpenGl.Glu.gluProject(System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double@,System.Double@,System.Double@)"/>
  46213. <seealso cref="M:Tao.OpenGl.Glu.gluUnProject(System.Double,System.Double,System.Double,System.Double[],System.Double[],System.Int32[],System.Double@,System.Double@,System.Double@)"/>
  46214. </member>
  46215. <member name="T:Tao.OpenGl.Glu.GLUnurbs">
  46216. <summary>
  46217. Defines a GLU NURBS object.
  46218. </summary>
  46219. </member>
  46220. <member name="F:Tao.OpenGl.Glu.GLUnurbs.Data">
  46221. <summary>
  46222. Keeps the struct from being garbage collected prematurely.
  46223. </summary>
  46224. </member>
  46225. <member name="T:Tao.OpenGl.Glu.GLUquadric">
  46226. <summary>
  46227. Defines a GLU quadric object.
  46228. </summary>
  46229. </member>
  46230. <member name="F:Tao.OpenGl.Glu.GLUquadric.Data">
  46231. <summary>
  46232. Keeps the struct from being garbage collected prematurely.
  46233. </summary>
  46234. </member>
  46235. <member name="T:Tao.OpenGl.Glu.GLUtesselator">
  46236. <summary>
  46237. Defines a GLU tesselator object.
  46238. </summary>
  46239. </member>
  46240. <member name="F:Tao.OpenGl.Glu.GLUtesselator.Data">
  46241. <summary>
  46242. Keeps the struct from being garbage collected prematurely.
  46243. </summary>
  46244. </member>
  46245. <member name="T:Tao.OpenGl.Glu.GLUnurbsObj">
  46246. <summary>
  46247. Defines a GLU NURBS object.
  46248. </summary>
  46249. </member>
  46250. <member name="F:Tao.OpenGl.Glu.GLUnurbsObj.Data">
  46251. <summary>
  46252. Keeps the struct from being garbage collected prematurely.
  46253. </summary>
  46254. </member>
  46255. <member name="T:Tao.OpenGl.Glu.GLUquadricObj">
  46256. <summary>
  46257. Defines a GLU quadric object.
  46258. </summary>
  46259. </member>
  46260. <member name="F:Tao.OpenGl.Glu.GLUquadricObj.Data">
  46261. <summary>
  46262. Keeps the struct from being garbage collected prematurely.
  46263. </summary>
  46264. </member>
  46265. <member name="T:Tao.OpenGl.Glu.GLUtesselatorObj">
  46266. <summary>
  46267. Defines a GLU tesselator object.
  46268. </summary>
  46269. </member>
  46270. <member name="F:Tao.OpenGl.Glu.GLUtesselatorObj.Data">
  46271. <summary>
  46272. Keeps the struct from being garbage collected prematurely.
  46273. </summary>
  46274. </member>
  46275. <member name="T:Tao.OpenGl.Glu.GLUtriangulatorObj">
  46276. <summary>
  46277. Defines a GLU triangulator object.
  46278. </summary>
  46279. </member>
  46280. <member name="F:Tao.OpenGl.Glu.GLUtriangulatorObj.Data">
  46281. <summary>
  46282. Keeps the struct from being garbage collected prematurely.
  46283. </summary>
  46284. </member>
  46285. <member name="T:Tao.OpenGl.Glu.NurbsBeginCallback">
  46286. <summary>
  46287. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46288. </summary>
  46289. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46290. </member>
  46291. <member name="T:Tao.OpenGl.Glu.NurbsBeginDataCallback">
  46292. <summary>
  46293. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46294. </summary>
  46295. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46296. </member>
  46297. <member name="T:Tao.OpenGl.Glu.NurbsColorCallback">
  46298. <summary>
  46299. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46300. </summary>
  46301. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46302. </member>
  46303. <member name="T:Tao.OpenGl.Glu.NurbsColorDataCallback">
  46304. <summary>
  46305. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46306. </summary>
  46307. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46308. </member>
  46309. <member name="T:Tao.OpenGl.Glu.NurbsEndCallback">
  46310. <summary>
  46311. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46312. </summary>
  46313. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46314. </member>
  46315. <member name="T:Tao.OpenGl.Glu.NurbsEndDataCallback">
  46316. <summary>
  46317. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46318. </summary>
  46319. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46320. </member>
  46321. <member name="T:Tao.OpenGl.Glu.NurbsErrorCallback">
  46322. <summary>
  46323. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46324. </summary>
  46325. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46326. </member>
  46327. <member name="T:Tao.OpenGl.Glu.NurbsNormalCallback">
  46328. <summary>
  46329. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46330. </summary>
  46331. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46332. </member>
  46333. <member name="T:Tao.OpenGl.Glu.NurbsNormalDataCallback">
  46334. <summary>
  46335. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46336. </summary>
  46337. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46338. </member>
  46339. <member name="T:Tao.OpenGl.Glu.NurbsTexCoordCallback">
  46340. <summary>
  46341. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46342. </summary>
  46343. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46344. </member>
  46345. <member name="T:Tao.OpenGl.Glu.NurbsTexCoordDataCallback">
  46346. <summary>
  46347. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46348. </summary>
  46349. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46350. </member>
  46351. <member name="T:Tao.OpenGl.Glu.NurbsVertexCallback">
  46352. <summary>
  46353. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46354. </summary>
  46355. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46356. </member>
  46357. <member name="T:Tao.OpenGl.Glu.NurbsVertexDataCallback">
  46358. <summary>
  46359. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>.
  46360. </summary>
  46361. <seealso cref="M:Tao.OpenGl.Glu.gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs,System.Int32,Tao.OpenGl.Glu.NurbsBeginCallback)"/>
  46362. </member>
  46363. <member name="T:Tao.OpenGl.Glu.QuadricErrorCallback">
  46364. <summary>
  46365. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)"/>.
  46366. </summary>
  46367. <seealso cref="M:Tao.OpenGl.Glu.gluQuadricCallback(Tao.OpenGl.Glu.GLUquadric,System.Int32,Tao.OpenGl.Glu.QuadricErrorCallback)"/>
  46368. </member>
  46369. <member name="T:Tao.OpenGl.Glu.TessBeginCallback">
  46370. <summary>
  46371. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46372. </summary>
  46373. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46374. </member>
  46375. <member name="T:Tao.OpenGl.Glu.TessBeginDataCallback">
  46376. <summary>
  46377. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46378. </summary>
  46379. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46380. </member>
  46381. <member name="T:Tao.OpenGl.Glu.TessCombineCallback">
  46382. <summary>
  46383. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46384. </summary>
  46385. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46386. </member>
  46387. <member name="T:Tao.OpenGl.Glu.TessCombineCallback1">
  46388. <summary>
  46389. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46390. </summary>
  46391. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46392. </member>
  46393. <member name="T:Tao.OpenGl.Glu.TessCombineDataCallback">
  46394. <summary>
  46395. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46396. </summary>
  46397. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46398. </member>
  46399. <member name="T:Tao.OpenGl.Glu.TessEdgeFlagCallback">
  46400. <summary>
  46401. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46402. </summary>
  46403. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46404. </member>
  46405. <member name="T:Tao.OpenGl.Glu.TessEdgeFlagDataCallback">
  46406. <summary>
  46407. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46408. </summary>
  46409. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46410. </member>
  46411. <member name="T:Tao.OpenGl.Glu.TessEndCallback">
  46412. <summary>
  46413. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46414. </summary>
  46415. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46416. </member>
  46417. <member name="T:Tao.OpenGl.Glu.TessEndDataCallback">
  46418. <summary>
  46419. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46420. </summary>
  46421. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46422. </member>
  46423. <member name="T:Tao.OpenGl.Glu.TessErrorCallback">
  46424. <summary>
  46425. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46426. </summary>
  46427. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46428. </member>
  46429. <member name="T:Tao.OpenGl.Glu.TessErrorDataCallback">
  46430. <summary>
  46431. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46432. </summary>
  46433. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46434. </member>
  46435. <member name="T:Tao.OpenGl.Glu.TessVertexCallback">
  46436. <summary>
  46437. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46438. </summary>
  46439. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46440. </member>
  46441. <member name="T:Tao.OpenGl.Glu.TessVertexCallback1">
  46442. <summary>
  46443. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46444. </summary>
  46445. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46446. </member>
  46447. <member name="T:Tao.OpenGl.Glu.TessVertexDataCallback">
  46448. <summary>
  46449. Callback (delegate) for use with <see cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>.
  46450. </summary>
  46451. <seealso cref="M:Tao.OpenGl.Glu.gluTessCallback(Tao.OpenGl.Glu.GLUtesselator,System.Int32,Tao.OpenGl.Glu.TessBeginCallback)"/>
  46452. </member>
  46453. </members>
  46454. </doc>