Direct3D.pas 208 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610
  1. {******************************************************************************}
  2. {* *}
  3. {* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
  4. {* *}
  5. {* Files: d3dtypes.h d3dcaps.h d3d.h *}
  6. {* Content: Direct3D8 include files *}
  7. {* *}
  8. {* DirectX 9.0 Delphi adaptation by Alexey Barkovoy *}
  9. {* E-Mail: clootie@reactor.ru *}
  10. {* *}
  11. {* Modified: 26-Jan-2003 *}
  12. {* *}
  13. {* Partly based upon : *}
  14. {* DirectX 7.0 Object Pascal adaptation by *}
  15. {* Erik Unger, e-Mail: DelphiDirectX@next-reality.com *}
  16. {* *}
  17. {* Latest version can be downloaded from: *}
  18. {* http://clootie.narod.ru/delphi/ *}
  19. {* *}
  20. {******************************************************************************}
  21. { }
  22. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  23. { }
  24. { The contents of this file are used with permission, subject to the Mozilla }
  25. { Public License Version 1.1 (the "License"); you may not use this file except }
  26. { in compliance with the License. You may obtain a copy of the License at }
  27. { http://www.mozilla.org/MPL/MPL-1.1.html }
  28. { }
  29. { Software distributed under the License is distributed on an "AS IS" basis, }
  30. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  31. { the specific language governing rights and limitations under the License. }
  32. { }
  33. { Alternatively, the contents of this file may be used under the terms of the }
  34. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  35. { provisions of the LGPL License are applicable instead of those above. }
  36. { If you wish to allow use of your version of this file only under the terms }
  37. { of the LGPL License and not to allow others to use your version of this file }
  38. { under the MPL, indicate your decision by deleting the provisions above and }
  39. { replace them with the notice and other provisions required by the LGPL }
  40. { License. If you do not delete the provisions above, a recipient may use }
  41. { your version of this file under either the MPL or the LGPL License. }
  42. { }
  43. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  44. { }
  45. {******************************************************************************}
  46. ///////////////////////////////////////////////////////////////////////////////
  47. // Notes:
  48. //----------------------------------------------------------------------------
  49. // Possible input defines for this file, mapped to original C values:
  50. // DIRECT3D_VERSION_8 : DIRECT3D_VERSION = 0x0800,
  51. // DIRECT3D_VERSION_7 : DIRECT3D_VERSION = 0x0700,
  52. // DIRECT3D_VERSION_6 : DIRECT3D_VERSION = 0x0600,
  53. // DIRECT3D_VERSION_5 : DIRECT3D_VERSION = 0x0500,
  54. // DIRECT3D_VERSION_LESS_5 : DIRECT3D_VERSION < 0x0500,
  55. //
  56. // By default DIRECT3D_VERSION_7 (DIRECT3D_VERSION = 0x0700) is assumed
  57. ///////////////////////////////////////////////////////////////////////////////
  58. unit Direct3D;
  59. {$I DirectX.inc}
  60. // Remove "dots" below to exclude DXFile interfaces - these interfaces
  61. // are included for compatibility with original Erik Unger translation
  62. {$DEFINE EXCLUDE_DXFILE_FROM_DIRECT3D}
  63. // Assume for what Direct3D version we will compile headers
  64. {$IFNDEF DIRECT3D_VERSION_8}
  65. {$IFNDEF DIRECT3D_VERSION_7}
  66. {$IFNDEF DIRECT3D_VERSION_6}
  67. {$IFNDEF DIRECT3D_VERSION_5}
  68. {$IFNDEF DIRECT3D_VERSION_LESS_5}
  69. {$DEFINE DIRECT3D_VERSION_7} // Compiling for Direct3D7 by default
  70. {$ENDIF}
  71. {$ENDIF}
  72. {$ENDIF}
  73. {$ENDIF}
  74. {$ENDIF}
  75. // Emit conditionals to C++Builder compiler
  76. {$IFDEF DIRECT3D_VERSION_8}
  77. {$HPPEMIT '#define DIRECT3D_VERSION 0x0800'}
  78. {$ENDIF}
  79. {$IFDEF DIRECT3D_VERSION_7}
  80. {$HPPEMIT '#define DIRECT3D_VERSION 0x0700'}
  81. {$ENDIF}
  82. {$IFDEF DIRECT3D_VERSION_6}
  83. {$HPPEMIT '#define DIRECT3D_VERSION 0x0600'}
  84. {$ENDIF}
  85. {$IFDEF DIRECT3D_VERSION_5}
  86. {$HPPEMIT '#define DIRECT3D_VERSION 0x0500'}
  87. {$ENDIF}
  88. {$IFDEF DIRECT3D_VERSION_LESS_5}
  89. {$HPPEMIT '#define DIRECT3D_VERSION 0x0300'}
  90. {$ENDIF}
  91. // Define symbols for '>=' comparision
  92. {$IFDEF DIRECT3D_VERSION_8}
  93. {$DEFINE DIRECT3D_VERSION_7}
  94. {$ENDIF}
  95. {$IFDEF DIRECT3D_VERSION_7}
  96. {$DEFINE DIRECT3D_VERSION_6}
  97. {$ENDIF}
  98. {$IFDEF DIRECT3D_VERSION_6}
  99. {$DEFINE DIRECT3D_VERSION_5}
  100. {$ENDIF}
  101. // Define symbols for '<' comparision
  102. {$IFNDEF DIRECT3D_VERSION_8}
  103. {$DEFINE DIRECT3D_VERSION_LESS_8}
  104. {$ENDIF}
  105. {$IFNDEF DIRECT3D_VERSION_7}
  106. {$DEFINE DIRECT3D_VERSION_LESS_7}
  107. {$ENDIF}
  108. {$IFNDEF DIRECT3D_VERSION_6}
  109. {$DEFINE DIRECT3D_VERSION_LESS_6}
  110. {$ENDIF}
  111. {$IFNDEF DIRECT3D_VERSION_5}
  112. {$DEFINE DIRECT3D_VERSION_LESS_5}
  113. {$ENDIF}
  114. interface
  115. uses
  116. Windows, DXTypes, DirectDraw{$IFDEF DIRECT3D_VERSION_8}, Direct3D8{$ENDIF};
  117. {$NOINCLUDE Windows}
  118. {$NOINCLUDE DXTypes}
  119. {$NOINCLUDE DirectDraw}
  120. {$IFDEF DIRECT3D_VERSION_8}
  121. {$NOINCLUDE Direct3D8}
  122. {$ENDIF}
  123. {$HPPEMIT '#include "d3d.h"'}
  124. {$HPPEMIT '#include "d3dtypes.h"'}
  125. {$HPPEMIT '#include "d3dcaps.h"'}
  126. (* TD3DValue is the fundamental Direct3D fractional data type *)
  127. type
  128. TRefClsID = TGUID;
  129. type
  130. D3DVALUE = DXTypes.D3DVALUE;
  131. {$EXTERNALSYM D3DVALUE}
  132. TD3DValue = DXTypes.TD3DValue;
  133. {$NODEFINE TD3DValue}
  134. PD3DValue = DXTypes.PD3DValue;
  135. {$NODEFINE PD3DValue}
  136. D3DFIXED = Longint;
  137. {$EXTERNALSYM D3DFIXED}
  138. TD3DFixed = D3DFIXED;
  139. float = TD3DValue;
  140. {$EXTERNALSYM float}
  141. D3DCOLOR = DXTypes.D3DCOLOR;
  142. {$EXTERNALSYM D3DCOLOR}
  143. TD3DColor = DXTypes.TD3DColor;
  144. {$NODEFINE TD3DColor}
  145. PD3DColor = DXTypes.PD3DColor;
  146. {$NODEFINE PD3DColor}
  147. function D3DVal(val: Variant): Single;
  148. {$EXTERNALSYM D3DVal}
  149. function D3DDivide(a, b: Double): Single;
  150. {$EXTERNALSYM D3DDivide}
  151. function D3DMultiply(a, b: Double): Single;
  152. {$EXTERNALSYM D3DMultiply}
  153. (*
  154. * Format of CI colors is
  155. * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  156. * | alpha | color index | fraction |
  157. * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  158. *)
  159. // #define CI_GETALPHA(ci) ((ci) >> 24)
  160. function CI_GETALPHA(ci: DWORD): DWORD;
  161. {$EXTERNALSYM CI_GETALPHA}
  162. // #define CI_GETINDEX(ci) (((ci) >> 8) & 0xffff)
  163. function CI_GETINDEX(ci: DWORD): DWORD;
  164. {$EXTERNALSYM CI_GETINDEX}
  165. // #define CI_GETFRACTION(ci) ((ci) & 0xff)
  166. function CI_GETFRACTION(ci: DWORD): DWORD;
  167. {$EXTERNALSYM CI_GETFRACTION}
  168. // #define CI_ROUNDINDEX(ci) CI_GETINDEX((ci) + 0x80)
  169. function CI_ROUNDINDEX(ci: DWORD): DWORD;
  170. {$EXTERNALSYM CI_ROUNDINDEX}
  171. // #define CI_MASKALPHA(ci) ((ci) & 0xffffff)
  172. function CI_MASKALPHA(ci: DWORD): DWORD;
  173. {$EXTERNALSYM CI_MASKALPHA}
  174. // #define CI_MAKE(a, i, f) (((a) << 24) | ((i) << 8) | (f))
  175. function CI_MAKE(a,i,f: DWORD): DWORD;
  176. {$EXTERNALSYM CI_MAKE}
  177. (*
  178. * Format of RGBA colors is
  179. * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  180. * | alpha | red | green | blue |
  181. * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  182. *)
  183. // #define RGBA_GETALPHA(rgb) ((rgb) >> 24)
  184. function RGBA_GETALPHA(rgb: TD3DColor): DWORD;
  185. {$EXTERNALSYM RGBA_GETALPHA}
  186. // #define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
  187. function RGBA_GETRED(rgb: TD3DColor): DWORD;
  188. {$EXTERNALSYM RGBA_GETRED}
  189. // #define RGBA_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
  190. function RGBA_GETGREEN(rgb: TD3DColor): DWORD;
  191. {$EXTERNALSYM RGBA_GETGREEN}
  192. // #define RGBA_GETBLUE(rgb) ((rgb) & 0xff)
  193. function RGBA_GETBLUE(rgb: TD3DColor): DWORD;
  194. {$EXTERNALSYM RGBA_GETBLUE}
  195. // #define RGBA_MAKE(r, g, b, a) ((TD3DColor) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
  196. function RGBA_MAKE(r, g, b, a: DWORD): TD3DColor;
  197. {$EXTERNALSYM RGBA_MAKE}
  198. (* D3DRGB and D3DRGBA may be used as initialisers for D3DCOLORs
  199. * The float values must be in the range 0..1
  200. *)
  201. // #define D3DRGB(r, g, b) \
  202. // (0xff000000L | (((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
  203. function D3DRGB(r, g, b: Single): TD3DColor;
  204. {$EXTERNALSYM D3DRGB}
  205. // #define D3DRGBA(r, g, b, a) \
  206. // ( (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
  207. // | (((long)((g) * 255)) << 8) | (long)((b) * 255) \
  208. // )
  209. function D3DRGBA(r, g, b, a: Single): TD3DColor;
  210. {$EXTERNALSYM D3DRGBA}
  211. (*
  212. * Format of RGB colors is
  213. * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  214. * | ignored | red | green | blue |
  215. * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  216. *)
  217. // #define RGB_GETRED(rgb) (((rgb) >> 16) & 0xff)
  218. function RGB_GETRED(rgb: TD3DColor): DWORD;
  219. {$EXTERNALSYM RGB_GETRED}
  220. // #define RGB_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
  221. function RGB_GETGREEN(rgb: TD3DColor): DWORD;
  222. {$EXTERNALSYM RGB_GETGREEN}
  223. // #define RGB_GETBLUE(rgb) ((rgb) & 0xff)
  224. function RGB_GETBLUE(rgb: TD3DColor): DWORD;
  225. {$EXTERNALSYM RGB_GETBLUE}
  226. // #define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
  227. function RGBA_SETALPHA(rgba: TD3DColor; x: DWORD): TD3DColor;
  228. {$EXTERNALSYM RGBA_SETALPHA}
  229. // #define RGB_MAKE(r, g, b) ((TD3DColor) (((r) << 16) | ((g) << 8) | (b)))
  230. function RGB_MAKE(r, g, b: DWORD): TD3DColor;
  231. {$EXTERNALSYM RGB_MAKE}
  232. // #define RGBA_TORGB(rgba) ((TD3DColor) ((rgba) & 0xffffff))
  233. function RGBA_TORGB(rgba: TD3DColor): TD3DColor;
  234. {$EXTERNALSYM RGBA_TORGB}
  235. // #define RGB_TORGBA(rgb) ((TD3DColor) ((rgb) | 0xff000000))
  236. function RGB_TORGBA(rgb: TD3DColor): TD3DColor;
  237. {$EXTERNALSYM RGB_TORGBA}
  238. (*
  239. * Flags for Enumerate functions
  240. *)
  241. const
  242. (*
  243. * Stop the enumeration
  244. *)
  245. D3DENUMRET_CANCEL = DDENUMRET_CANCEL;
  246. {$EXTERNALSYM D3DENUMRET_CANCEL}
  247. (*
  248. * Continue the enumeration
  249. *)
  250. D3DENUMRET_OK = DDENUMRET_OK;
  251. {$EXTERNALSYM D3DENUMRET_OK}
  252. type
  253. TD3DValidateCallback = function (lpUserArg: Pointer;
  254. dwOffset: DWORD): HResult; stdcall;
  255. {$NODEFINE TD3DValidateCallback}
  256. {$HPPEMIT 'typedef LPD3DVALIDATECALLBACK TD3DValidateCallback;'}
  257. TD3DEnumTextureFormatsCallback = function (var lpDdsd: TDDSurfaceDesc;
  258. lpContext: Pointer): HResult; stdcall;
  259. {$NODEFINE TD3DEnumTextureFormatsCallback}
  260. {$HPPEMIT 'typedef LPD3DENUMTEXTUREFORMATSCALLBACK TD3DEnumTextureFormatsCallback;'}
  261. TD3DEnumPixelFormatsCallback = function (var lpDDPixFmt: TDDPixelFormat;
  262. lpContext: Pointer): HResult; stdcall;
  263. {$NODEFINE TD3DEnumPixelFormatsCallback}
  264. {$HPPEMIT 'typedef LPD3DENUMPIXELFORMATSCALLBACK TD3DEnumPixelFormatsCallback;'}
  265. PD3DMaterialHandle = ^TD3DMaterialHandle;
  266. TD3DMaterialHandle = DWORD;
  267. PD3DTextureHandle = ^TD3DTextureHandle;
  268. TD3DTextureHandle = DWORD;
  269. PD3DMatrixHandle = ^TD3DMatrixHandle;
  270. TD3DMatrixHandle = DWORD;
  271. PD3DColorValue = ^TD3DColorValue;
  272. _D3DCOLORVALUE = packed record
  273. case Integer of
  274. 0: (
  275. r: TD3DValue;
  276. g: TD3DValue;
  277. b: TD3DValue;
  278. a: TD3DValue;
  279. );
  280. 1: (
  281. dvR: TD3DValue;
  282. dvG: TD3DValue;
  283. dvB: TD3DValue;
  284. dvA: TD3DValue;
  285. );
  286. end {_D3DCOLORVALUE};
  287. {$EXTERNALSYM _D3DCOLORVALUE}
  288. D3DCOLORVALUE = _D3DCOLORVALUE;
  289. {$EXTERNALSYM D3DCOLORVALUE}
  290. TD3DColorValue = _D3DCOLORVALUE;
  291. PD3DRect = ^TD3DRect;
  292. _D3DRECT = packed record
  293. case Integer of
  294. 0: (
  295. x1: LongInt;
  296. y1: LongInt;
  297. x2: LongInt;
  298. y2: LongInt;
  299. );
  300. 1: (
  301. lX1: LongInt;
  302. lY1: LongInt;
  303. lX2: LongInt;
  304. lY2: LongInt;
  305. );
  306. 2: (
  307. a: array[0..3] of LongInt;
  308. );
  309. end {_D3DRECT};
  310. {$EXTERNALSYM _D3DRECT}
  311. D3DRECT = _D3DRECT;
  312. {$EXTERNALSYM D3DRECT}
  313. TD3DRect = _D3DRECT;
  314. PD3DVector = ^TD3DVector;
  315. _D3DVECTOR = packed record
  316. case Integer of
  317. 0: (
  318. x: TD3DValue;
  319. y: TD3DValue;
  320. z: TD3DValue;
  321. );
  322. 1: (
  323. dvX: TD3DValue;
  324. dvY: TD3DValue;
  325. dvZ: TD3DValue;
  326. );
  327. end {_D3DVECTOR};
  328. {$EXTERNALSYM _D3DVECTOR}
  329. D3DVECTOR = _D3DVECTOR;
  330. {$EXTERNALSYM D3DVECTOR}
  331. TD3DVector = _D3DVECTOR;
  332. {$HPPEMIT ''}
  333. {$HPPEMIT '#ifndef DX_SHARED_DEFINES_BCB'}
  334. {$HPPEMIT ''}
  335. {$HPPEMIT 'typedef D3DVALUE TD3DValue;'}
  336. {$HPPEMIT 'typedef D3DVALUE *PD3DValue;'}
  337. {$HPPEMIT ''}
  338. {$HPPEMIT '#ifndef D3DCOLOR_DEFINED_BCB'}
  339. {$HPPEMIT 'typedef D3DCOLOR TD3DColor;'}
  340. {$HPPEMIT 'typedef D3DCOLOR *PD3DColor;'}
  341. {$HPPEMIT '#define D3DCOLOR_DEFINED_BCB'}
  342. {$HPPEMIT '#endif'}
  343. {$HPPEMIT ''}
  344. {$HPPEMIT '#define D3DVECTOR_DEFINED_BCB'}
  345. {$HPPEMIT ''}
  346. {$HPPEMIT '#define DX_SHARED_DEFINES_BCB'}
  347. {$HPPEMIT '#endif // DX_SHARED_DEFINES_BCB'}
  348. {$HPPEMIT ''}
  349. (******************************************************************
  350. * *
  351. * D3DVec.inl *
  352. * *
  353. * float-valued 3D vector class for Direct3D. *
  354. * *
  355. * Copyright (c) 1996-1998 Microsoft Corp. All rights reserved. *
  356. * *
  357. ******************************************************************)
  358. // Addition and subtraction
  359. function VectorAdd(const v1, v2: TD3DVector): TD3DVector;
  360. function VectorSub(const v1, v2: TD3DVector): TD3DVector;
  361. // Scalar multiplication and division
  362. function VectorMulS(const v: TD3DVector; s: TD3DValue): TD3DVector;
  363. function VectorDivS(const v: TD3DVector; s: TD3DValue): TD3DVector;
  364. // Memberwise multiplication and division
  365. function VectorMul(const v1, v2: TD3DVector): TD3DVector;
  366. function VectorDiv(const v1, v2: TD3DVector): TD3DVector;
  367. // Vector dominance
  368. function VectorSmaller(v1, v2: TD3DVector): Boolean;
  369. function VectorSmallerEqual(v1, v2: TD3DVector): Boolean;
  370. // Bitwise equality
  371. function VectorEqual(v1, v2: TD3DVector): Boolean;
  372. // Length-related functions
  373. function VectorSquareMagnitude(v: TD3DVector): TD3DValue;
  374. function VectorMagnitude(v: TD3DVector): TD3DValue;
  375. // Returns vector with same direction and unit length
  376. function VectorNormalize(const v: TD3DVector): TD3DVector;
  377. // Return min/max component of the input vector
  378. function VectorMin(v: TD3DVector): TD3DValue;
  379. function VectorMax(v: TD3DVector): TD3DValue;
  380. // Return memberwise min/max of input vectors
  381. function VectorMinimize(const v1, v2: TD3DVector): TD3DVector;
  382. function VectorMaximize(const v1, v2: TD3DVector): TD3DVector;
  383. // Dot and cross product
  384. function VectorDotProduct(v1, v2: TD3DVector): TD3DValue;
  385. function VectorCrossProduct(const v1, v2: TD3DVector): TD3DVector;
  386. type
  387. (*
  388. * Vertex data types supported in an ExecuteBuffer.
  389. *)
  390. (*
  391. * Homogeneous vertices
  392. *)
  393. PD3DHVertex = ^TD3DHVertex;
  394. _D3DHVERTEX = packed record
  395. dwFlags: DWORD; (* Homogeneous clipping flags *)
  396. case Integer of
  397. 0: (
  398. hx: TD3DValue;
  399. hy: TD3DValue;
  400. hz: TD3DValue;
  401. );
  402. 1: (
  403. dvHX: TD3DValue;
  404. dvHY: TD3DValue;
  405. dvHZ: TD3DValue;
  406. );
  407. end;
  408. {$EXTERNALSYM _D3DHVERTEX}
  409. D3DHVERTEX = _D3DHVERTEX;
  410. {$EXTERNALSYM D3DHVERTEX}
  411. TD3DHVertex = _D3DHVERTEX;
  412. (*
  413. * Transformed/lit vertices
  414. *)
  415. PD3DTLVertex = ^TD3DTLVertex;
  416. _D3DTLVERTEX = packed record
  417. case Integer of
  418. 0: (
  419. sx: TD3DValue; (* Screen coordinates *)
  420. sy: TD3DValue;
  421. sz: TD3DValue;
  422. rhw: TD3DValue; (* Reciprocal of homogeneous w *)
  423. color: TD3DColor; (* Vertex color *)
  424. specular: TD3DColor; (* Specular component of vertex *)
  425. tu: TD3DValue; (* Texture coordinates *)
  426. tv: TD3DValue;
  427. );
  428. 1: (
  429. dvSX: TD3DValue;
  430. dvSY: TD3DValue;
  431. dvSZ: TD3DValue;
  432. dvRHW: TD3DValue;
  433. dcColor: TD3DColor;
  434. dcSpecular: TD3DColor;
  435. dvTU: TD3DValue;
  436. dvTV: TD3DValue;
  437. );
  438. end;
  439. {$EXTERNALSYM _D3DTLVERTEX}
  440. D3DTLVERTEX = _D3DTLVERTEX;
  441. {$EXTERNALSYM D3DTLVERTEX}
  442. TD3DTLVertex = _D3DTLVERTEX;
  443. (*
  444. * Untransformed/lit vertices
  445. *)
  446. PD3DLVertex = ^TD3DLVertex;
  447. _D3DLVERTEX = packed record
  448. case Integer of
  449. 0: (
  450. x: TD3DValue; (* Homogeneous coordinates *)
  451. y: TD3DValue;
  452. z: TD3DValue;
  453. dwReserved: DWORD;
  454. color: TD3DColor; (* Vertex color *)
  455. specular: TD3DColor; (* Specular component of vertex *)
  456. tu: TD3DValue; (* Texture coordinates *)
  457. tv: TD3DValue;
  458. );
  459. 1: (
  460. dvX: TD3DValue;
  461. dvY: TD3DValue;
  462. dvZ: TD3DValue;
  463. UNIONFILLER1d: DWORD;
  464. dcColor: TD3DColor;
  465. dcSpecular: TD3DColor;
  466. dvTU: TD3DValue;
  467. dvTV: TD3DValue;
  468. );
  469. end;
  470. {$EXTERNALSYM _D3DLVERTEX}
  471. D3DLVERTEX = _D3DLVERTEX;
  472. {$EXTERNALSYM D3DLVERTEX}
  473. TD3DLVertex = _D3DLVERTEX;
  474. (*
  475. * Untransformed/unlit vertices
  476. *)
  477. PD3DVertex = ^TD3DVertex;
  478. _D3DVERTEX = packed record
  479. case Integer of
  480. 0: (
  481. x: TD3DValue; (* Homogeneous coordinates *)
  482. y: TD3DValue;
  483. z: TD3DValue;
  484. nx: TD3DValue; (* Normal *)
  485. ny: TD3DValue;
  486. nz: TD3DValue;
  487. tu: TD3DValue; (* Texture coordinates *)
  488. tv: TD3DValue;
  489. );
  490. 1: (
  491. dvX: TD3DValue;
  492. dvY: TD3DValue;
  493. dvZ: TD3DValue;
  494. dvNX: TD3DValue;
  495. dvNY: TD3DValue;
  496. dvNZ: TD3DValue;
  497. dvTU: TD3DValue;
  498. dvTV: TD3DValue;
  499. );
  500. end;
  501. {$EXTERNALSYM _D3DVERTEX}
  502. D3DVERTEX = _D3DVERTEX;
  503. {$EXTERNALSYM D3DVERTEX}
  504. TD3DVertex = _D3DVERTEX;
  505. (*
  506. * Matrix, viewport, and tranformation structures and definitions.
  507. *)
  508. PD3DMatrix = ^TD3DMatrix;
  509. _D3DMATRIX = packed record
  510. case integer of
  511. 0 : (_11, _12, _13, _14: TD3DValue;
  512. _21, _22, _23, _24: TD3DValue;
  513. _31, _32, _33, _34: TD3DValue;
  514. _41, _42, _43, _44: TD3DValue);
  515. 1 : (m : array [0..3, 0..3] of TD3DValue);
  516. end {_D3DMATRIX};
  517. {$EXTERNALSYM _D3DMATRIX}
  518. D3DMATRIX = _D3DMATRIX;
  519. {$EXTERNALSYM D3DMATRIX}
  520. TD3DMatrix = _D3DMATRIX;
  521. PD3DViewport = ^TD3DViewport;
  522. _D3DVIEWPORT = packed record
  523. dwSize: DWORD;
  524. dwX: DWORD;
  525. dwY: DWORD; (* Top left *)
  526. dwWidth: DWORD;
  527. dwHeight: DWORD; (* Dimensions *)
  528. dvScaleX: TD3DValue; (* Scale homogeneous to screen *)
  529. dvScaleY: TD3DValue; (* Scale homogeneous to screen *)
  530. dvMaxX: TD3DValue; (* Min/max homogeneous x coord *)
  531. dvMaxY: TD3DValue; (* Min/max homogeneous y coord *)
  532. dvMinZ: TD3DValue;
  533. dvMaxZ: TD3DValue; (* Min/max homogeneous z coord *)
  534. end {_D3DVIEWPORT};
  535. {$EXTERNALSYM _D3DVIEWPORT}
  536. D3DVIEWPORT = _D3DVIEWPORT;
  537. {$EXTERNALSYM D3DVIEWPORT}
  538. TD3DViewport = _D3DVIEWPORT;
  539. {$IFDEF DIRECT3D_VERSION_5}
  540. PD3DViewport2 = ^TD3DViewport2;
  541. _D3DVIEWPORT2 = packed record
  542. dwSize: DWORD;
  543. dwX: DWORD;
  544. dwY: DWORD; (* Viewport Top left *)
  545. dwWidth: DWORD;
  546. dwHeight: DWORD; (* Viewport Dimensions *)
  547. dvClipX: TD3DValue; (* Top left of clip volume *)
  548. dvClipY: TD3DValue;
  549. dvClipWidth: TD3DValue; (* Clip Volume Dimensions *)
  550. dvClipHeight: TD3DValue;
  551. dvMinZ: TD3DValue; (* Min/max of clip Volume *)
  552. dvMaxZ: TD3DValue;
  553. end;
  554. {$EXTERNALSYM _D3DVIEWPORT2}
  555. D3DVIEWPORT2 = _D3DVIEWPORT2;
  556. {$EXTERNALSYM D3DVIEWPORT2}
  557. TD3DViewport2 = _D3DVIEWPORT2;
  558. {$ENDIF} // DIRECT3D_VERSION_5
  559. {$IFDEF DIRECT3D_VERSION_7}
  560. PD3DViewport7 = ^TD3DViewport7;
  561. _D3DVIEWPORT7 = packed record
  562. dwX: DWORD;
  563. dwY: DWORD; (* Viewport Top left *)
  564. dwWidth: DWORD;
  565. dwHeight: DWORD; (* Viewport Dimensions *)
  566. dvMinZ: TD3DValue; (* Min/max of clip Volume *)
  567. dvMaxZ: TD3DValue;
  568. end;
  569. {$EXTERNALSYM _D3DVIEWPORT7}
  570. D3DVIEWPORT7 = _D3DVIEWPORT7;
  571. {$EXTERNALSYM D3DVIEWPORT7}
  572. TD3DViewport7 = _D3DVIEWPORT7;
  573. {$ENDIF} // DIRECT3D_VERSION_7
  574. (*
  575. * Values for clip fields.
  576. *)
  577. {$IFDEF DIRECT3D_VERSION_7}
  578. const
  579. // Max number of user clipping planes, supported in D3D.
  580. D3DMAXUSERCLIPPLANES = 32;
  581. {$EXTERNALSYM D3DMAXUSERCLIPPLANES}
  582. // These bits could be ORed together to use with D3DRENDERSTATE_CLIPPLANEENABLE
  583. //
  584. D3DCLIPPLANE0 = (1 shl 0);
  585. {$EXTERNALSYM D3DCLIPPLANE0}
  586. D3DCLIPPLANE1 = (1 shl 1);
  587. {$EXTERNALSYM D3DCLIPPLANE1}
  588. D3DCLIPPLANE2 = (1 shl 2);
  589. {$EXTERNALSYM D3DCLIPPLANE2}
  590. D3DCLIPPLANE3 = (1 shl 3);
  591. {$EXTERNALSYM D3DCLIPPLANE3}
  592. D3DCLIPPLANE4 = (1 shl 4);
  593. {$EXTERNALSYM D3DCLIPPLANE4}
  594. D3DCLIPPLANE5 = (1 shl 5);
  595. {$EXTERNALSYM D3DCLIPPLANE5}
  596. {$ENDIF} // DIRECT3D_VERSION_7
  597. const
  598. D3DCLIP_LEFT = $00000001;
  599. {$EXTERNALSYM D3DCLIP_LEFT}
  600. D3DCLIP_RIGHT = $00000002;
  601. {$EXTERNALSYM D3DCLIP_RIGHT}
  602. D3DCLIP_TOP = $00000004;
  603. {$EXTERNALSYM D3DCLIP_TOP}
  604. D3DCLIP_BOTTOM = $00000008;
  605. {$EXTERNALSYM D3DCLIP_BOTTOM}
  606. D3DCLIP_FRONT = $00000010;
  607. {$EXTERNALSYM D3DCLIP_FRONT}
  608. D3DCLIP_BACK = $00000020;
  609. {$EXTERNALSYM D3DCLIP_BACK}
  610. D3DCLIP_GEN0 = $00000040;
  611. {$EXTERNALSYM D3DCLIP_GEN0}
  612. D3DCLIP_GEN1 = $00000080;
  613. {$EXTERNALSYM D3DCLIP_GEN1}
  614. D3DCLIP_GEN2 = $00000100;
  615. {$EXTERNALSYM D3DCLIP_GEN2}
  616. D3DCLIP_GEN3 = $00000200;
  617. {$EXTERNALSYM D3DCLIP_GEN3}
  618. D3DCLIP_GEN4 = $00000400;
  619. {$EXTERNALSYM D3DCLIP_GEN4}
  620. D3DCLIP_GEN5 = $00000800;
  621. {$EXTERNALSYM D3DCLIP_GEN5}
  622. (*
  623. * Values for d3d status.
  624. *)
  625. D3DSTATUS_CLIPUNIONLEFT = D3DCLIP_LEFT;
  626. {$EXTERNALSYM D3DSTATUS_CLIPUNIONLEFT}
  627. D3DSTATUS_CLIPUNIONRIGHT = D3DCLIP_RIGHT;
  628. {$EXTERNALSYM D3DSTATUS_CLIPUNIONRIGHT}
  629. D3DSTATUS_CLIPUNIONTOP = D3DCLIP_TOP;
  630. {$EXTERNALSYM D3DSTATUS_CLIPUNIONTOP}
  631. D3DSTATUS_CLIPUNIONBOTTOM = D3DCLIP_BOTTOM;
  632. {$EXTERNALSYM D3DSTATUS_CLIPUNIONBOTTOM}
  633. D3DSTATUS_CLIPUNIONFRONT = D3DCLIP_FRONT;
  634. {$EXTERNALSYM D3DSTATUS_CLIPUNIONFRONT}
  635. D3DSTATUS_CLIPUNIONBACK = D3DCLIP_BACK;
  636. {$EXTERNALSYM D3DSTATUS_CLIPUNIONBACK}
  637. D3DSTATUS_CLIPUNIONGEN0 = D3DCLIP_GEN0;
  638. {$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN0}
  639. D3DSTATUS_CLIPUNIONGEN1 = D3DCLIP_GEN1;
  640. {$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN1}
  641. D3DSTATUS_CLIPUNIONGEN2 = D3DCLIP_GEN2;
  642. {$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN2}
  643. D3DSTATUS_CLIPUNIONGEN3 = D3DCLIP_GEN3;
  644. {$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN3}
  645. D3DSTATUS_CLIPUNIONGEN4 = D3DCLIP_GEN4;
  646. {$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN4}
  647. D3DSTATUS_CLIPUNIONGEN5 = D3DCLIP_GEN5;
  648. {$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN5}
  649. D3DSTATUS_CLIPINTERSECTIONLEFT = $00001000;
  650. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONLEFT}
  651. D3DSTATUS_CLIPINTERSECTIONRIGHT = $00002000;
  652. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONRIGHT}
  653. D3DSTATUS_CLIPINTERSECTIONTOP = $00004000;
  654. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONTOP}
  655. D3DSTATUS_CLIPINTERSECTIONBOTTOM = $00008000;
  656. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONBOTTOM}
  657. D3DSTATUS_CLIPINTERSECTIONFRONT = $00010000;
  658. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONFRONT}
  659. D3DSTATUS_CLIPINTERSECTIONBACK = $00020000;
  660. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONBACK}
  661. D3DSTATUS_CLIPINTERSECTIONGEN0 = $00040000;
  662. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN0}
  663. D3DSTATUS_CLIPINTERSECTIONGEN1 = $00080000;
  664. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN1}
  665. D3DSTATUS_CLIPINTERSECTIONGEN2 = $00100000;
  666. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN2}
  667. D3DSTATUS_CLIPINTERSECTIONGEN3 = $00200000;
  668. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN3}
  669. D3DSTATUS_CLIPINTERSECTIONGEN4 = $00400000;
  670. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN4}
  671. D3DSTATUS_CLIPINTERSECTIONGEN5 = $00800000;
  672. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN5}
  673. D3DSTATUS_ZNOTVISIBLE = $01000000;
  674. {$EXTERNALSYM D3DSTATUS_ZNOTVISIBLE}
  675. (* Do not use 0x80000000 for any status flags in future as it is reserved *)
  676. D3DSTATUS_CLIPUNIONALL = (
  677. D3DSTATUS_CLIPUNIONLEFT or
  678. D3DSTATUS_CLIPUNIONRIGHT or
  679. D3DSTATUS_CLIPUNIONTOP or
  680. D3DSTATUS_CLIPUNIONBOTTOM or
  681. D3DSTATUS_CLIPUNIONFRONT or
  682. D3DSTATUS_CLIPUNIONBACK or
  683. D3DSTATUS_CLIPUNIONGEN0 or
  684. D3DSTATUS_CLIPUNIONGEN1 or
  685. D3DSTATUS_CLIPUNIONGEN2 or
  686. D3DSTATUS_CLIPUNIONGEN3 or
  687. D3DSTATUS_CLIPUNIONGEN4 or
  688. D3DSTATUS_CLIPUNIONGEN5);
  689. {$EXTERNALSYM D3DSTATUS_CLIPUNIONALL}
  690. D3DSTATUS_CLIPINTERSECTIONALL = (
  691. D3DSTATUS_CLIPINTERSECTIONLEFT or
  692. D3DSTATUS_CLIPINTERSECTIONRIGHT or
  693. D3DSTATUS_CLIPINTERSECTIONTOP or
  694. D3DSTATUS_CLIPINTERSECTIONBOTTOM or
  695. D3DSTATUS_CLIPINTERSECTIONFRONT or
  696. D3DSTATUS_CLIPINTERSECTIONBACK or
  697. D3DSTATUS_CLIPINTERSECTIONGEN0 or
  698. D3DSTATUS_CLIPINTERSECTIONGEN1 or
  699. D3DSTATUS_CLIPINTERSECTIONGEN2 or
  700. D3DSTATUS_CLIPINTERSECTIONGEN3 or
  701. D3DSTATUS_CLIPINTERSECTIONGEN4 or
  702. D3DSTATUS_CLIPINTERSECTIONGEN5);
  703. {$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONALL}
  704. D3DSTATUS_DEFAULT = (
  705. D3DSTATUS_CLIPINTERSECTIONALL or
  706. D3DSTATUS_ZNOTVISIBLE);
  707. {$EXTERNALSYM D3DSTATUS_DEFAULT}
  708. (*
  709. * Options for direct transform calls
  710. *)
  711. D3DTRANSFORM_CLIPPED = $00000001;
  712. {$EXTERNALSYM D3DTRANSFORM_CLIPPED}
  713. D3DTRANSFORM_UNCLIPPED = $00000002;
  714. {$EXTERNALSYM D3DTRANSFORM_UNCLIPPED}
  715. type
  716. PD3DTransformData = ^TD3DTransformData;
  717. _D3DTRANSFORMDATA = packed record
  718. dwSize: DWORD;
  719. lpIn: Pointer; (* Input vertices *)
  720. dwInSize: DWORD; (* Stride of input vertices *)
  721. lpOut: Pointer; (* Output vertices *)
  722. dwOutSize: DWORD; (* Stride of output vertices *)
  723. lpHOut: ^TD3DHVertex; (* Output homogeneous vertices *)
  724. dwClip: DWORD; (* Clipping hint *)
  725. dwClipIntersection: DWORD;
  726. dwClipUnion: DWORD; (* Union of all clip flags *)
  727. drExtent: TD3DRect; (* Extent of transformed vertices *)
  728. end;
  729. {$EXTERNALSYM _D3DTRANSFORMDATA}
  730. D3DTRANSFORMDATA = _D3DTRANSFORMDATA;
  731. {$EXTERNALSYM D3DTRANSFORMDATA}
  732. TD3DTransformData = _D3DTRANSFORMDATA;
  733. (*
  734. * Structure defining position and direction properties for lighting.
  735. *)
  736. PD3DLightingElement = ^TD3DLightingElement;
  737. _D3DLIGHTINGELEMENT = packed record
  738. dvPosition: TD3DVector; (* Lightable point in model space *)
  739. dvNormal: TD3DVector; (* Normalised unit vector *)
  740. end;
  741. {$EXTERNALSYM _D3DLIGHTINGELEMENT}
  742. D3DLIGHTINGELEMENT = _D3DLIGHTINGELEMENT;
  743. {$EXTERNALSYM D3DLIGHTINGELEMENT}
  744. TD3DLightingElement = _D3DLIGHTINGELEMENT;
  745. (*
  746. * Structure defining material properties for lighting.
  747. *)
  748. PD3DMaterial = ^TD3DMaterial;
  749. _D3DMATERIAL = packed record
  750. dwSize: DWORD;
  751. case Integer of
  752. 0: (
  753. diffuse: TD3DColorValue; (* Diffuse color RGBA *)
  754. ambient: TD3DColorValue; (* Ambient color RGB *)
  755. specular: TD3DColorValue; (* Specular 'shininess' *)
  756. emissive: TD3DColorValue; (* Emissive color RGB *)
  757. power: TD3DValue; (* Sharpness if specular highlight *)
  758. hTexture: TD3DTextureHandle; (* Handle to texture map *)
  759. dwRampSize: DWORD;
  760. );
  761. 1: (
  762. dcvDiffuse: TD3DColorValue;
  763. dcvAmbient: TD3DColorValue;
  764. dcvSpecular: TD3DColorValue;
  765. dcvEmissive: TD3DColorValue;
  766. dvPower: TD3DValue;
  767. );
  768. end;
  769. {$EXTERNALSYM _D3DMATERIAL}
  770. D3DMATERIAL = _D3DMATERIAL;
  771. {$EXTERNALSYM D3DMATERIAL}
  772. TD3DMaterial = _D3DMATERIAL;
  773. {$IFDEF DIRECT3D_VERSION_7}
  774. PD3DMaterial7 = ^TD3DMaterial7;
  775. _D3DMATERIAL7 = packed record
  776. case Integer of
  777. 0: (
  778. diffuse: TD3DColorValue; (* Diffuse color RGBA *)
  779. ambient: TD3DColorValue; (* Ambient color RGB *)
  780. specular: TD3DColorValue; (* Specular 'shininess' *)
  781. emissive: TD3DColorValue; (* Emissive color RGB *)
  782. power: TD3DValue; (* Sharpness if specular highlight *)
  783. );
  784. 1: (
  785. dcvDiffuse: TD3DColorValue;
  786. dcvAmbient: TD3DColorValue;
  787. dcvSpecular: TD3DColorValue;
  788. dcvEmissive: TD3DColorValue;
  789. dvPower: TD3DValue;
  790. );
  791. end;
  792. {$EXTERNALSYM _D3DMATERIAL7}
  793. D3DMATERIAL7 = _D3DMATERIAL7;
  794. {$EXTERNALSYM D3DMATERIAL7}
  795. TD3DMaterial7 = _D3DMATERIAL7;
  796. {$ENDIF} // DIRECT3D_VERSION_7
  797. {$IFDEF DIRECT3D_VERSION_LESS_8}
  798. PD3DLightType = ^TD3DLightType;
  799. _D3DLIGHTTYPE = (
  800. D3DLIGHT_INVALID_0,
  801. D3DLIGHT_POINT,
  802. D3DLIGHT_SPOT,
  803. D3DLIGHT_DIRECTIONAL,
  804. // Note: The following light type (D3DLIGHT_PARALLELPOINT)
  805. // is no longer supported from D3D for DX7 onwards.
  806. D3DLIGHT_PARALLELPOINT
  807. {$IFDEF DIRECT3D_VERSION_LESS_5}, // For backward compatible headers
  808. D3DLIGHT_GLSPOT
  809. {$ENDIF} // DIRECT3D_VERSION_LESS_5
  810. );
  811. {$EXTERNALSYM _D3DLIGHTTYPE}
  812. D3DLIGHTTYPE = _D3DLIGHTTYPE;
  813. {$EXTERNALSYM D3DLIGHTTYPE}
  814. TD3DLightType = _D3DLIGHTTYPE;
  815. {$ELSE}
  816. const
  817. D3DLIGHT_PARALLELPOINT = TD3DLightType(4);
  818. {$EXTERNALSYM D3DLIGHT_PARALLELPOINT}
  819. D3DLIGHT_GLSPOT = TD3DLightType(5);
  820. {$EXTERNALSYM D3DLIGHT_GLSPOT}
  821. type
  822. {$ENDIF} //(DIRECT3D_VERSION < 0x0800)
  823. (*
  824. * Structure defining a light source and its properties.
  825. *)
  826. PD3DLight = ^TD3DLight;
  827. _D3DLIGHT = packed record
  828. dwSize: DWORD;
  829. dltType: TD3DLightType; (* Type of light source *)
  830. dcvColor: TD3DColorValue; (* Color of light *)
  831. dvPosition: TD3DVector; (* Position in world space *)
  832. dvDirection: TD3DVector; (* Direction in world space *)
  833. dvRange: TD3DValue; (* Cutoff range *)
  834. dvFalloff: TD3DValue; (* Falloff *)
  835. dvAttenuation0: TD3DValue; (* Constant attenuation *)
  836. dvAttenuation1: TD3DValue; (* Linear attenuation *)
  837. dvAttenuation2: TD3DValue; (* Quadratic attenuation *)
  838. dvTheta: TD3DValue; (* Inner angle of spotlight cone *)
  839. dvPhi: TD3DValue; (* Outer angle of spotlight cone *)
  840. end;
  841. {$EXTERNALSYM _D3DLIGHT}
  842. D3DLIGHT = _D3DLIGHT;
  843. {$EXTERNALSYM D3DLIGHT}
  844. TD3DLight = _D3DLIGHT;
  845. {$IFDEF DIRECT3D_VERSION_7}
  846. PD3DLight7 = ^TD3DLight7;
  847. _D3DLIGHT7 = packed record
  848. dltType: TD3DLightType; (* Type of light source *)
  849. dcvDiffuse: TD3DColorValue; (* Diffuse color of light *)
  850. dcvSpecular: TD3DColorValue;(* Specular color of light *)
  851. dcvAmbient: TD3DColorValue; (* Ambient color of light *)
  852. dvPosition: TD3DVector; (* Position in world space *)
  853. dvDirection: TD3DVector; (* Direction in world space *)
  854. dvRange: TD3DValue; (* Cutoff range *)
  855. dvFalloff: TD3DValue; (* Falloff *)
  856. dvAttenuation0: TD3DValue; (* Constant attenuation *)
  857. dvAttenuation1: TD3DValue; (* Linear attenuation *)
  858. dvAttenuation2: TD3DValue; (* Quadratic attenuation *)
  859. dvTheta: TD3DValue; (* Inner angle of spotlight cone *)
  860. dvPhi: TD3DValue; (* Outer angle of spotlight cone *)
  861. end;
  862. {$EXTERNALSYM _D3DLIGHT7}
  863. D3DLIGHT7 = _D3DLIGHT7;
  864. {$EXTERNALSYM D3DLIGHT7}
  865. TD3DLight7 = _D3DLIGHT7;
  866. {$ENDIF} // DIRECT3D_VERSION_7
  867. {$IFDEF DIRECT3D_VERSION_5}
  868. (*
  869. * Structure defining a light source and its properties.
  870. *)
  871. (* flags bits *)
  872. const
  873. D3DLIGHT_ACTIVE = $00000001;
  874. {$EXTERNALSYM D3DLIGHT_ACTIVE}
  875. D3DLIGHT_NO_SPECULAR = $00000002;
  876. {$EXTERNALSYM D3DLIGHT_NO_SPECULAR}
  877. D3DLIGHT_ALL = D3DLIGHT_ACTIVE or D3DLIGHT_ACTIVE;
  878. {$EXTERNALSYM D3DLIGHT_ALL}
  879. (* maximum valid light range *)
  880. D3DLIGHT_RANGE_MAX = 1.8439088915e+18; //sqrt(FLT_MAX);
  881. {$EXTERNALSYM D3DLIGHT_RANGE_MAX}
  882. type
  883. PD3DLight2 = ^TD3DLight2;
  884. _D3DLIGHT2 = packed record
  885. dwSize: DWORD;
  886. dltType: TD3DLightType; (* Type of light source *)
  887. dcvColor: TD3DColorValue; (* Color of light *)
  888. dvPosition: TD3DVector; (* Position in world space *)
  889. dvDirection: TD3DVector; (* Direction in world space *)
  890. dvRange: TD3DValue; (* Cutoff range *)
  891. dvFalloff: TD3DValue; (* Falloff *)
  892. dvAttenuation0: TD3DValue; (* Constant attenuation *)
  893. dvAttenuation1: TD3DValue; (* Linear attenuation *)
  894. dvAttenuation2: TD3DValue; (* Quadratic attenuation *)
  895. dvTheta: TD3DValue; (* Inner angle of spotlight cone *)
  896. dvPhi: TD3DValue; (* Outer angle of spotlight cone *)
  897. dwFlags: DWORD;
  898. end;
  899. {$EXTERNALSYM _D3DLIGHT2}
  900. D3DLIGHT2 = _D3DLIGHT2;
  901. {$EXTERNALSYM D3DLIGHT2}
  902. TD3DLight2 = _D3DLIGHT2;
  903. {$ELSE}
  904. PD3DLight2 = PD3DLight;
  905. TD3DLight2 = TD3DLight;
  906. {$ENDIF} // DIRECT3D_VERSION_5
  907. PD3DLightData = ^TD3DLightData;
  908. _D3DLIGHTDATA = packed record
  909. dwSize: DWORD;
  910. lpIn: ^TD3DLightingElement; (* Input positions and normals *)
  911. dwInSize: DWORD; (* Stride of input elements *)
  912. lpOut: ^TD3DTLVertex; (* Output colors *)
  913. dwOutSize: DWORD; (* Stride of output colors *)
  914. end;
  915. {$EXTERNALSYM _D3DLIGHTDATA}
  916. D3DLIGHTDATA = _D3DLIGHTDATA;
  917. {$EXTERNALSYM D3DLIGHTDATA}
  918. TD3DLightData = _D3DLIGHTDATA;
  919. (*
  920. * Before DX5, these values were in an enum called
  921. * TD3DColorModel. This was not correct, since they are
  922. * bit flags. A driver can surface either or both flags
  923. * in the dcmColorModel member of D3DDEVICEDESC.
  924. *)
  925. type
  926. TD3DColorModel = DWORD;
  927. const
  928. D3DCOLOR_MONO = 1;
  929. {$EXTERNALSYM D3DCOLOR_MONO}
  930. D3DCOLOR_RGB = 2;
  931. {$EXTERNALSYM D3DCOLOR_RGB}
  932. (*
  933. * Options for clearing
  934. *)
  935. const
  936. D3DCLEAR_TARGET = $00000001; (* Clear target surface *)
  937. {$EXTERNALSYM D3DCLEAR_TARGET}
  938. D3DCLEAR_ZBUFFER = $00000002; (* Clear target z buffer *)
  939. {$EXTERNALSYM D3DCLEAR_ZBUFFER}
  940. {$IFDEF DIRECT3D_VERSION_6}
  941. D3DCLEAR_STENCIL = $00000004; (* Clear stencil planes *)
  942. {$EXTERNALSYM D3DCLEAR_STENCIL}
  943. {$ENDIF} // DIRECT3D_VERSION_6
  944. (*
  945. * Execute buffers are allocated via Direct3D. These buffers may then
  946. * be filled by the application with instructions to execute along with
  947. * vertex data.
  948. *)
  949. (*
  950. * Supported op codes for execute instructions.
  951. *)
  952. type
  953. PD3DOpcode = ^TD3DOpcode;
  954. _D3DOPCODE = (
  955. D3DOP_INVALID_0,
  956. D3DOP_POINT,
  957. D3DOP_LINE,
  958. D3DOP_TRIANGLE,
  959. D3DOP_MATRIXLOAD,
  960. D3DOP_MATRIXMULTIPLY,
  961. D3DOP_STATETRANSFORM,
  962. D3DOP_STATELIGHT,
  963. D3DOP_STATERENDER,
  964. D3DOP_PROCESSVERTICES,
  965. D3DOP_TEXTURELOAD,
  966. D3DOP_EXIT,
  967. D3DOP_BRANCHFORWARD,
  968. D3DOP_SPAN,
  969. D3DOP_SETSTATUS);
  970. {$EXTERNALSYM _D3DOPCODE}
  971. D3DOPCODE = _D3DOPCODE;
  972. {$EXTERNALSYM D3DOPCODE}
  973. TD3DOpcode = _D3DOPCODE;
  974. PD3DInstruction = ^TD3DInstruction;
  975. _D3DINSTRUCTION = packed record
  976. bOpcode: Byte; (* Instruction opcode *)
  977. bSize: Byte; (* Size of each instruction data unit *)
  978. wCount: Word; (* Count of instruction data units to follow *)
  979. end;
  980. {$EXTERNALSYM _D3DINSTRUCTION}
  981. D3DINSTRUCTION = _D3DINSTRUCTION;
  982. {$EXTERNALSYM D3DINSTRUCTION}
  983. TD3DInstruction = _D3DINSTRUCTION;
  984. (*
  985. * Structure for texture loads
  986. *)
  987. PD3DTextureLoad = ^TD3DTextureLoad;
  988. _D3DTEXTURELOAD = packed record
  989. hDestTexture: TD3DTextureHandle;
  990. hSrcTexture: TD3DTextureHandle;
  991. end;
  992. {$EXTERNALSYM _D3DTEXTURELOAD}
  993. D3DTEXTURELOAD = _D3DTEXTURELOAD;
  994. {$EXTERNALSYM D3DTEXTURELOAD}
  995. TD3DTextureLoad = _D3DTEXTURELOAD;
  996. (*
  997. * Structure for picking
  998. *)
  999. PD3DPickRecord = ^TD3DPickRecord;
  1000. _D3DPICKRECORD = packed record
  1001. bOpcode: Byte;
  1002. bPad: Byte;
  1003. dwOffset: DWORD;
  1004. dvZ: TD3DValue;
  1005. end;
  1006. {$EXTERNALSYM _D3DPICKRECORD}
  1007. D3DPICKRECORD = _D3DPICKRECORD;
  1008. {$EXTERNALSYM D3DPICKRECORD}
  1009. TD3DPickRecord = _D3DPICKRECORD;
  1010. (*
  1011. * The following defines the rendering states which can be set in the
  1012. * execute buffer.
  1013. *)
  1014. {$IFDEF DIRECT3D_VERSION_LESS_8}
  1015. PD3DShadeMode = ^TD3DShadeMode;
  1016. _D3DSHADEMODE = (
  1017. D3DSHADE_INVALID_0,
  1018. D3DSHADE_FLAT,
  1019. D3DSHADE_GOURAUD,
  1020. D3DSHADE_PHONG);
  1021. {$EXTERNALSYM _D3DSHADEMODE}
  1022. D3DSHADEMODE = _D3DSHADEMODE;
  1023. {$EXTERNALSYM D3DSHADEMODE}
  1024. TD3DShadeMode = _D3DSHADEMODE;
  1025. PD3DFillMode = ^TD3DFillMode;
  1026. _D3DFILLMODE = (
  1027. D3DFILL_INVALID_0,
  1028. D3DFILL_POINT,
  1029. D3DFILL_WIREFRAME,
  1030. D3DFILL_SOLID);
  1031. {$EXTERNALSYM _D3DFILLMODE}
  1032. D3DFILLMODE = _D3DFILLMODE;
  1033. {$EXTERNALSYM D3DFILLMODE}
  1034. TD3DFillMode = _D3DFILLMODE;
  1035. PD3DLinePattern = ^TD3DLinePattern;
  1036. _D3DLINEPATTERN = packed record
  1037. wRepeatFactor: WORD;
  1038. wLinePattern: WORD;
  1039. end;
  1040. {$EXTERNALSYM _D3DLINEPATTERN}
  1041. D3DLINEPATTERN = _D3DLINEPATTERN;
  1042. {$EXTERNALSYM D3DLINEPATTERN}
  1043. TD3DLinePattern = _D3DLINEPATTERN;
  1044. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  1045. PD3DTextureFilter = ^TD3DTextureFilter;
  1046. _D3DTEXTUREFILTER = (
  1047. D3DFILTER_INVALID_0,
  1048. D3DFILTER_NEAREST,
  1049. D3DFILTER_LINEAR,
  1050. D3DFILTER_MIPNEAREST,
  1051. D3DFILTER_MIPLINEAR,
  1052. D3DFILTER_LINEARMIPNEAREST,
  1053. D3DFILTER_LINEARMIPLINEAR);
  1054. {$EXTERNALSYM _D3DTEXTUREFILTER}
  1055. D3DTEXTUREFILTER = _D3DTEXTUREFILTER;
  1056. {$EXTERNALSYM D3DTEXTUREFILTER}
  1057. TD3DTextureFilter = _D3DTEXTUREFILTER;
  1058. {$IFDEF DIRECT3D_VERSION_LESS_8}
  1059. PD3DBlend = ^TD3DBlend;
  1060. _D3DBLEND = (
  1061. D3DBLEND_INVALID_0,
  1062. D3DBLEND_ZERO,
  1063. D3DBLEND_ONE,
  1064. D3DBLEND_SRCCOLOR,
  1065. D3DBLEND_INVSRCCOLOR,
  1066. D3DBLEND_SRCALPHA,
  1067. D3DBLEND_INVSRCALPHA,
  1068. D3DBLEND_DESTALPHA,
  1069. D3DBLEND_INVDESTALPHA,
  1070. D3DBLEND_DESTCOLOR,
  1071. D3DBLEND_INVDESTCOLOR,
  1072. D3DBLEND_SRCALPHASAT,
  1073. D3DBLEND_BOTHSRCALPHA,
  1074. D3DBLEND_BOTHINVSRCALPHA);
  1075. {$EXTERNALSYM _D3DBLEND}
  1076. D3DBLEND = _D3DBLEND;
  1077. {$EXTERNALSYM D3DBLEND}
  1078. TD3DBlend = _D3DBLEND;
  1079. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  1080. PD3DTextureBlend = ^TD3DTextureBlend;
  1081. _D3DTEXTUREBLEND = (
  1082. D3DTBLEND_INVALID_0,
  1083. D3DTBLEND_DECAL,
  1084. D3DTBLEND_MODULATE,
  1085. D3DTBLEND_DECALALPHA,
  1086. D3DTBLEND_MODULATEALPHA,
  1087. D3DTBLEND_DECALMASK,
  1088. D3DTBLEND_MODULATEMASK,
  1089. D3DTBLEND_COPY
  1090. {$IFDEF DIRECT3D_VERSION_5},
  1091. D3DTBLEND_ADD
  1092. {$ENDIF} // DIRECT3D_VERSION_5
  1093. );
  1094. {$EXTERNALSYM _D3DTEXTUREBLEND}
  1095. D3DTEXTUREBLEND = _D3DTEXTUREBLEND;
  1096. {$EXTERNALSYM D3DTEXTUREBLEND}
  1097. TD3DTextureBlend = _D3DTEXTUREBLEND;
  1098. {$IFDEF DIRECT3D_VERSION_LESS_8}
  1099. PD3DTextureAddress = ^TD3DTextureAddress;
  1100. _D3DTEXTUREADDRESS = (
  1101. D3DTADDRESS_INVALID_0,
  1102. D3DTADDRESS_WRAP,
  1103. D3DTADDRESS_MIRROR,
  1104. D3DTADDRESS_CLAMP
  1105. {$IFDEF DIRECT3D_VERSION_5},
  1106. D3DTADDRESS_BORDER
  1107. {$ENDIF} // DIRECT3D_VERSION_5
  1108. );
  1109. {$EXTERNALSYM _D3DTEXTUREADDRESS}
  1110. D3DTEXTUREADDRESS = _D3DTEXTUREADDRESS;
  1111. {$EXTERNALSYM D3DTEXTUREADDRESS}
  1112. TD3DTextureAddress = _D3DTEXTUREADDRESS;
  1113. PD3DCull = ^TD3DCull;
  1114. _D3DCULL = (
  1115. D3DCULL_INVALID_0,
  1116. D3DCULL_NONE,
  1117. D3DCULL_CW,
  1118. D3DCULL_CCW);
  1119. {$EXTERNALSYM _D3DCULL}
  1120. D3DCULL = _D3DCULL;
  1121. {$EXTERNALSYM D3DCULL}
  1122. TD3DCull = _D3DCULL;
  1123. PD3DCmpFunc = ^TD3DCmpFunc;
  1124. _D3DCMPFUNC = (
  1125. D3DCMP_INVALID_0,
  1126. D3DCMP_NEVER,
  1127. D3DCMP_LESS,
  1128. D3DCMP_EQUAL,
  1129. D3DCMP_LESSEQUAL,
  1130. D3DCMP_GREATER,
  1131. D3DCMP_NOTEQUAL,
  1132. D3DCMP_GREATEREQUAL,
  1133. D3DCMP_ALWAYS);
  1134. {$EXTERNALSYM _D3DCMPFUNC}
  1135. D3DCMPFUNC = _D3DCMPFUNC;
  1136. {$EXTERNALSYM D3DCMPFUNC}
  1137. TD3DCmpFunc = _D3DCMPFUNC;
  1138. {$IFDEF DIRECT3D_VERSION_6}
  1139. PD3DStencilOp = ^TD3DStencilOp;
  1140. _D3DSTENCILOP = (
  1141. D3DSTENCILOP_INVALID_0,
  1142. D3DSTENCILOP_KEEP,
  1143. D3DSTENCILOP_ZERO,
  1144. D3DSTENCILOP_REPLACE,
  1145. D3DSTENCILOP_INCRSAT,
  1146. D3DSTENCILOP_DECRSAT,
  1147. D3DSTENCILOP_INVERT,
  1148. D3DSTENCILOP_INCR,
  1149. D3DSTENCILOP_DECR);
  1150. {$EXTERNALSYM _D3DSTENCILOP}
  1151. D3DSTENCILOP = _D3DSTENCILOP;
  1152. {$EXTERNALSYM D3DSTENCILOP}
  1153. TD3DStencilOp = _D3DSTENCILOP;
  1154. {$ENDIF} // DIRECT3D_VERSION_6
  1155. PD3DFogMode = ^TD3DFogMode;
  1156. _D3DFOGMODE = (
  1157. D3DFOG_NONE,
  1158. D3DFOG_EXP,
  1159. D3DFOG_EXP2
  1160. {$IFDEF DIRECT3D_VERSION_5},
  1161. D3DFOG_LINEAR
  1162. {$ENDIF} // DIRECT3D_VERSION_5
  1163. );
  1164. {$EXTERNALSYM _D3DFOGMODE}
  1165. D3DFOGMODE = _D3DFOGMODE;
  1166. {$EXTERNALSYM D3DFOGMODE}
  1167. TD3DFogMode = _D3DFOGMODE;
  1168. {$IFDEF DIRECT3D_VERSION_6}
  1169. PD3DZBufferType = ^TD3DZBufferType;
  1170. _D3DZBUFFERTYPE = (
  1171. D3DZB_FALSE,
  1172. D3DZB_TRUE, // Z buffering
  1173. D3DZB_USEW); // W buffering
  1174. {$EXTERNALSYM _D3DZBUFFERTYPE}
  1175. D3DZBUFFERTYPE = _D3DZBUFFERTYPE;
  1176. {$EXTERNALSYM D3DZBUFFERTYPE}
  1177. TD3DZBufferType = _D3DZBUFFERTYPE;
  1178. {$ENDIF} // DIRECT3D_VERSION_6
  1179. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  1180. {$IFDEF DIRECT3D_VERSION_5}
  1181. PD3DAntialiasMode = ^TD3DAntialiasMode;
  1182. _D3DANTIALIASMODE = (
  1183. D3DANTIALIAS_NONE,
  1184. D3DANTIALIAS_SORTDEPENDENT,
  1185. D3DANTIALIAS_SORTINDEPENDENT);
  1186. {$EXTERNALSYM _D3DANTIALIASMODE}
  1187. D3DANTIALIASMODE = _D3DANTIALIASMODE;
  1188. {$EXTERNALSYM D3DANTIALIASMODE}
  1189. TD3DAntialiasMode = _D3DANTIALIASMODE;
  1190. // Vertex types supported by Direct3D
  1191. PD3DVertexType = ^TD3DVertexType;
  1192. _D3DVERTEXTYPE = (
  1193. D3DVT_INVALID_0,
  1194. D3DVT_VERTEX,
  1195. D3DVT_LVERTEX,
  1196. D3DVT_TLVERTEX);
  1197. {$EXTERNALSYM _D3DVERTEXTYPE}
  1198. D3DVERTEXTYPE = _D3DVERTEXTYPE;
  1199. {$EXTERNALSYM D3DVERTEXTYPE}
  1200. TD3DVertexType = _D3DVERTEXTYPE;
  1201. {$IFDEF DIRECT3D_VERSION_LESS_8}
  1202. // Primitives supported by draw-primitive API
  1203. PD3DPrimitiveType = ^TD3DPrimitiveType;
  1204. _D3DPRIMITIVETYPE = (
  1205. D3DPT_INVALID_0,
  1206. D3DPT_POINTLIST,
  1207. D3DPT_LINELIST,
  1208. D3DPT_LINESTRIP,
  1209. D3DPT_TRIANGLELIST,
  1210. D3DPT_TRIANGLESTRIP,
  1211. D3DPT_TRIANGLEFAN);
  1212. {$EXTERNALSYM _D3DPRIMITIVETYPE}
  1213. D3DPRIMITIVETYPE = _D3DPRIMITIVETYPE;
  1214. {$EXTERNALSYM D3DPRIMITIVETYPE}
  1215. TD3DPrimitiveType = _D3DPRIMITIVETYPE;
  1216. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  1217. {$ENDIF} // DIRECT3D_VERSION_5
  1218. (*
  1219. * Amount to add to a state to generate the override for that state.
  1220. *)
  1221. const
  1222. D3DSTATE_OVERRIDE_BIAS = 256;
  1223. {$EXTERNALSYM D3DSTATE_OVERRIDE_BIAS}
  1224. (*
  1225. * A state which sets the override flag for the specified state type.
  1226. *)
  1227. function D3DSTATE_OVERRIDE(StateType: DWORD): DWORD;
  1228. {$EXTERNALSYM D3DSTATE_OVERRIDE}
  1229. {$IFDEF DIRECT3D_VERSION_8}
  1230. //
  1231. // legacy transform state names
  1232. //
  1233. {$ENDIF} // DIRECT3D_VERSION_8
  1234. type
  1235. PD3DTransformStateType = ^TD3DTransformStateType;
  1236. TD3DTransformStateType = DWORD;
  1237. const
  1238. D3DTRANSFORMSTATE_WORLD = TD3DTransformStateType(1);
  1239. {$EXTERNALSYM D3DTRANSFORMSTATE_WORLD}
  1240. D3DTRANSFORMSTATE_VIEW = TD3DTransformStateType(2);
  1241. {$EXTERNALSYM D3DTRANSFORMSTATE_VIEW}
  1242. D3DTRANSFORMSTATE_PROJECTION = TD3DTransformStateType(3);
  1243. {$EXTERNALSYM D3DTRANSFORMSTATE_PROJECTION}
  1244. {$IFDEF DIRECT3D_VERSION_7}
  1245. D3DTRANSFORMSTATE_WORLD1 = TD3DTransformStateType(4); // 2nd matrix to blend
  1246. {$EXTERNALSYM D3DTRANSFORMSTATE_WORLD1}
  1247. D3DTRANSFORMSTATE_WORLD2 = TD3DTransformStateType(5); // 3rd matrix to blend
  1248. {$EXTERNALSYM D3DTRANSFORMSTATE_WORLD2}
  1249. D3DTRANSFORMSTATE_WORLD3 = TD3DTransformStateType(6); // 4th matrix to blend
  1250. {$EXTERNALSYM D3DTRANSFORMSTATE_WORLD3}
  1251. D3DTRANSFORMSTATE_TEXTURE0 = TD3DTransformStateType(16);
  1252. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE0}
  1253. D3DTRANSFORMSTATE_TEXTURE1 = TD3DTransformStateType(17);
  1254. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE1}
  1255. D3DTRANSFORMSTATE_TEXTURE2 = TD3DTransformStateType(18);
  1256. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE2}
  1257. D3DTRANSFORMSTATE_TEXTURE3 = TD3DTransformStateType(19);
  1258. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE3}
  1259. D3DTRANSFORMSTATE_TEXTURE4 = TD3DTransformStateType(20);
  1260. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE4}
  1261. D3DTRANSFORMSTATE_TEXTURE5 = TD3DTransformStateType(21);
  1262. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE5}
  1263. D3DTRANSFORMSTATE_TEXTURE6 = TD3DTransformStateType(22);
  1264. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE6}
  1265. D3DTRANSFORMSTATE_TEXTURE7 = TD3DTransformStateType(23);
  1266. {$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE7}
  1267. {$ENDIF} // DIRECT3D_VERSION_7
  1268. type
  1269. PD3DLightStateType = ^TD3DLightStateType;
  1270. _D3DLIGHTSTATETYPE = (
  1271. D3DLIGHTSTATE_INVALID_0,
  1272. D3DLIGHTSTATE_MATERIAL,
  1273. D3DLIGHTSTATE_AMBIENT,
  1274. D3DLIGHTSTATE_COLORMODEL,
  1275. D3DLIGHTSTATE_FOGMODE,
  1276. D3DLIGHTSTATE_FOGSTART,
  1277. D3DLIGHTSTATE_FOGEND,
  1278. D3DLIGHTSTATE_FOGDENSITY
  1279. {$IFDEF DIRECT3D_VERSION_6},
  1280. D3DLIGHTSTATE_COLORVERTEX
  1281. {$EXTERNALSYM _D3DLIGHTSTATETYPE}
  1282. {$ENDIF} // DIRECT3D_VERSION_6
  1283. );
  1284. D3DLIGHTSTATETYPE = _D3DLIGHTSTATETYPE;
  1285. {$EXTERNALSYM D3DLIGHTSTATETYPE}
  1286. TD3DLightStateType = _D3DLIGHTSTATETYPE;
  1287. type
  1288. PD3DRenderStateType = ^TD3DRenderStateType;
  1289. TD3DRenderStateType = DWORD;
  1290. const
  1291. D3DRENDERSTATE_ANTIALIAS = 2; (* D3DANTIALIASMODE *)
  1292. {$EXTERNALSYM D3DRENDERSTATE_ANTIALIAS}
  1293. D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4; (* TRUE for perspective correction *)
  1294. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREPERSPECTIVE}
  1295. D3DRENDERSTATE_ZENABLE = 7; (* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) *)
  1296. {$EXTERNALSYM D3DRENDERSTATE_ZENABLE}
  1297. D3DRENDERSTATE_FILLMODE = 8; (* D3DFILL_MODE *)
  1298. {$EXTERNALSYM D3DRENDERSTATE_FILLMODE}
  1299. D3DRENDERSTATE_SHADEMODE = 9; (* D3DSHADEMODE *)
  1300. {$EXTERNALSYM D3DRENDERSTATE_SHADEMODE}
  1301. D3DRENDERSTATE_LINEPATTERN = 10; (* D3DLINEPATTERN *)
  1302. {$EXTERNALSYM D3DRENDERSTATE_LINEPATTERN}
  1303. D3DRENDERSTATE_ZWRITEENABLE = 14; (* TRUE to enable z writes *)
  1304. {$EXTERNALSYM D3DRENDERSTATE_ZWRITEENABLE}
  1305. D3DRENDERSTATE_ALPHATESTENABLE = 15; (* TRUE to enable alpha tests *)
  1306. {$EXTERNALSYM D3DRENDERSTATE_ALPHATESTENABLE}
  1307. D3DRENDERSTATE_LASTPIXEL = 16; (* TRUE for last-pixel on lines *)
  1308. {$EXTERNALSYM D3DRENDERSTATE_LASTPIXEL}
  1309. D3DRENDERSTATE_SRCBLEND = 19; (* D3DBLEND *)
  1310. {$EXTERNALSYM D3DRENDERSTATE_SRCBLEND}
  1311. D3DRENDERSTATE_DESTBLEND = 20; (* D3DBLEND *)
  1312. {$EXTERNALSYM D3DRENDERSTATE_DESTBLEND}
  1313. D3DRENDERSTATE_CULLMODE = 22; (* D3DCULL *)
  1314. {$EXTERNALSYM D3DRENDERSTATE_CULLMODE}
  1315. D3DRENDERSTATE_ZFUNC = 23; (* D3DCMPFUNC *)
  1316. {$EXTERNALSYM D3DRENDERSTATE_ZFUNC}
  1317. D3DRENDERSTATE_ALPHAREF = 24; (* D3DFIXED *)
  1318. {$EXTERNALSYM D3DRENDERSTATE_ALPHAREF}
  1319. D3DRENDERSTATE_ALPHAFUNC = 25; (* D3DCMPFUNC *)
  1320. {$EXTERNALSYM D3DRENDERSTATE_ALPHAFUNC}
  1321. D3DRENDERSTATE_DITHERENABLE = 26; (* TRUE to enable dithering *)
  1322. {$EXTERNALSYM D3DRENDERSTATE_DITHERENABLE}
  1323. {$IFDEF DIRECT3D_VERSION_5}
  1324. D3DRENDERSTATE_ALPHABLENDENABLE = 27; (* TRUE to enable alpha blending *)
  1325. {$EXTERNALSYM D3DRENDERSTATE_ALPHABLENDENABLE}
  1326. {$ENDIF} // DIRECT3D_VERSION_5
  1327. D3DRENDERSTATE_FOGENABLE = 28; (* TRUE to enable fog blending *)
  1328. {$EXTERNALSYM D3DRENDERSTATE_FOGENABLE}
  1329. D3DRENDERSTATE_SPECULARENABLE = 29; (* TRUE to enable specular *)
  1330. {$EXTERNALSYM D3DRENDERSTATE_SPECULARENABLE}
  1331. D3DRENDERSTATE_ZVISIBLE = 30; (* TRUE to enable z checking *)
  1332. {$EXTERNALSYM D3DRENDERSTATE_ZVISIBLE}
  1333. D3DRENDERSTATE_STIPPLEDALPHA = 33; (* TRUE to enable stippled alpha (RGB device only) *)
  1334. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEDALPHA}
  1335. D3DRENDERSTATE_FOGCOLOR = 34; (* D3DCOLOR *)
  1336. {$EXTERNALSYM D3DRENDERSTATE_FOGCOLOR}
  1337. D3DRENDERSTATE_FOGTABLEMODE = 35; (* D3DFOGMODE *)
  1338. {$EXTERNALSYM D3DRENDERSTATE_FOGTABLEMODE}
  1339. {$IFDEF DIRECT3D_VERSION_7}
  1340. D3DRENDERSTATE_FOGSTART = 36; (* Fog start (for both vertex and pixel fog) *)
  1341. {$EXTERNALSYM D3DRENDERSTATE_FOGSTART}
  1342. D3DRENDERSTATE_FOGEND = 37; (* Fog end *)
  1343. {$EXTERNALSYM D3DRENDERSTATE_FOGEND}
  1344. D3DRENDERSTATE_FOGDENSITY = 38; (* Fog density *)
  1345. {$EXTERNALSYM D3DRENDERSTATE_FOGDENSITY}
  1346. {$ENDIF} // DIRECT3D_VERSION_7
  1347. {$IFDEF DIRECT3D_VERSION_5}
  1348. D3DRENDERSTATE_EDGEANTIALIAS = 40; (* TRUE to enable edge antialiasing *)
  1349. {$EXTERNALSYM D3DRENDERSTATE_EDGEANTIALIAS}
  1350. D3DRENDERSTATE_COLORKEYENABLE = 41; (* TRUE to enable source colorkeyed textures *)
  1351. {$EXTERNALSYM D3DRENDERSTATE_COLORKEYENABLE}
  1352. D3DRENDERSTATE_ZBIAS = 47; (* LONG Z bias *)
  1353. {$EXTERNALSYM D3DRENDERSTATE_ZBIAS}
  1354. D3DRENDERSTATE_RANGEFOGENABLE = 48; (* Enables range-based fog *)
  1355. {$EXTERNALSYM D3DRENDERSTATE_RANGEFOGENABLE}
  1356. {$ENDIF} // DIRECT3D_VERSION_5
  1357. {$IFDEF DIRECT3D_VERSION_6}
  1358. D3DRENDERSTATE_STENCILENABLE = 52; (* BOOL enable/disable stenciling *)
  1359. {$EXTERNALSYM D3DRENDERSTATE_STENCILENABLE}
  1360. D3DRENDERSTATE_STENCILFAIL = 53; (* D3DSTENCILOP to do if stencil test fails *)
  1361. {$EXTERNALSYM D3DRENDERSTATE_STENCILFAIL}
  1362. D3DRENDERSTATE_STENCILZFAIL = 54; (* D3DSTENCILOP to do if stencil test passes and Z test fails *)
  1363. {$EXTERNALSYM D3DRENDERSTATE_STENCILZFAIL}
  1364. D3DRENDERSTATE_STENCILPASS = 55; (* D3DSTENCILOP to do if both stencil and Z tests pass *)
  1365. {$EXTERNALSYM D3DRENDERSTATE_STENCILPASS}
  1366. D3DRENDERSTATE_STENCILFUNC = 56; (* D3DCMPFUNC fn. Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true *)
  1367. {$EXTERNALSYM D3DRENDERSTATE_STENCILFUNC}
  1368. D3DRENDERSTATE_STENCILREF = 57; (* Reference value used in stencil test *)
  1369. {$EXTERNALSYM D3DRENDERSTATE_STENCILREF}
  1370. D3DRENDERSTATE_STENCILMASK = 58; (* Mask value used in stencil test *)
  1371. {$EXTERNALSYM D3DRENDERSTATE_STENCILMASK}
  1372. D3DRENDERSTATE_STENCILWRITEMASK = 59; (* Write mask applied to values written to stencil buffer *)
  1373. {$EXTERNALSYM D3DRENDERSTATE_STENCILWRITEMASK}
  1374. D3DRENDERSTATE_TEXTUREFACTOR = 60; (* D3DCOLOR used for multi-texture blend *)
  1375. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREFACTOR}
  1376. {$ENDIF} // DIRECT3D_VERSION_6
  1377. {$IFDEF DIRECT3D_VERSION_6}
  1378. (*
  1379. * 128 values [128; 255] are reserved for texture coordinate wrap flags.
  1380. * These are constructed with the D3DWRAP_U and D3DWRAP_V macros. Using
  1381. * a flags word preserves forward compatibility with texture coordinates
  1382. * that are >2D.
  1383. *)
  1384. D3DRENDERSTATE_WRAP0 = 128; (* wrap for 1st texture coord. set *)
  1385. {$EXTERNALSYM D3DRENDERSTATE_WRAP0}
  1386. D3DRENDERSTATE_WRAP1 = 129; (* wrap for 2nd texture coord. set *)
  1387. {$EXTERNALSYM D3DRENDERSTATE_WRAP1}
  1388. D3DRENDERSTATE_WRAP2 = 130; (* wrap for 3rd texture coord. set *)
  1389. {$EXTERNALSYM D3DRENDERSTATE_WRAP2}
  1390. D3DRENDERSTATE_WRAP3 = 131; (* wrap for 4th texture coord. set *)
  1391. {$EXTERNALSYM D3DRENDERSTATE_WRAP3}
  1392. D3DRENDERSTATE_WRAP4 = 132; (* wrap for 5th texture coord. set *)
  1393. {$EXTERNALSYM D3DRENDERSTATE_WRAP4}
  1394. D3DRENDERSTATE_WRAP5 = 133; (* wrap for 6th texture coord. set *)
  1395. {$EXTERNALSYM D3DRENDERSTATE_WRAP5}
  1396. D3DRENDERSTATE_WRAP6 = 134; (* wrap for 7th texture coord. set *)
  1397. {$EXTERNALSYM D3DRENDERSTATE_WRAP6}
  1398. D3DRENDERSTATE_WRAP7 = 135; (* wrap for 8th texture coord. set *)
  1399. {$EXTERNALSYM D3DRENDERSTATE_WRAP7}
  1400. {$ENDIF} // DIRECT3D_VERSION_6
  1401. {$IFDEF DIRECT3D_VERSION_7}
  1402. D3DRENDERSTATE_CLIPPING = 136;
  1403. {$EXTERNALSYM D3DRENDERSTATE_CLIPPING}
  1404. D3DRENDERSTATE_LIGHTING = 137;
  1405. {$EXTERNALSYM D3DRENDERSTATE_LIGHTING}
  1406. D3DRENDERSTATE_EXTENTS = 138;
  1407. {$EXTERNALSYM D3DRENDERSTATE_EXTENTS}
  1408. D3DRENDERSTATE_AMBIENT = 139;
  1409. {$EXTERNALSYM D3DRENDERSTATE_AMBIENT}
  1410. D3DRENDERSTATE_FOGVERTEXMODE = 140;
  1411. {$EXTERNALSYM D3DRENDERSTATE_FOGVERTEXMODE}
  1412. D3DRENDERSTATE_COLORVERTEX = 141;
  1413. {$EXTERNALSYM D3DRENDERSTATE_COLORVERTEX}
  1414. D3DRENDERSTATE_LOCALVIEWER = 142;
  1415. {$EXTERNALSYM D3DRENDERSTATE_LOCALVIEWER}
  1416. D3DRENDERSTATE_NORMALIZENORMALS = 143;
  1417. {$EXTERNALSYM D3DRENDERSTATE_NORMALIZENORMALS}
  1418. D3DRENDERSTATE_COLORKEYBLENDENABLE = 144;
  1419. {$EXTERNALSYM D3DRENDERSTATE_COLORKEYBLENDENABLE}
  1420. D3DRENDERSTATE_DIFFUSEMATERIALSOURCE = 145;
  1421. {$EXTERNALSYM D3DRENDERSTATE_DIFFUSEMATERIALSOURCE}
  1422. D3DRENDERSTATE_SPECULARMATERIALSOURCE = 146;
  1423. {$EXTERNALSYM D3DRENDERSTATE_SPECULARMATERIALSOURCE}
  1424. D3DRENDERSTATE_AMBIENTMATERIALSOURCE = 147;
  1425. {$EXTERNALSYM D3DRENDERSTATE_AMBIENTMATERIALSOURCE}
  1426. D3DRENDERSTATE_EMISSIVEMATERIALSOURCE = 148;
  1427. {$EXTERNALSYM D3DRENDERSTATE_EMISSIVEMATERIALSOURCE}
  1428. D3DRENDERSTATE_VERTEXBLEND = 151;
  1429. {$EXTERNALSYM D3DRENDERSTATE_VERTEXBLEND}
  1430. D3DRENDERSTATE_CLIPPLANEENABLE = 152;
  1431. {$EXTERNALSYM D3DRENDERSTATE_CLIPPLANEENABLE}
  1432. {$ENDIF} // DIRECT3D_VERSION_7
  1433. //
  1434. // retired renderstates - not supported for DX7 interfaces
  1435. //
  1436. D3DRENDERSTATE_TEXTUREHANDLE = 1; (* Texture handle for legacy interfaces (Texture;Texture2) *)
  1437. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREHANDLE}
  1438. D3DRENDERSTATE_TEXTUREADDRESS = 3; (* D3DTEXTUREADDRESS *)
  1439. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREADDRESS}
  1440. D3DRENDERSTATE_WRAPU = 5; (* TRUE for wrapping in u *)
  1441. {$EXTERNALSYM D3DRENDERSTATE_WRAPU}
  1442. D3DRENDERSTATE_WRAPV = 6; (* TRUE for wrapping in v *)
  1443. {$EXTERNALSYM D3DRENDERSTATE_WRAPV}
  1444. D3DRENDERSTATE_MONOENABLE = 11; (* TRUE to enable mono rasterization *)
  1445. {$EXTERNALSYM D3DRENDERSTATE_MONOENABLE}
  1446. D3DRENDERSTATE_ROP2 = 12; (* ROP2 *)
  1447. {$EXTERNALSYM D3DRENDERSTATE_ROP2}
  1448. D3DRENDERSTATE_PLANEMASK = 13; (* DWORD physical plane mask *)
  1449. {$EXTERNALSYM D3DRENDERSTATE_PLANEMASK}
  1450. D3DRENDERSTATE_TEXTUREMAG = 17; (* D3DTEXTUREFILTER *)
  1451. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREMAG}
  1452. D3DRENDERSTATE_TEXTUREMIN = 18; (* D3DTEXTUREFILTER *)
  1453. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREMIN}
  1454. D3DRENDERSTATE_TEXTUREMAPBLEND = 21; (* D3DTEXTUREBLEND *)
  1455. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREMAPBLEND}
  1456. D3DRENDERSTATE_SUBPIXEL = 31; (* TRUE to enable subpixel correction *)
  1457. {$EXTERNALSYM D3DRENDERSTATE_SUBPIXEL}
  1458. D3DRENDERSTATE_SUBPIXELX = 32; (* TRUE to enable correction in X only *)
  1459. {$EXTERNALSYM D3DRENDERSTATE_SUBPIXELX}
  1460. D3DRENDERSTATE_STIPPLEENABLE = 39; (* TRUE to enable stippling *)
  1461. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEENABLE}
  1462. {$IFDEF DIRECT3D_VERSION_5}
  1463. D3DRENDERSTATE_BORDERCOLOR = 43; (* Border color for texturing w/border *)
  1464. {$EXTERNALSYM D3DRENDERSTATE_BORDERCOLOR}
  1465. D3DRENDERSTATE_TEXTUREADDRESSU = 44; (* Texture addressing mode for U coordinate *)
  1466. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREADDRESSU}
  1467. D3DRENDERSTATE_TEXTUREADDRESSV = 45; (* Texture addressing mode for V coordinate *)
  1468. {$EXTERNALSYM D3DRENDERSTATE_TEXTUREADDRESSV}
  1469. D3DRENDERSTATE_MIPMAPLODBIAS = 46; (* D3DVALUE Mipmap LOD bias *)
  1470. {$EXTERNALSYM D3DRENDERSTATE_MIPMAPLODBIAS}
  1471. D3DRENDERSTATE_ANISOTROPY = 49; (* Max. anisotropy. 1 = no anisotropy *)
  1472. {$EXTERNALSYM D3DRENDERSTATE_ANISOTROPY}
  1473. {$ENDIF} // DIRECT3D_VERSION_5
  1474. D3DRENDERSTATE_FLUSHBATCH = 50; (* Explicit flush for DP batching (DX5 Only) *)
  1475. {$EXTERNALSYM D3DRENDERSTATE_FLUSHBATCH}
  1476. {$IFDEF DIRECT3D_VERSION_6}
  1477. D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT=51; (* BOOL enable sort-independent transparency *)
  1478. {$EXTERNALSYM D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT}
  1479. {$ENDIF} // DIRECT3D_VERSION_6
  1480. D3DRENDERSTATE_STIPPLEPATTERN00 = 64; (* Stipple pattern 01... *)
  1481. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN00}
  1482. D3DRENDERSTATE_STIPPLEPATTERN01 = 65;
  1483. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN01}
  1484. D3DRENDERSTATE_STIPPLEPATTERN02 = 66;
  1485. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN02}
  1486. D3DRENDERSTATE_STIPPLEPATTERN03 = 67;
  1487. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN03}
  1488. D3DRENDERSTATE_STIPPLEPATTERN04 = 68;
  1489. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN04}
  1490. D3DRENDERSTATE_STIPPLEPATTERN05 = 69;
  1491. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN05}
  1492. D3DRENDERSTATE_STIPPLEPATTERN06 = 70;
  1493. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN06}
  1494. D3DRENDERSTATE_STIPPLEPATTERN07 = 71;
  1495. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN07}
  1496. D3DRENDERSTATE_STIPPLEPATTERN08 = 72;
  1497. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN08}
  1498. D3DRENDERSTATE_STIPPLEPATTERN09 = 73;
  1499. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN09}
  1500. D3DRENDERSTATE_STIPPLEPATTERN10 = 74;
  1501. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN10}
  1502. D3DRENDERSTATE_STIPPLEPATTERN11 = 75;
  1503. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN11}
  1504. D3DRENDERSTATE_STIPPLEPATTERN12 = 76;
  1505. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN12}
  1506. D3DRENDERSTATE_STIPPLEPATTERN13 = 77;
  1507. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN13}
  1508. D3DRENDERSTATE_STIPPLEPATTERN14 = 78;
  1509. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN14}
  1510. D3DRENDERSTATE_STIPPLEPATTERN15 = 79;
  1511. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN15}
  1512. D3DRENDERSTATE_STIPPLEPATTERN16 = 80;
  1513. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN16}
  1514. D3DRENDERSTATE_STIPPLEPATTERN17 = 81;
  1515. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN17}
  1516. D3DRENDERSTATE_STIPPLEPATTERN18 = 82;
  1517. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN18}
  1518. D3DRENDERSTATE_STIPPLEPATTERN19 = 83;
  1519. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN19}
  1520. D3DRENDERSTATE_STIPPLEPATTERN20 = 84;
  1521. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN20}
  1522. D3DRENDERSTATE_STIPPLEPATTERN21 = 85;
  1523. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN21}
  1524. D3DRENDERSTATE_STIPPLEPATTERN22 = 86;
  1525. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN22}
  1526. D3DRENDERSTATE_STIPPLEPATTERN23 = 87;
  1527. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN23}
  1528. D3DRENDERSTATE_STIPPLEPATTERN24 = 88;
  1529. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN24}
  1530. D3DRENDERSTATE_STIPPLEPATTERN25 = 89;
  1531. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN25}
  1532. D3DRENDERSTATE_STIPPLEPATTERN26 = 90;
  1533. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN26}
  1534. D3DRENDERSTATE_STIPPLEPATTERN27 = 91;
  1535. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN27}
  1536. D3DRENDERSTATE_STIPPLEPATTERN28 = 92;
  1537. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN28}
  1538. D3DRENDERSTATE_STIPPLEPATTERN29 = 93;
  1539. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN29}
  1540. D3DRENDERSTATE_STIPPLEPATTERN30 = 94;
  1541. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN30}
  1542. D3DRENDERSTATE_STIPPLEPATTERN31 = 95;
  1543. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN31}
  1544. //
  1545. // retired renderstate names - the values are still used under new naming conventions
  1546. //
  1547. D3DRENDERSTATE_FOGTABLESTART = 36; (* Fog table start *)
  1548. {$EXTERNALSYM D3DRENDERSTATE_FOGTABLESTART}
  1549. D3DRENDERSTATE_FOGTABLEEND = 37; (* Fog table end *)
  1550. {$EXTERNALSYM D3DRENDERSTATE_FOGTABLEEND}
  1551. D3DRENDERSTATE_FOGTABLEDENSITY = 38; (* Fog table density *)
  1552. {$EXTERNALSYM D3DRENDERSTATE_FOGTABLEDENSITY}
  1553. {$IFDEF DIRECT3D_VERSION_LESS_8}
  1554. type
  1555. // Values for material source
  1556. PD3DMateralColorSource = ^TD3DMateralColorSource;
  1557. _D3DMATERIALCOLORSOURCE = (
  1558. D3DMCS_MATERIAL, // Color from material is used
  1559. D3DMCS_COLOR1, // Diffuse vertex color is used
  1560. D3DMCS_COLOR2 // Specular vertex color is used
  1561. );
  1562. {$EXTERNALSYM _D3DMATERIALCOLORSOURCE}
  1563. D3DMATERIALCOLORSOURCE = _D3DMATERIALCOLORSOURCE;
  1564. {$EXTERNALSYM D3DMATERIALCOLORSOURCE}
  1565. TD3DMateralColorSource = _D3DMATERIALCOLORSOURCE;
  1566. {$IFDEF DIRECT3D_VERSION_5}
  1567. const
  1568. // For back-compatibility with legacy compilations
  1569. D3DRENDERSTATE_BLENDENABLE = D3DRENDERSTATE_ALPHABLENDENABLE;
  1570. {$EXTERNALSYM D3DRENDERSTATE_BLENDENABLE}
  1571. {$ENDIF} // DIRECT3D_VERSION_5
  1572. {$IFDEF DIRECT3D_VERSION_6}
  1573. // Bias to apply to the texture coordinate set to apply a wrap to.
  1574. D3DRENDERSTATE_WRAPBIAS = 128;
  1575. {$EXTERNALSYM D3DRENDERSTATE_WRAPBIAS}
  1576. (* Flags to construct the WRAP render states *)
  1577. D3DWRAP_U = $00000001;
  1578. {$EXTERNALSYM D3DWRAP_U}
  1579. D3DWRAP_V = $00000002;
  1580. {$EXTERNALSYM D3DWRAP_V}
  1581. {$ENDIF} // DIRECT3D_VERSION_6
  1582. {$IFDEF DIRECT3D_VERSION_7}
  1583. (* Flags to construct the WRAP render states for 1D thru 4D texture coordinates *)
  1584. D3DWRAPCOORD_0 = $00000001; // same as D3DWRAP_U
  1585. {$EXTERNALSYM D3DWRAPCOORD_0}
  1586. D3DWRAPCOORD_1 = $00000002; // same as D3DWRAP_V
  1587. {$EXTERNALSYM D3DWRAPCOORD_1}
  1588. D3DWRAPCOORD_2 = $00000004;
  1589. {$EXTERNALSYM D3DWRAPCOORD_2}
  1590. D3DWRAPCOORD_3 = $00000008;
  1591. {$EXTERNALSYM D3DWRAPCOORD_3}
  1592. {$ENDIF} // DIRECT3D_VERSION_7
  1593. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  1594. function D3DRENDERSTATE_STIPPLEPATTERN(y: Integer): TD3DRenderStateType;
  1595. {$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN}
  1596. type
  1597. PD3DState = ^TD3DState;
  1598. _D3DSTATE = packed record
  1599. case Integer of
  1600. {$IFDEF DIRECT3D_VERSION_LESS_8}
  1601. 0: (
  1602. dtstTransformStateType: TD3DTransformStateType;
  1603. );
  1604. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  1605. 1: (
  1606. dlstLightStateType: TD3DLightStateType;
  1607. dwArg: array [0..0] of DWORD;
  1608. );
  1609. 2: (
  1610. drstRenderStateType: TD3DRenderStateType;
  1611. dvArg: array [0..0] of TD3DValue;
  1612. );
  1613. end;
  1614. {$EXTERNALSYM _D3DSTATE}
  1615. D3DSTATE = _D3DSTATE;
  1616. {$EXTERNALSYM D3DSTATE}
  1617. TD3DState = _D3DSTATE;
  1618. (*
  1619. * Operation used to load matrices
  1620. * hDstMat = hSrcMat
  1621. *)
  1622. PD3DMatrixLoad = ^TD3DMatrixLoad;
  1623. _D3DMATRIXLOAD = packed record
  1624. hDestMatrix: TD3DMatrixHandle; (* Destination matrix *)
  1625. hSrcMatrix: TD3DMatrixHandle; (* Source matrix *)
  1626. end;
  1627. {$EXTERNALSYM _D3DMATRIXLOAD}
  1628. D3DMATRIXLOAD = _D3DMATRIXLOAD;
  1629. {$EXTERNALSYM D3DMATRIXLOAD}
  1630. TD3DMatrixLoad = _D3DMATRIXLOAD;
  1631. (*
  1632. * Operation used to multiply matrices
  1633. * hDstMat = hSrcMat1 * hSrcMat2
  1634. *)
  1635. PD3DMatrixMultiply = ^TD3DMatrixMultiply;
  1636. _D3DMATRIXMULTIPLY = packed record
  1637. hDestMatrix: TD3DMatrixHandle; (* Destination matrix *)
  1638. hSrcMatrix1: TD3DMatrixHandle; (* First source matrix *)
  1639. hSrcMatrix2: TD3DMatrixHandle; (* Second source matrix *)
  1640. end;
  1641. {$EXTERNALSYM _D3DMATRIXMULTIPLY}
  1642. D3DMATRIXMULTIPLY = _D3DMATRIXMULTIPLY;
  1643. {$EXTERNALSYM D3DMATRIXMULTIPLY}
  1644. TD3DMatrixMultiply = _D3DMATRIXMULTIPLY;
  1645. (*
  1646. * Operation used to transform and light vertices.
  1647. *)
  1648. PD3DProcessVertices = ^TD3DProcessVertices;
  1649. _D3DPROCESSVERTICES = packed record
  1650. dwFlags: DWORD; (* Do we transform or light or just copy? *)
  1651. wStart: WORD; (* Index to first vertex in source *)
  1652. wDest: WORD; (* Index to first vertex in local buffer *)
  1653. dwCount: DWORD; (* Number of vertices to be processed *)
  1654. dwReserved: DWORD; (* Must be zero *)
  1655. end;
  1656. {$EXTERNALSYM _D3DPROCESSVERTICES}
  1657. D3DPROCESSVERTICES = _D3DPROCESSVERTICES;
  1658. {$EXTERNALSYM D3DPROCESSVERTICES}
  1659. TD3DProcessVertices = _D3DPROCESSVERTICES;
  1660. const
  1661. D3DPROCESSVERTICES_TRANSFORMLIGHT = $00000000;
  1662. {$EXTERNALSYM D3DPROCESSVERTICES_TRANSFORMLIGHT}
  1663. D3DPROCESSVERTICES_TRANSFORM = $00000001;
  1664. {$EXTERNALSYM D3DPROCESSVERTICES_TRANSFORM}
  1665. D3DPROCESSVERTICES_COPY = $00000002;
  1666. {$EXTERNALSYM D3DPROCESSVERTICES_COPY}
  1667. D3DPROCESSVERTICES_OPMASK = $00000007;
  1668. {$EXTERNALSYM D3DPROCESSVERTICES_OPMASK}
  1669. D3DPROCESSVERTICES_UPDATEEXTENTS = $00000008;
  1670. {$EXTERNALSYM D3DPROCESSVERTICES_UPDATEEXTENTS}
  1671. D3DPROCESSVERTICES_NOCOLOR = $00000010;
  1672. {$EXTERNALSYM D3DPROCESSVERTICES_NOCOLOR}
  1673. {$IFDEF DIRECT3D_VERSION_6}
  1674. {$IFDEF DIRECT3D_VERSION_LESS_8}
  1675. (*
  1676. * State enumerants for per-stage texture processing.
  1677. *)
  1678. type
  1679. PD3DTextureStageStateType = ^TD3DTextureStageStateType;
  1680. TD3DTextureStageStateType = DWORD;
  1681. const
  1682. D3DTSS_COLOROP = 1; (* D3DTEXTUREOP - per-stage blending controls for color channels *)
  1683. {$EXTERNALSYM D3DTSS_COLOROP}
  1684. D3DTSS_COLORARG1 = 2; (* D3DTA_* (texture arg) *)
  1685. {$EXTERNALSYM D3DTSS_COLORARG1}
  1686. D3DTSS_COLORARG2 = 3; (* D3DTA_* (texture arg) *)
  1687. {$EXTERNALSYM D3DTSS_COLORARG2}
  1688. D3DTSS_ALPHAOP = 4; (* D3DTEXTUREOP - per-stage blending controls for alpha channel *)
  1689. {$EXTERNALSYM D3DTSS_ALPHAOP}
  1690. D3DTSS_ALPHAARG1 = 5; (* D3DTA_* (texture arg) *)
  1691. {$EXTERNALSYM D3DTSS_ALPHAARG1}
  1692. D3DTSS_ALPHAARG2 = 6; (* D3DTA_* (texture arg) *)
  1693. {$EXTERNALSYM D3DTSS_ALPHAARG2}
  1694. D3DTSS_BUMPENVMAT00 = 7; (* D3DVALUE (bump mapping matrix) *)
  1695. {$EXTERNALSYM D3DTSS_BUMPENVMAT00}
  1696. D3DTSS_BUMPENVMAT01 = 8; (* D3DVALUE (bump mapping matrix) *)
  1697. {$EXTERNALSYM D3DTSS_BUMPENVMAT01}
  1698. D3DTSS_BUMPENVMAT10 = 9; (* D3DVALUE (bump mapping matrix) *)
  1699. {$EXTERNALSYM D3DTSS_BUMPENVMAT10}
  1700. D3DTSS_BUMPENVMAT11 = 10; (* D3DVALUE (bump mapping matrix) *)
  1701. {$EXTERNALSYM D3DTSS_BUMPENVMAT11}
  1702. D3DTSS_TEXCOORDINDEX = 11; (* identifies which set of texture coordinates index this texture *)
  1703. {$EXTERNALSYM D3DTSS_TEXCOORDINDEX}
  1704. D3DTSS_ADDRESS = 12; (* D3DTEXTUREADDRESS for both coordinates *)
  1705. {$EXTERNALSYM D3DTSS_ADDRESS}
  1706. D3DTSS_ADDRESSU = 13; (* D3DTEXTUREADDRESS for U coordinate *)
  1707. {$EXTERNALSYM D3DTSS_ADDRESSU}
  1708. D3DTSS_ADDRESSV = 14; (* D3DTEXTUREADDRESS for V coordinate *)
  1709. {$EXTERNALSYM D3DTSS_ADDRESSV}
  1710. D3DTSS_BORDERCOLOR = 15; (* D3DCOLOR *)
  1711. {$EXTERNALSYM D3DTSS_BORDERCOLOR}
  1712. D3DTSS_MAGFILTER = 16; (* D3DTEXTUREMAGFILTER filter to use for magnification *)
  1713. {$EXTERNALSYM D3DTSS_MAGFILTER}
  1714. D3DTSS_MINFILTER = 17; (* D3DTEXTUREMINFILTER filter to use for minification *)
  1715. {$EXTERNALSYM D3DTSS_MINFILTER}
  1716. D3DTSS_MIPFILTER = 18; (* D3DTEXTUREMIPFILTER filter to use between mipmaps during minification *)
  1717. {$EXTERNALSYM D3DTSS_MIPFILTER}
  1718. D3DTSS_MIPMAPLODBIAS = 19; (* D3DVALUE Mipmap LOD bias *)
  1719. {$EXTERNALSYM D3DTSS_MIPMAPLODBIAS}
  1720. D3DTSS_MAXMIPLEVEL = 20; (* DWORD 0..(n-1) LOD index of largest map to use (0 == largest) *)
  1721. {$EXTERNALSYM D3DTSS_MAXMIPLEVEL}
  1722. D3DTSS_MAXANISOTROPY = 21; (* DWORD maximum anisotropy *)
  1723. {$EXTERNALSYM D3DTSS_MAXANISOTROPY}
  1724. D3DTSS_BUMPENVLSCALE = 22; (* D3DVALUE scale for bump map luminance *)
  1725. {$EXTERNALSYM D3DTSS_BUMPENVLSCALE}
  1726. D3DTSS_BUMPENVLOFFSET = 23; (* D3DVALUE offset for bump map luminance *)
  1727. {$EXTERNALSYM D3DTSS_BUMPENVLOFFSET}
  1728. {$IFDEF DIRECT3D_VERSION_7}
  1729. D3DTSS_TEXTURETRANSFORMFLAGS = 24; (* D3DTEXTURETRANSFORMFLAGS controls texture transform *)
  1730. {$EXTERNALSYM D3DTSS_TEXTURETRANSFORMFLAGS}
  1731. {$ENDIF}
  1732. {$IFDEF DIRECT3D_VERSION_7}
  1733. // Values, used with D3DTSS_TEXCOORDINDEX, to specify that the vertex data(position
  1734. // and normal in the camera space) should be taken as texture coordinates
  1735. // Low 16 bits are used to specify texture coordinate index, to take the WRAP mode from
  1736. //
  1737. D3DTSS_TCI_PASSTHRU = $00000000;
  1738. {$EXTERNALSYM D3DTSS_TCI_PASSTHRU}
  1739. D3DTSS_TCI_CAMERASPACENORMAL = $00010000;
  1740. {$EXTERNALSYM D3DTSS_TCI_CAMERASPACENORMAL}
  1741. D3DTSS_TCI_CAMERASPACEPOSITION = $00020000;
  1742. {$EXTERNALSYM D3DTSS_TCI_CAMERASPACEPOSITION}
  1743. D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR = $00030000;
  1744. {$EXTERNALSYM D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR}
  1745. {$ENDIF}
  1746. type
  1747. (*
  1748. * Enumerations for COLOROP and ALPHAOP texture blending operations set in
  1749. * texture processing stage controls in D3DRENDERSTATE.
  1750. *)
  1751. PD3DTextureOp = ^TD3DTextureOp;
  1752. _D3DTEXTUREOP = (
  1753. D3DTOP_INVALID_0,
  1754. // Control
  1755. D3DTOP_DISABLE , // disables stage
  1756. D3DTOP_SELECTARG1, // the default
  1757. D3DTOP_SELECTARG2,
  1758. // Modulate
  1759. D3DTOP_MODULATE , // multiply args together
  1760. D3DTOP_MODULATE2X, // multiply and 1 bit
  1761. D3DTOP_MODULATE4X, // multiply and 2 bits
  1762. // Add
  1763. D3DTOP_ADD , // add arguments together
  1764. D3DTOP_ADDSIGNED , // add with -0.5 bias
  1765. D3DTOP_ADDSIGNED2X, // as above but left 1 bit
  1766. D3DTOP_SUBTRACT , // Arg1 - Arg2, with no saturation
  1767. D3DTOP_ADDSMOOTH , // add 2 args, subtract product
  1768. // Arg1 + Arg2 - Arg1*Arg2
  1769. // = Arg1 + (1-Arg1)*Arg2
  1770. // Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
  1771. D3DTOP_BLENDDIFFUSEALPHA , // iterated alpha
  1772. D3DTOP_BLENDTEXTUREALPHA , // texture alpha
  1773. D3DTOP_BLENDFACTORALPHA , // alpha from D3DRENDERSTATE_TEXTUREFACTOR
  1774. // Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
  1775. D3DTOP_BLENDTEXTUREALPHAPM, // texture alpha
  1776. D3DTOP_BLENDCURRENTALPHA , // by alpha of current color
  1777. // Specular mapping
  1778. D3DTOP_PREMODULATE , // modulate with next texture before use
  1779. D3DTOP_MODULATEALPHA_ADDCOLOR, // Arg1.RGB + Arg1.A*Arg2.RGB
  1780. // COLOROP only
  1781. D3DTOP_MODULATECOLOR_ADDALPHA, // Arg1.RGB*Arg2.RGB + Arg1.A
  1782. // COLOROP only
  1783. D3DTOP_MODULATEINVALPHA_ADDCOLOR, // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
  1784. // COLOROP only
  1785. D3DTOP_MODULATEINVCOLOR_ADDALPHA, // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
  1786. // COLOROP only
  1787. // Bump mapping
  1788. D3DTOP_BUMPENVMAP , // per pixel env map perturbation
  1789. D3DTOP_BUMPENVMAPLUMINANCE, // with luminance channel
  1790. // This can do either diffuse or specular bump mapping with correct input.
  1791. // Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B)
  1792. // where each component has been scaled and offset to make it signed.
  1793. // The result is replicated into all four (including alpha) channels.
  1794. // This is a valid COLOROP only.
  1795. D3DTOP_DOTPRODUCT3
  1796. );
  1797. {$EXTERNALSYM _D3DTEXTUREOP}
  1798. D3DTEXTUREOP = _D3DTEXTUREOP;
  1799. {$EXTERNALSYM D3DTEXTUREOP}
  1800. TD3DTextureOp = _D3DTEXTUREOP;
  1801. (*
  1802. * Values for COLORARG1,2 and ALPHAARG1,2 texture blending operations
  1803. * set in texture processing stage controls in D3DRENDERSTATE.
  1804. *)
  1805. const
  1806. D3DTA_SELECTMASK = $0000000f; // mask for arg selector
  1807. {$EXTERNALSYM D3DTA_SELECTMASK}
  1808. D3DTA_DIFFUSE = $00000000; // select diffuse color
  1809. {$EXTERNALSYM D3DTA_DIFFUSE}
  1810. D3DTA_CURRENT = $00000001; // select result of previous stage
  1811. {$EXTERNALSYM D3DTA_CURRENT}
  1812. D3DTA_TEXTURE = $00000002; // select texture color
  1813. {$EXTERNALSYM D3DTA_TEXTURE}
  1814. D3DTA_TFACTOR = $00000003; // select RENDERSTATE_TEXTUREFACTOR
  1815. {$EXTERNALSYM D3DTA_TFACTOR}
  1816. {$IFDEF DIRECT3D_VERSION_7}
  1817. D3DTA_SPECULAR = $00000004; // select specular color
  1818. {$EXTERNALSYM D3DTA_SPECULAR}
  1819. {$ENDIF}
  1820. D3DTA_COMPLEMENT = $00000010; // take 1.0 - x
  1821. {$EXTERNALSYM D3DTA_COMPLEMENT}
  1822. D3DTA_ALPHAREPLICATE = $00000020; // replicate alpha to color components
  1823. {$EXTERNALSYM D3DTA_ALPHAREPLICATE}
  1824. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  1825. (*
  1826. * IDirect3DTexture2 State Filter Types
  1827. *)
  1828. type
  1829. PD3DTextureMagFilter = ^TD3DTextureMagFilter;
  1830. _D3DTEXTUREMAGFILTER = (
  1831. D3DTFG_INVALID_0,
  1832. D3DTFG_POINT , // nearest
  1833. D3DTFG_LINEAR , // linear interpolation
  1834. D3DTFG_FLATCUBIC , // cubic
  1835. D3DTFG_GAUSSIANCUBIC, // different cubic kernel
  1836. D3DTFG_ANISOTROPIC
  1837. );
  1838. {$EXTERNALSYM _D3DTEXTUREMAGFILTER}
  1839. D3DTEXTUREMAGFILTER = _D3DTEXTUREMAGFILTER;
  1840. {$EXTERNALSYM D3DTEXTUREMAGFILTER}
  1841. TD3DTextureMagFilter = _D3DTEXTUREMAGFILTER;
  1842. PD3DTextureMinFilter = ^TD3DTextureMinFilter;
  1843. _D3DTEXTUREMINFILTER = (
  1844. D3DTFN_INVALID_0,
  1845. D3DTFN_POINT , // nearest
  1846. D3DTFN_LINEAR , // linear interpolation
  1847. D3DTFN_ANISOTROPIC
  1848. );
  1849. {$EXTERNALSYM _D3DTEXTUREMINFILTER}
  1850. D3DTEXTUREMINFILTER = _D3DTEXTUREMINFILTER;
  1851. {$EXTERNALSYM D3DTEXTUREMINFILTER}
  1852. TD3DTextureMinFilter = _D3DTEXTUREMINFILTER;
  1853. PD3DTextureMipFilter = ^TD3DTextureMipFilter;
  1854. _D3DTEXTUREMIPFILTER = (
  1855. D3DTFP_INVALID_0,
  1856. D3DTFP_NONE , // mipmapping disabled (use MAG filter)
  1857. D3DTFP_POINT , // nearest
  1858. D3DTFP_LINEAR // linear interpolation
  1859. );
  1860. {$EXTERNALSYM _D3DTEXTUREMIPFILTER}
  1861. D3DTEXTUREMIPFILTER = _D3DTEXTUREMIPFILTER;
  1862. {$EXTERNALSYM D3DTEXTUREMIPFILTER}
  1863. TD3DTextureMipFilter = _D3DTEXTUREMIPFILTER;
  1864. {$ENDIF} // DIRECT3D_VERSION_6
  1865. (*
  1866. * Triangle flags
  1867. *)
  1868. (*
  1869. * Tri strip and fan flags.
  1870. * START loads all three vertices
  1871. * EVEN and ODD load just v3 with even or odd culling
  1872. * START_FLAT contains a count from 0 to 29 that allows the
  1873. * whole strip or fan to be culled in one hit.
  1874. * e.g. for a quad len = 1
  1875. *)
  1876. const
  1877. D3DTRIFLAG_START = $00000000;
  1878. {$EXTERNALSYM D3DTRIFLAG_START}
  1879. // #define D3DTRIFLAG_STARTFLAT(len) (len) (* 0 < len < 30 *)
  1880. function D3DTRIFLAG_STARTFLAT(len: DWORD): DWORD;
  1881. {$EXTERNALSYM D3DTRIFLAG_STARTFLAT}
  1882. const
  1883. D3DTRIFLAG_ODD = $0000001e;
  1884. {$EXTERNALSYM D3DTRIFLAG_ODD}
  1885. D3DTRIFLAG_EVEN = $0000001f;
  1886. {$EXTERNALSYM D3DTRIFLAG_EVEN}
  1887. (*
  1888. * Triangle edge flags
  1889. * enable edges for wireframe or antialiasing
  1890. *)
  1891. D3DTRIFLAG_EDGEENABLE1 = $00000100; (* v0-v1 edge *)
  1892. {$EXTERNALSYM D3DTRIFLAG_EDGEENABLE1}
  1893. D3DTRIFLAG_EDGEENABLE2 = $00000200; (* v1-v2 edge *)
  1894. {$EXTERNALSYM D3DTRIFLAG_EDGEENABLE2}
  1895. D3DTRIFLAG_EDGEENABLE3 = $00000400; (* v2-v0 edge *)
  1896. {$EXTERNALSYM D3DTRIFLAG_EDGEENABLE3}
  1897. D3DTRIFLAG_EDGEENABLETRIANGLE = (
  1898. D3DTRIFLAG_EDGEENABLE1 or D3DTRIFLAG_EDGEENABLE2 or D3DTRIFLAG_EDGEENABLE3);
  1899. {$EXTERNALSYM D3DTRIFLAG_EDGEENABLETRIANGLE}
  1900. (*
  1901. * Primitive structures and related defines. Vertex offsets are to types
  1902. * TD3DVertex, TD3DLVertex, or TD3DTLVertex.
  1903. *)
  1904. (*
  1905. * Triangle list primitive structure
  1906. *)
  1907. type
  1908. PD3DTriangle = ^TD3DTriangle;
  1909. _D3DTRIANGLE = packed record
  1910. case Integer of
  1911. 0: (
  1912. v1: WORD; (* Vertex indices *)
  1913. v2: WORD;
  1914. v3: WORD;
  1915. wFlags: WORD; (* Edge (and other) flags *)
  1916. );
  1917. 1: (
  1918. wV1: WORD;
  1919. wV2: WORD;
  1920. wV3: WORD;
  1921. );
  1922. end;
  1923. {$EXTERNALSYM _D3DTRIANGLE}
  1924. D3DTRIANGLE = _D3DTRIANGLE;
  1925. {$EXTERNALSYM D3DTRIANGLE}
  1926. TD3DTriangle = _D3DTRIANGLE;
  1927. (*
  1928. * Line strip structure.
  1929. * The instruction count - 1 defines the number of line segments.
  1930. *)
  1931. PD3DLine = ^TD3DLine;
  1932. _D3DLINE = packed record
  1933. case Integer of
  1934. 0: (
  1935. v1: WORD; (* Vertex indices *)
  1936. v2: WORD;
  1937. );
  1938. 1: (
  1939. wV1: WORD;
  1940. wV2: WORD;
  1941. );
  1942. end;
  1943. {$EXTERNALSYM _D3DLINE}
  1944. D3DLINE = _D3DLINE;
  1945. {$EXTERNALSYM D3DLINE}
  1946. TD3DLine = _D3DLINE;
  1947. (*
  1948. * Span structure
  1949. * Spans join a list of points with the same y value.
  1950. * If the y value changes, a new span is started.
  1951. *)
  1952. PD3DSpan = ^TD3DSpan;
  1953. _D3DSPAN = packed record
  1954. wCount: WORD; (* Number of spans *)
  1955. wFirst: WORD; (* Index to first vertex *)
  1956. end;
  1957. {$EXTERNALSYM _D3DSPAN}
  1958. D3DSPAN = _D3DSPAN;
  1959. {$EXTERNALSYM D3DSPAN}
  1960. TD3DSpan = _D3DSPAN;
  1961. (*
  1962. * Point structure
  1963. *)
  1964. PD3DPoint = ^TD3DPoint;
  1965. _D3DPOINT = packed record
  1966. wCount: WORD; (* number of points *)
  1967. wFirst: WORD; (* index to first vertex *)
  1968. end;
  1969. {$EXTERNALSYM _D3DPOINT}
  1970. D3DPOINT = _D3DPOINT;
  1971. {$EXTERNALSYM D3DPOINT}
  1972. TD3DPoint = _D3DPOINT;
  1973. (*
  1974. * Forward branch structure.
  1975. * Mask is logically anded with the driver status mask
  1976. * if the result equals 'value', the branch is taken.
  1977. *)
  1978. PD3DBranch = ^TD3DBranch;
  1979. _D3DBRANCH = packed record
  1980. dwMask: DWORD; (* Bitmask against D3D status *)
  1981. dwValue: DWORD;
  1982. bNegate: BOOL; (* TRUE to negate comparison *)
  1983. dwOffset: DWORD; (* How far to branch forward (0 for exit)*)
  1984. end;
  1985. {$EXTERNALSYM _D3DBRANCH}
  1986. D3DBRANCH = _D3DBRANCH;
  1987. {$EXTERNALSYM D3DBRANCH}
  1988. TD3DBranch = _D3DBRANCH;
  1989. (*
  1990. * Status used for set status instruction.
  1991. * The D3D status is initialised on device creation
  1992. * and is modified by all execute calls.
  1993. *)
  1994. PD3DStatus = ^TD3DStatus;
  1995. _D3DSTATUS = packed record
  1996. dwFlags: DWORD; (* Do we set extents or status *)
  1997. dwStatus: DWORD; (* D3D status *)
  1998. drExtent: TD3DRect;
  1999. end;
  2000. {$EXTERNALSYM _D3DSTATUS}
  2001. D3DSTATUS = _D3DSTATUS;
  2002. {$EXTERNALSYM D3DSTATUS}
  2003. TD3DStatus = _D3DSTATUS;
  2004. const
  2005. D3DSETSTATUS_STATUS = $00000001;
  2006. {$EXTERNALSYM D3DSETSTATUS_STATUS}
  2007. D3DSETSTATUS_EXTENTS = $00000002;
  2008. {$EXTERNALSYM D3DSETSTATUS_EXTENTS}
  2009. D3DSETSTATUS_ALL = (D3DSETSTATUS_STATUS or D3DSETSTATUS_EXTENTS);
  2010. {$EXTERNALSYM D3DSETSTATUS_ALL}
  2011. {$IFDEF DIRECT3D_VERSION_5}
  2012. type
  2013. PD3DClipStatus = ^TD3DClipStatus;
  2014. _D3DCLIPSTATUS = packed record
  2015. dwFlags : DWORD; (* Do we set 2d extents, 3D extents or status *)
  2016. dwStatus : DWORD; (* Clip status *)
  2017. minx, maxx : Single; (* X extents *)
  2018. miny, maxy : Single; (* Y extents *)
  2019. minz, maxz : Single; (* Z extents *)
  2020. end;
  2021. {$EXTERNALSYM _D3DCLIPSTATUS}
  2022. D3DCLIPSTATUS = _D3DCLIPSTATUS;
  2023. {$EXTERNALSYM D3DCLIPSTATUS}
  2024. TD3DClipStatus = _D3DCLIPSTATUS;
  2025. const
  2026. D3DCLIPSTATUS_STATUS = $00000001;
  2027. {$EXTERNALSYM D3DCLIPSTATUS_STATUS}
  2028. D3DCLIPSTATUS_EXTENTS2 = $00000002;
  2029. {$EXTERNALSYM D3DCLIPSTATUS_EXTENTS2}
  2030. D3DCLIPSTATUS_EXTENTS3 = $00000004;
  2031. {$EXTERNALSYM D3DCLIPSTATUS_EXTENTS3}
  2032. {$ENDIF} // DIRECT3D_VERSION_5
  2033. (*
  2034. * Statistics structure
  2035. *)
  2036. type
  2037. PD3DStats = ^TD3DStats;
  2038. _D3DSTATS = packed record
  2039. dwSize: DWORD;
  2040. dwTrianglesDrawn: DWORD;
  2041. dwLinesDrawn: DWORD;
  2042. dwPointsDrawn: DWORD;
  2043. dwSpansDrawn: DWORD;
  2044. dwVerticesProcessed: DWORD;
  2045. end;
  2046. {$EXTERNALSYM _D3DSTATS}
  2047. D3DSTATS = _D3DSTATS;
  2048. {$EXTERNALSYM D3DSTATS}
  2049. TD3DStats = _D3DSTATS;
  2050. (*
  2051. * Execute options.
  2052. * When calling using D3DEXECUTE_UNCLIPPED all the primitives
  2053. * inside the buffer must be contained within the viewport.
  2054. *)
  2055. const
  2056. D3DEXECUTE_CLIPPED = $00000001;
  2057. {$EXTERNALSYM D3DEXECUTE_CLIPPED}
  2058. D3DEXECUTE_UNCLIPPED = $00000002;
  2059. {$EXTERNALSYM D3DEXECUTE_UNCLIPPED}
  2060. type
  2061. PD3DExecuteData = ^TD3DExecuteData;
  2062. _D3DEXECUTEDATA = packed record
  2063. dwSize: DWORD;
  2064. dwVertexOffset: DWORD;
  2065. dwVertexCount: DWORD;
  2066. dwInstructionOffset: DWORD;
  2067. dwInstructionLength: DWORD;
  2068. dwHVertexOffset: DWORD;
  2069. dsStatus: TD3DStatus; (* Status after execute *)
  2070. end;
  2071. {$EXTERNALSYM _D3DEXECUTEDATA}
  2072. D3DEXECUTEDATA = _D3DEXECUTEDATA;
  2073. {$EXTERNALSYM D3DEXECUTEDATA}
  2074. TD3DExecuteData = _D3DEXECUTEDATA;
  2075. (*
  2076. * Palette flags.
  2077. * This are or'ed with the peFlags in the PALETTEENTRYs passed to DirectDraw.
  2078. *)
  2079. const
  2080. D3DPAL_FREE = $00; (* Renderer may use this entry freely *)
  2081. {$EXTERNALSYM D3DPAL_FREE}
  2082. D3DPAL_READONLY = $40; (* Renderer may not set this entry *)
  2083. {$EXTERNALSYM D3DPAL_READONLY}
  2084. D3DPAL_RESERVED = $80; (* Renderer may not use this entry *)
  2085. {$EXTERNALSYM D3DPAL_RESERVED}
  2086. {$IFDEF DIRECT3D_VERSION_6}
  2087. type
  2088. PD3DVertexBufferDesc = ^TD3DVertexBufferDesc;
  2089. _D3DVERTEXBUFFERDESC = packed record
  2090. dwSize : DWORD;
  2091. dwCaps : DWORD;
  2092. dwFVF : DWORD;
  2093. dwNumVertices : DWORD;
  2094. end;
  2095. {$EXTERNALSYM _D3DVERTEXBUFFERDESC}
  2096. D3DVERTEXBUFFERDESC = _D3DVERTEXBUFFERDESC;
  2097. {$EXTERNALSYM D3DVERTEXBUFFERDESC}
  2098. TD3DVertexBufferDesc = _D3DVERTEXBUFFERDESC;
  2099. const
  2100. (* These correspond to DDSCAPS_* flags *)
  2101. D3DVBCAPS_SYSTEMMEMORY = $00000800;
  2102. {$EXTERNALSYM D3DVBCAPS_SYSTEMMEMORY}
  2103. D3DVBCAPS_WRITEONLY = $00010000;
  2104. {$EXTERNALSYM D3DVBCAPS_WRITEONLY}
  2105. D3DVBCAPS_OPTIMIZED = $80000000;
  2106. {$EXTERNALSYM D3DVBCAPS_OPTIMIZED}
  2107. D3DVBCAPS_DONOTCLIP = $00000001;
  2108. {$EXTERNALSYM D3DVBCAPS_DONOTCLIP}
  2109. (* Vertex Operations for ProcessVertices *)
  2110. D3DVOP_LIGHT = (1 shl 10);
  2111. {$EXTERNALSYM D3DVOP_LIGHT}
  2112. D3DVOP_TRANSFORM = (1 shl 0);
  2113. {$EXTERNALSYM D3DVOP_TRANSFORM}
  2114. D3DVOP_CLIP = (1 shl 2);
  2115. {$EXTERNALSYM D3DVOP_CLIP}
  2116. D3DVOP_EXTENTS = (1 shl 3);
  2117. {$EXTERNALSYM D3DVOP_EXTENTS}
  2118. {$IFDEF DIRECT3D_VERSION_LESS_8}
  2119. (* The maximum number of vertices user can pass to any d3d
  2120. drawing function or to create vertex buffer with
  2121. *)
  2122. D3DMAXNUMVERTICES = ((1 shl 16) - 1);
  2123. {$EXTERNALSYM D3DMAXNUMVERTICES}
  2124. (* The maximum number of primitives user can pass to any d3d
  2125. drawing function.
  2126. *)
  2127. D3DMAXNUMPRIMITIVES = ((1 shl 16) - 1);
  2128. {$EXTERNALSYM D3DMAXNUMPRIMITIVES}
  2129. {$IFDEF DIRECT3D_VERSION_7}
  2130. (* Bits for dwFlags in ProcessVertices call *)
  2131. D3DPV_DONOTCOPYDATA = (1 shl 0);
  2132. {$EXTERNALSYM D3DPV_DONOTCOPYDATA}
  2133. {$ENDIF} // DIRECT3D_VERSION_7
  2134. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  2135. //-------------------------------------------------------------------
  2136. {$IFDEF DIRECT3D_VERSION_LESS_8}
  2137. // Flexible vertex format bits
  2138. //
  2139. D3DFVF_RESERVED0 = $001;
  2140. {$EXTERNALSYM D3DFVF_RESERVED0}
  2141. D3DFVF_POSITION_MASK = $00E;
  2142. {$EXTERNALSYM D3DFVF_POSITION_MASK}
  2143. D3DFVF_XYZ = $002;
  2144. {$EXTERNALSYM D3DFVF_XYZ}
  2145. D3DFVF_XYZRHW = $004;
  2146. {$EXTERNALSYM D3DFVF_XYZRHW}
  2147. {$IFDEF DIRECT3D_VERSION_7}
  2148. D3DFVF_XYZB1 = $006;
  2149. {$EXTERNALSYM D3DFVF_XYZB1}
  2150. D3DFVF_XYZB2 = $008;
  2151. {$EXTERNALSYM D3DFVF_XYZB2}
  2152. D3DFVF_XYZB3 = $00a;
  2153. {$EXTERNALSYM D3DFVF_XYZB3}
  2154. D3DFVF_XYZB4 = $00c;
  2155. {$EXTERNALSYM D3DFVF_XYZB4}
  2156. D3DFVF_XYZB5 = $00e;
  2157. {$EXTERNALSYM D3DFVF_XYZB5}
  2158. {$ENDIF} // DIRECT3D_VERSION_7
  2159. D3DFVF_NORMAL = $010;
  2160. {$EXTERNALSYM D3DFVF_NORMAL}
  2161. D3DFVF_RESERVED1 = $020;
  2162. {$EXTERNALSYM D3DFVF_RESERVED1}
  2163. D3DFVF_DIFFUSE = $040;
  2164. {$EXTERNALSYM D3DFVF_DIFFUSE}
  2165. D3DFVF_SPECULAR = $080;
  2166. {$EXTERNALSYM D3DFVF_SPECULAR}
  2167. D3DFVF_TEXCOUNT_MASK = $f00;
  2168. {$EXTERNALSYM D3DFVF_TEXCOUNT_MASK}
  2169. D3DFVF_TEXCOUNT_SHIFT = 8;
  2170. {$EXTERNALSYM D3DFVF_TEXCOUNT_SHIFT}
  2171. D3DFVF_TEX0 = $000;
  2172. {$EXTERNALSYM D3DFVF_TEX0}
  2173. D3DFVF_TEX1 = $100;
  2174. {$EXTERNALSYM D3DFVF_TEX1}
  2175. D3DFVF_TEX2 = $200;
  2176. {$EXTERNALSYM D3DFVF_TEX2}
  2177. D3DFVF_TEX3 = $300;
  2178. {$EXTERNALSYM D3DFVF_TEX3}
  2179. D3DFVF_TEX4 = $400;
  2180. {$EXTERNALSYM D3DFVF_TEX4}
  2181. D3DFVF_TEX5 = $500;
  2182. {$EXTERNALSYM D3DFVF_TEX5}
  2183. D3DFVF_TEX6 = $600;
  2184. {$EXTERNALSYM D3DFVF_TEX6}
  2185. D3DFVF_TEX7 = $700;
  2186. {$EXTERNALSYM D3DFVF_TEX7}
  2187. D3DFVF_TEX8 = $800;
  2188. {$EXTERNALSYM D3DFVF_TEX8}
  2189. D3DFVF_RESERVED2 = $f000; // 4 reserved bits
  2190. {$EXTERNALSYM D3DFVF_RESERVED2}
  2191. {$ELSE}
  2192. D3DFVF_RESERVED1 = $020;
  2193. {$EXTERNALSYM D3DFVF_RESERVED1}
  2194. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  2195. D3DFVF_VERTEX = ( D3DFVF_XYZ or D3DFVF_NORMAL or D3DFVF_TEX1 );
  2196. {$EXTERNALSYM D3DFVF_VERTEX}
  2197. D3DFVF_LVERTEX = ( D3DFVF_XYZ or D3DFVF_RESERVED1 or D3DFVF_DIFFUSE or
  2198. D3DFVF_SPECULAR or D3DFVF_TEX1 );
  2199. {$EXTERNALSYM D3DFVF_LVERTEX}
  2200. D3DFVF_TLVERTEX = ( D3DFVF_XYZRHW or D3DFVF_DIFFUSE or D3DFVF_SPECULAR or
  2201. D3DFVF_TEX1 );
  2202. {$EXTERNALSYM D3DFVF_TLVERTEX}
  2203. type
  2204. PD3DDP_PtrStride = ^TD3DDP_PtrStride;
  2205. _D3DDP_PTRSTRIDE = packed record
  2206. lpvData : pointer;
  2207. dwStride : DWORD;
  2208. end;
  2209. {$EXTERNALSYM _D3DDP_PTRSTRIDE}
  2210. D3DDP_PTRSTRIDE = _D3DDP_PTRSTRIDE;
  2211. {$EXTERNALSYM D3DDP_PTRSTRIDE}
  2212. TD3DDP_PtrStride = _D3DDP_PTRSTRIDE;
  2213. TD3DDPPtrStride = _D3DDP_PTRSTRIDE;
  2214. PD3DDPPtrStride = ^TD3DDPPtrStride;
  2215. const
  2216. D3DDP_MAXTEXCOORD = 8;
  2217. {$EXTERNALSYM D3DDP_MAXTEXCOORD}
  2218. type
  2219. PD3DDrawPrimitiveStridedData = ^TD3DDrawPrimitiveStridedData;
  2220. _D3DDRAWPRIMITIVESTRIDEDDATA = packed record
  2221. position : TD3DDP_PtrStride;
  2222. normal : TD3DDP_PtrStride;
  2223. diffuse : TD3DDP_PtrStride;
  2224. specular : TD3DDP_PtrStride;
  2225. textureCoords : array [0..D3DDP_MAXTEXCOORD-1] of TD3DDP_PtrStride;
  2226. end;
  2227. {$EXTERNALSYM _D3DDRAWPRIMITIVESTRIDEDDATA}
  2228. D3DDRAWPRIMITIVESTRIDEDDATA = _D3DDRAWPRIMITIVESTRIDEDDATA;
  2229. {$EXTERNALSYM D3DDRAWPRIMITIVESTRIDEDDATA}
  2230. TD3DDrawPrimitiveStridedData = _D3DDRAWPRIMITIVESTRIDEDDATA;
  2231. //---------------------------------------------------------------------
  2232. // ComputeSphereVisibility return values
  2233. //
  2234. const
  2235. D3DVIS_INSIDE_FRUSTUM = 0;
  2236. {$EXTERNALSYM D3DVIS_INSIDE_FRUSTUM}
  2237. D3DVIS_INTERSECT_FRUSTUM = 1;
  2238. {$EXTERNALSYM D3DVIS_INTERSECT_FRUSTUM}
  2239. D3DVIS_OUTSIDE_FRUSTUM = 2;
  2240. {$EXTERNALSYM D3DVIS_OUTSIDE_FRUSTUM}
  2241. D3DVIS_INSIDE_LEFT = 0;
  2242. {$EXTERNALSYM D3DVIS_INSIDE_LEFT}
  2243. D3DVIS_INTERSECT_LEFT = (1 shl 2);
  2244. {$EXTERNALSYM D3DVIS_INTERSECT_LEFT}
  2245. D3DVIS_OUTSIDE_LEFT = (2 shl 2);
  2246. {$EXTERNALSYM D3DVIS_OUTSIDE_LEFT}
  2247. D3DVIS_INSIDE_RIGHT = 0;
  2248. {$EXTERNALSYM D3DVIS_INSIDE_RIGHT}
  2249. D3DVIS_INTERSECT_RIGHT = (1 shl 4);
  2250. {$EXTERNALSYM D3DVIS_INTERSECT_RIGHT}
  2251. D3DVIS_OUTSIDE_RIGHT = (2 shl 4);
  2252. {$EXTERNALSYM D3DVIS_OUTSIDE_RIGHT}
  2253. D3DVIS_INSIDE_TOP = 0;
  2254. {$EXTERNALSYM D3DVIS_INSIDE_TOP}
  2255. D3DVIS_INTERSECT_TOP = (1 shl 6);
  2256. {$EXTERNALSYM D3DVIS_INTERSECT_TOP}
  2257. D3DVIS_OUTSIDE_TOP = (2 shl 6);
  2258. {$EXTERNALSYM D3DVIS_OUTSIDE_TOP}
  2259. D3DVIS_INSIDE_BOTTOM = 0;
  2260. {$EXTERNALSYM D3DVIS_INSIDE_BOTTOM}
  2261. D3DVIS_INTERSECT_BOTTOM = (1 shl 8);
  2262. {$EXTERNALSYM D3DVIS_INTERSECT_BOTTOM}
  2263. D3DVIS_OUTSIDE_BOTTOM = (2 shl 8);
  2264. {$EXTERNALSYM D3DVIS_OUTSIDE_BOTTOM}
  2265. D3DVIS_INSIDE_NEAR = 0;
  2266. {$EXTERNALSYM D3DVIS_INSIDE_NEAR}
  2267. D3DVIS_INTERSECT_NEAR = (1 shl 10);
  2268. {$EXTERNALSYM D3DVIS_INTERSECT_NEAR}
  2269. D3DVIS_OUTSIDE_NEAR = (2 shl 10);
  2270. {$EXTERNALSYM D3DVIS_OUTSIDE_NEAR}
  2271. D3DVIS_INSIDE_FAR = 0;
  2272. {$EXTERNALSYM D3DVIS_INSIDE_FAR}
  2273. D3DVIS_INTERSECT_FAR = (1 shl 12);
  2274. {$EXTERNALSYM D3DVIS_INTERSECT_FAR}
  2275. D3DVIS_OUTSIDE_FAR = (2 shl 12);
  2276. {$EXTERNALSYM D3DVIS_OUTSIDE_FAR}
  2277. D3DVIS_MASK_FRUSTUM = (3 shl 0);
  2278. {$EXTERNALSYM D3DVIS_MASK_FRUSTUM}
  2279. D3DVIS_MASK_LEFT = (3 shl 2);
  2280. {$EXTERNALSYM D3DVIS_MASK_LEFT}
  2281. D3DVIS_MASK_RIGHT = (3 shl 4);
  2282. {$EXTERNALSYM D3DVIS_MASK_RIGHT}
  2283. D3DVIS_MASK_TOP = (3 shl 6);
  2284. {$EXTERNALSYM D3DVIS_MASK_TOP}
  2285. D3DVIS_MASK_BOTTOM = (3 shl 8);
  2286. {$EXTERNALSYM D3DVIS_MASK_BOTTOM}
  2287. D3DVIS_MASK_NEAR = (3 shl 10);
  2288. {$EXTERNALSYM D3DVIS_MASK_NEAR}
  2289. D3DVIS_MASK_FAR = (3 shl 12);
  2290. {$EXTERNALSYM D3DVIS_MASK_FAR}
  2291. {$ENDIF} // DIRECT3D_VERSION_6
  2292. {$IFDEF DIRECT3D_VERSION_LESS_8}
  2293. {$IFDEF DIRECT3D_VERSION_7}
  2294. // To be used with GetInfo()
  2295. D3DDEVINFOID_TEXTUREMANAGER = 1;
  2296. {$EXTERNALSYM D3DDEVINFOID_TEXTUREMANAGER}
  2297. D3DDEVINFOID_D3DTEXTUREMANAGER = 2;
  2298. {$EXTERNALSYM D3DDEVINFOID_D3DTEXTUREMANAGER}
  2299. D3DDEVINFOID_TEXTURING = 3;
  2300. {$EXTERNALSYM D3DDEVINFOID_TEXTURING}
  2301. type
  2302. PD3DStateBlockType = ^TD3DStateBlockType;
  2303. _D3DSTATEBLOCKTYPE = (
  2304. D3DSBT_INVALID_0 ,
  2305. D3DSBT_ALL , // capture all state
  2306. D3DSBT_PIXELSTATE , // capture pixel state
  2307. D3DSBT_VERTEXSTATE // capture vertex state
  2308. );
  2309. {$EXTERNALSYM _D3DSTATEBLOCKTYPE}
  2310. D3DSTATEBLOCKTYPE = _D3DSTATEBLOCKTYPE;
  2311. {$EXTERNALSYM D3DSTATEBLOCKTYPE}
  2312. TD3DStateBlockType = _D3DSTATEBLOCKTYPE;
  2313. // The D3DVERTEXBLENDFLAGS type is used with D3DRENDERSTATE_VERTEXBLEND state.
  2314. //
  2315. PD3DVertexBlendFlags = ^TD3DVertexBlendFlags;
  2316. _D3DVERTEXBLENDFLAGS = (
  2317. D3DVBLEND_DISABLE , // Disable vertex blending
  2318. D3DVBLEND_1WEIGHT , // blend between 2 matrices
  2319. D3DVBLEND_2WEIGHTS, // blend between 3 matrices
  2320. D3DVBLEND_3WEIGHTS // blend between 4 matrices
  2321. );
  2322. {$EXTERNALSYM _D3DVERTEXBLENDFLAGS}
  2323. D3DVERTEXBLENDFLAGS = _D3DVERTEXBLENDFLAGS;
  2324. {$EXTERNALSYM D3DVERTEXBLENDFLAGS}
  2325. TD3DVertexBlendFlags = _D3DVERTEXBLENDFLAGS;
  2326. PD3DTextureTransformFlags = ^TD3DTextureTransformFlags;
  2327. _D3DTEXTURETRANSFORMFLAGS = (
  2328. D3DTTFF_DISABLE , // texture coordinates are passed directly
  2329. D3DTTFF_COUNT1 , // rasterizer should expect 1-D texture coords
  2330. D3DTTFF_COUNT2 , // rasterizer should expect 2-D texture coords
  2331. D3DTTFF_COUNT3 , // rasterizer should expect 3-D texture coords
  2332. D3DTTFF_COUNT4 // rasterizer should expect 4-D texture coords
  2333. );
  2334. {$EXTERNALSYM _D3DTEXTURETRANSFORMFLAGS}
  2335. D3DTEXTURETRANSFORMFLAGS = _D3DTEXTURETRANSFORMFLAGS;
  2336. {$EXTERNALSYM D3DTEXTURETRANSFORMFLAGS}
  2337. TD3DTextureTransformFlags = _D3DTEXTURETRANSFORMFLAGS;
  2338. const
  2339. D3DTTFF_PROJECTED = TD3DTextureTransformFlags(256); // texcoords to be divided by COUNTth element
  2340. {$EXTERNALSYM D3DTTFF_PROJECTED}
  2341. // Macros to set texture coordinate format bits in the FVF id
  2342. D3DFVF_TEXTUREFORMAT2 = 0; // Two floating point values
  2343. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT2}
  2344. D3DFVF_TEXTUREFORMAT1 = 3; // One floating point value
  2345. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT1}
  2346. D3DFVF_TEXTUREFORMAT3 = 1; // Three floating point values
  2347. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT3}
  2348. D3DFVF_TEXTUREFORMAT4 = 2; // Four floating point values
  2349. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT4}
  2350. function D3DFVF_TEXCOORDSIZE3(CoordIndex: DWORD): DWORD;
  2351. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE3}
  2352. function D3DFVF_TEXCOORDSIZE2(CoordIndex: DWORD): DWORD;
  2353. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE2}
  2354. function D3DFVF_TEXCOORDSIZE4(CoordIndex: DWORD): DWORD;
  2355. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE4}
  2356. function D3DFVF_TEXCOORDSIZE1(CoordIndex: DWORD): DWORD;
  2357. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE1}
  2358. {$ENDIF} // DIRECT3D_VERSION_7
  2359. {$ELSE}
  2360. //
  2361. // legacy vertex blend names
  2362. //
  2363. type
  2364. PD3DVertexBlendFlags = ^TD3DVertexBlendFlags;
  2365. TD3DVertexBlendFlags = Direct3D8.TD3DVertexBlendFlags;
  2366. D3DVERTEXBLENDFLAGS = Direct3D8.D3DVERTEXBLENDFLAGS;
  2367. _D3DVERTEXBLENDFLAGS = Direct3D8._D3DVERTEXBLENDFLAGS;
  2368. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  2369. (*==========================================================================;
  2370. *
  2371. *
  2372. * File: d3dcaps.h
  2373. * Content: Direct3D capabilities include file
  2374. *
  2375. ***************************************************************************)
  2376. (* Description of capabilities of transform *)
  2377. type
  2378. PD3DTransformCaps = ^TD3DTransformCaps;
  2379. _D3DTRANSFORMCAPS = packed record
  2380. dwSize: DWORD;
  2381. dwCaps: DWORD;
  2382. end;
  2383. {$EXTERNALSYM _D3DTRANSFORMCAPS}
  2384. D3DTRANSFORMCAPS = _D3DTRANSFORMCAPS;
  2385. {$EXTERNALSYM D3DTRANSFORMCAPS}
  2386. TD3DTransformCaps = _D3DTRANSFORMCAPS;
  2387. const
  2388. D3DTRANSFORMCAPS_CLIP = $00000001; (* Will clip whilst transforming *)
  2389. {$EXTERNALSYM D3DTRANSFORMCAPS_CLIP}
  2390. (* Description of capabilities of lighting *)
  2391. type
  2392. PD3DLightingCaps = ^TD3DLightingCaps;
  2393. _D3DLIGHTINGCAPS = packed record
  2394. dwSize: DWORD;
  2395. dwCaps: DWORD; (* Lighting caps *)
  2396. dwLightingModel: DWORD; (* Lighting model - RGB or mono *)
  2397. dwNumLights: DWORD; (* Number of lights that can be handled *)
  2398. end;
  2399. {$EXTERNALSYM _D3DLIGHTINGCAPS}
  2400. D3DLIGHTINGCAPS = _D3DLIGHTINGCAPS;
  2401. {$EXTERNALSYM D3DLIGHTINGCAPS}
  2402. TD3DLightingCaps = _D3DLIGHTINGCAPS;
  2403. const
  2404. D3DLIGHTINGMODEL_RGB = $00000001;
  2405. {$EXTERNALSYM D3DLIGHTINGMODEL_RGB}
  2406. D3DLIGHTINGMODEL_MONO = $00000002;
  2407. {$EXTERNALSYM D3DLIGHTINGMODEL_MONO}
  2408. D3DLIGHTCAPS_POINT = $00000001; (* Point lights supported *)
  2409. {$EXTERNALSYM D3DLIGHTCAPS_POINT}
  2410. D3DLIGHTCAPS_SPOT = $00000002; (* Spot lights supported *)
  2411. {$EXTERNALSYM D3DLIGHTCAPS_SPOT}
  2412. D3DLIGHTCAPS_DIRECTIONAL = $00000004; (* Directional lights supported *)
  2413. {$EXTERNALSYM D3DLIGHTCAPS_DIRECTIONAL}
  2414. {$IFDEF DIRECT3D_VERSION_LESS_7}
  2415. D3DLIGHTCAPS_PARALLELPOINT = $00000008; (* Parallel point lights supported *)
  2416. {$EXTERNALSYM D3DLIGHTCAPS_PARALLELPOINT}
  2417. {$ENDIF} // DIRECT3D_VERSION_LESS_7
  2418. {$IFDEF DIRECT3D_VERSION_LESS_5}
  2419. D3DLIGHTCAPS_GLSPOT = $00000010; (* GL syle spot lights supported *)
  2420. {$EXTERNALSYM D3DLIGHTCAPS_GLSPOT}
  2421. {$ENDIF} // DIRECT3D_VERSION_LESS_5
  2422. (* Description of capabilities for each primitive type *)
  2423. type
  2424. PD3DPrimCaps = ^TD3DPrimCaps;
  2425. _D3DPrimCaps = packed record
  2426. dwSize: DWORD;
  2427. dwMiscCaps: DWORD; (* Capability flags *)
  2428. dwRasterCaps: DWORD;
  2429. dwZCmpCaps: DWORD;
  2430. dwSrcBlendCaps: DWORD;
  2431. dwDestBlendCaps: DWORD;
  2432. dwAlphaCmpCaps: DWORD;
  2433. dwShadeCaps: DWORD;
  2434. dwTextureCaps: DWORD;
  2435. dwTextureFilterCaps: DWORD;
  2436. dwTextureBlendCaps: DWORD;
  2437. dwTextureAddressCaps: DWORD;
  2438. dwStippleWidth: DWORD; (* maximum width and height of *)
  2439. dwStippleHeight: DWORD; (* of supported stipple (up to 32x32) *)
  2440. end;
  2441. {$EXTERNALSYM _D3DPrimCaps}
  2442. D3DPrimCaps = _D3DPrimCaps;
  2443. {$EXTERNALSYM D3DPrimCaps}
  2444. TD3DPrimCaps = _D3DPrimCaps;
  2445. const
  2446. (* TD3DPrimCaps dwMiscCaps *)
  2447. D3DPMISCCAPS_MASKPLANES = $00000001;
  2448. {$EXTERNALSYM D3DPMISCCAPS_MASKPLANES}
  2449. D3DPMISCCAPS_MASKZ = $00000002;
  2450. {$EXTERNALSYM D3DPMISCCAPS_MASKZ}
  2451. D3DPMISCCAPS_LINEPATTERNREP = $00000004;
  2452. {$EXTERNALSYM D3DPMISCCAPS_LINEPATTERNREP}
  2453. D3DPMISCCAPS_CONFORMANT = $00000008;
  2454. {$EXTERNALSYM D3DPMISCCAPS_CONFORMANT}
  2455. D3DPMISCCAPS_CULLNONE = $00000010;
  2456. {$EXTERNALSYM D3DPMISCCAPS_CULLNONE}
  2457. D3DPMISCCAPS_CULLCW = $00000020;
  2458. {$EXTERNALSYM D3DPMISCCAPS_CULLCW}
  2459. D3DPMISCCAPS_CULLCCW = $00000040;
  2460. {$EXTERNALSYM D3DPMISCCAPS_CULLCCW}
  2461. (* TD3DPrimCaps dwRasterCaps *)
  2462. D3DPRASTERCAPS_DITHER = $00000001;
  2463. {$EXTERNALSYM D3DPRASTERCAPS_DITHER}
  2464. D3DPRASTERCAPS_ROP2 = $00000002;
  2465. {$EXTERNALSYM D3DPRASTERCAPS_ROP2}
  2466. D3DPRASTERCAPS_XOR = $00000004;
  2467. {$EXTERNALSYM D3DPRASTERCAPS_XOR}
  2468. D3DPRASTERCAPS_PAT = $00000008;
  2469. {$EXTERNALSYM D3DPRASTERCAPS_PAT}
  2470. D3DPRASTERCAPS_ZTEST = $00000010;
  2471. {$EXTERNALSYM D3DPRASTERCAPS_ZTEST}
  2472. D3DPRASTERCAPS_SUBPIXEL = $00000020;
  2473. {$EXTERNALSYM D3DPRASTERCAPS_SUBPIXEL}
  2474. D3DPRASTERCAPS_SUBPIXELX = $00000040;
  2475. {$EXTERNALSYM D3DPRASTERCAPS_SUBPIXELX}
  2476. D3DPRASTERCAPS_FOGVERTEX = $00000080;
  2477. {$EXTERNALSYM D3DPRASTERCAPS_FOGVERTEX}
  2478. D3DPRASTERCAPS_FOGTABLE = $00000100;
  2479. {$EXTERNALSYM D3DPRASTERCAPS_FOGTABLE}
  2480. D3DPRASTERCAPS_STIPPLE = $00000200;
  2481. {$EXTERNALSYM D3DPRASTERCAPS_STIPPLE}
  2482. {$IFDEF DIRECT3D_VERSION_5}
  2483. D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT = $00000400;
  2484. {$EXTERNALSYM D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT}
  2485. D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT = $00000800;
  2486. {$EXTERNALSYM D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT}
  2487. D3DPRASTERCAPS_ANTIALIASEDGES = $00001000;
  2488. {$EXTERNALSYM D3DPRASTERCAPS_ANTIALIASEDGES}
  2489. D3DPRASTERCAPS_MIPMAPLODBIAS = $00002000;
  2490. {$EXTERNALSYM D3DPRASTERCAPS_MIPMAPLODBIAS}
  2491. D3DPRASTERCAPS_ZBIAS = $00004000;
  2492. {$EXTERNALSYM D3DPRASTERCAPS_ZBIAS}
  2493. D3DPRASTERCAPS_ZBUFFERLESSHSR = $00008000;
  2494. {$EXTERNALSYM D3DPRASTERCAPS_ZBUFFERLESSHSR}
  2495. D3DPRASTERCAPS_FOGRANGE = $00010000;
  2496. {$EXTERNALSYM D3DPRASTERCAPS_FOGRANGE}
  2497. D3DPRASTERCAPS_ANISOTROPY = $00020000;
  2498. {$EXTERNALSYM D3DPRASTERCAPS_ANISOTROPY}
  2499. {$ENDIF} // DIRECT3D_VERSION_5
  2500. {$IFDEF DIRECT3D_VERSION_6}
  2501. D3DPRASTERCAPS_WBUFFER = $00040000;
  2502. {$EXTERNALSYM D3DPRASTERCAPS_WBUFFER}
  2503. D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT = $00080000;
  2504. {$EXTERNALSYM D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT}
  2505. D3DPRASTERCAPS_WFOG = $00100000;
  2506. {$EXTERNALSYM D3DPRASTERCAPS_WFOG}
  2507. D3DPRASTERCAPS_ZFOG = $00200000;
  2508. {$EXTERNALSYM D3DPRASTERCAPS_ZFOG}
  2509. {$ENDIF} // DIRECT3D_VERSION_6
  2510. (* TD3DPrimCaps dwZCmpCaps, dwAlphaCmpCaps *)
  2511. const
  2512. D3DPCMPCAPS_NEVER = $00000001;
  2513. {$EXTERNALSYM D3DPCMPCAPS_NEVER}
  2514. D3DPCMPCAPS_LESS = $00000002;
  2515. {$EXTERNALSYM D3DPCMPCAPS_LESS}
  2516. D3DPCMPCAPS_EQUAL = $00000004;
  2517. {$EXTERNALSYM D3DPCMPCAPS_EQUAL}
  2518. D3DPCMPCAPS_LESSEQUAL = $00000008;
  2519. {$EXTERNALSYM D3DPCMPCAPS_LESSEQUAL}
  2520. D3DPCMPCAPS_GREATER = $00000010;
  2521. {$EXTERNALSYM D3DPCMPCAPS_GREATER}
  2522. D3DPCMPCAPS_NOTEQUAL = $00000020;
  2523. {$EXTERNALSYM D3DPCMPCAPS_NOTEQUAL}
  2524. D3DPCMPCAPS_GREATEREQUAL = $00000040;
  2525. {$EXTERNALSYM D3DPCMPCAPS_GREATEREQUAL}
  2526. D3DPCMPCAPS_ALWAYS = $00000080;
  2527. {$EXTERNALSYM D3DPCMPCAPS_ALWAYS}
  2528. (* TD3DPrimCaps dwSourceBlendCaps, dwDestBlendCaps *)
  2529. D3DPBLENDCAPS_ZERO = $00000001;
  2530. {$EXTERNALSYM D3DPBLENDCAPS_ZERO}
  2531. D3DPBLENDCAPS_ONE = $00000002;
  2532. {$EXTERNALSYM D3DPBLENDCAPS_ONE}
  2533. D3DPBLENDCAPS_SRCCOLOR = $00000004;
  2534. {$EXTERNALSYM D3DPBLENDCAPS_SRCCOLOR}
  2535. D3DPBLENDCAPS_INVSRCCOLOR = $00000008;
  2536. {$EXTERNALSYM D3DPBLENDCAPS_INVSRCCOLOR}
  2537. D3DPBLENDCAPS_SRCALPHA = $00000010;
  2538. {$EXTERNALSYM D3DPBLENDCAPS_SRCALPHA}
  2539. D3DPBLENDCAPS_INVSRCALPHA = $00000020;
  2540. {$EXTERNALSYM D3DPBLENDCAPS_INVSRCALPHA}
  2541. D3DPBLENDCAPS_DESTALPHA = $00000040;
  2542. {$EXTERNALSYM D3DPBLENDCAPS_DESTALPHA}
  2543. D3DPBLENDCAPS_INVDESTALPHA = $00000080;
  2544. {$EXTERNALSYM D3DPBLENDCAPS_INVDESTALPHA}
  2545. D3DPBLENDCAPS_DESTCOLOR = $00000100;
  2546. {$EXTERNALSYM D3DPBLENDCAPS_DESTCOLOR}
  2547. D3DPBLENDCAPS_INVDESTCOLOR = $00000200;
  2548. {$EXTERNALSYM D3DPBLENDCAPS_INVDESTCOLOR}
  2549. D3DPBLENDCAPS_SRCALPHASAT = $00000400;
  2550. {$EXTERNALSYM D3DPBLENDCAPS_SRCALPHASAT}
  2551. D3DPBLENDCAPS_BOTHSRCALPHA = $00000800;
  2552. {$EXTERNALSYM D3DPBLENDCAPS_BOTHSRCALPHA}
  2553. D3DPBLENDCAPS_BOTHINVSRCALPHA = $00001000;
  2554. {$EXTERNALSYM D3DPBLENDCAPS_BOTHINVSRCALPHA}
  2555. (* TD3DPrimCaps dwShadeCaps *)
  2556. D3DPSHADECAPS_COLORFLATMONO = $00000001;
  2557. {$EXTERNALSYM D3DPSHADECAPS_COLORFLATMONO}
  2558. D3DPSHADECAPS_COLORFLATRGB = $00000002;
  2559. {$EXTERNALSYM D3DPSHADECAPS_COLORFLATRGB}
  2560. D3DPSHADECAPS_COLORGOURAUDMONO = $00000004;
  2561. {$EXTERNALSYM D3DPSHADECAPS_COLORGOURAUDMONO}
  2562. D3DPSHADECAPS_COLORGOURAUDRGB = $00000008;
  2563. {$EXTERNALSYM D3DPSHADECAPS_COLORGOURAUDRGB}
  2564. D3DPSHADECAPS_COLORPHONGMONO = $00000010;
  2565. {$EXTERNALSYM D3DPSHADECAPS_COLORPHONGMONO}
  2566. D3DPSHADECAPS_COLORPHONGRGB = $00000020;
  2567. {$EXTERNALSYM D3DPSHADECAPS_COLORPHONGRGB}
  2568. D3DPSHADECAPS_SPECULARFLATMONO = $00000040;
  2569. {$EXTERNALSYM D3DPSHADECAPS_SPECULARFLATMONO}
  2570. D3DPSHADECAPS_SPECULARFLATRGB = $00000080;
  2571. {$EXTERNALSYM D3DPSHADECAPS_SPECULARFLATRGB}
  2572. D3DPSHADECAPS_SPECULARGOURAUDMONO = $00000100;
  2573. {$EXTERNALSYM D3DPSHADECAPS_SPECULARGOURAUDMONO}
  2574. D3DPSHADECAPS_SPECULARGOURAUDRGB = $00000200;
  2575. {$EXTERNALSYM D3DPSHADECAPS_SPECULARGOURAUDRGB}
  2576. D3DPSHADECAPS_SPECULARPHONGMONO = $00000400;
  2577. {$EXTERNALSYM D3DPSHADECAPS_SPECULARPHONGMONO}
  2578. D3DPSHADECAPS_SPECULARPHONGRGB = $00000800;
  2579. {$EXTERNALSYM D3DPSHADECAPS_SPECULARPHONGRGB}
  2580. D3DPSHADECAPS_ALPHAFLATBLEND = $00001000;
  2581. {$EXTERNALSYM D3DPSHADECAPS_ALPHAFLATBLEND}
  2582. D3DPSHADECAPS_ALPHAFLATSTIPPLED = $00002000;
  2583. {$EXTERNALSYM D3DPSHADECAPS_ALPHAFLATSTIPPLED}
  2584. D3DPSHADECAPS_ALPHAGOURAUDBLEND = $00004000;
  2585. {$EXTERNALSYM D3DPSHADECAPS_ALPHAGOURAUDBLEND}
  2586. D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED = $00008000;
  2587. {$EXTERNALSYM D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED}
  2588. D3DPSHADECAPS_ALPHAPHONGBLEND = $00010000;
  2589. {$EXTERNALSYM D3DPSHADECAPS_ALPHAPHONGBLEND}
  2590. D3DPSHADECAPS_ALPHAPHONGSTIPPLED = $00020000;
  2591. {$EXTERNALSYM D3DPSHADECAPS_ALPHAPHONGSTIPPLED}
  2592. D3DPSHADECAPS_FOGFLAT = $00040000;
  2593. {$EXTERNALSYM D3DPSHADECAPS_FOGFLAT}
  2594. D3DPSHADECAPS_FOGGOURAUD = $00080000;
  2595. {$EXTERNALSYM D3DPSHADECAPS_FOGGOURAUD}
  2596. D3DPSHADECAPS_FOGPHONG = $00100000;
  2597. {$EXTERNALSYM D3DPSHADECAPS_FOGPHONG}
  2598. (* TD3DPrimCaps dwTextureCaps *)
  2599. (*
  2600. * Perspective-correct texturing is supported
  2601. *)
  2602. D3DPTEXTURECAPS_PERSPECTIVE = $00000001;
  2603. {$EXTERNALSYM D3DPTEXTURECAPS_PERSPECTIVE}
  2604. (*
  2605. * Power-of-2 texture dimensions are required
  2606. *)
  2607. D3DPTEXTURECAPS_POW2 = $00000002;
  2608. {$EXTERNALSYM D3DPTEXTURECAPS_POW2}
  2609. (*
  2610. * Alpha in texture pixels is supported
  2611. *)
  2612. D3DPTEXTURECAPS_ALPHA = $00000004;
  2613. {$EXTERNALSYM D3DPTEXTURECAPS_ALPHA}
  2614. (*
  2615. * Color-keyed textures are supported
  2616. *)
  2617. D3DPTEXTURECAPS_TRANSPARENCY = $00000008;
  2618. {$EXTERNALSYM D3DPTEXTURECAPS_TRANSPARENCY}
  2619. (*
  2620. * obsolete, see D3DPTADDRESSCAPS_BORDER
  2621. *)
  2622. D3DPTEXTURECAPS_BORDER = $00000010;
  2623. {$EXTERNALSYM D3DPTEXTURECAPS_BORDER}
  2624. (*
  2625. * Only square textures are supported
  2626. *)
  2627. D3DPTEXTURECAPS_SQUAREONLY = $00000020;
  2628. {$EXTERNALSYM D3DPTEXTURECAPS_SQUAREONLY}
  2629. {$IFDEF DIRECT3D_VERSION_6}
  2630. (*
  2631. * Texture indices are not scaled by the texture size prior
  2632. * to interpolation.
  2633. *)
  2634. D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE = $00000040;
  2635. {$EXTERNALSYM D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE}
  2636. (*
  2637. * Device can draw alpha from texture palettes
  2638. *)
  2639. D3DPTEXTURECAPS_ALPHAPALETTE = $00000080;
  2640. {$EXTERNALSYM D3DPTEXTURECAPS_ALPHAPALETTE}
  2641. (*
  2642. * Device can use non-POW2 textures if:
  2643. * 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
  2644. * 2) D3DRS_WRAP(N) is zero for this texture's coordinates
  2645. * 3) mip mapping is not enabled (use magnification filter only)
  2646. *)
  2647. D3DPTEXTURECAPS_NONPOW2CONDITIONAL = $00000100;
  2648. {$EXTERNALSYM D3DPTEXTURECAPS_NONPOW2CONDITIONAL}
  2649. {$ENDIF} // DIRECT3D_VERSION_6
  2650. {$IFDEF DIRECT3D_VERSION_7}
  2651. // 0x00000200L unused
  2652. (*
  2653. * Device can divide transformed texture coordinates by the
  2654. * COUNTth texture coordinate (can do D3DTTFF_PROJECTED)
  2655. *)
  2656. D3DPTEXTURECAPS_PROJECTED = $00000400;
  2657. {$EXTERNALSYM D3DPTEXTURECAPS_PROJECTED}
  2658. (*
  2659. * Device can do cubemap textures
  2660. *)
  2661. D3DPTEXTURECAPS_CUBEMAP = $00000800;
  2662. {$EXTERNALSYM D3DPTEXTURECAPS_CUBEMAP}
  2663. D3DPTEXTURECAPS_COLORKEYBLEND = $00001000;
  2664. {$EXTERNALSYM D3DPTEXTURECAPS_COLORKEYBLEND}
  2665. {$ENDIF} // DIRECT3D_VERSION_7
  2666. (* TD3DPrimCaps dwTextureFilterCaps *)
  2667. D3DPTFILTERCAPS_NEAREST = $00000001;
  2668. {$EXTERNALSYM D3DPTFILTERCAPS_NEAREST}
  2669. D3DPTFILTERCAPS_LINEAR = $00000002;
  2670. {$EXTERNALSYM D3DPTFILTERCAPS_LINEAR}
  2671. D3DPTFILTERCAPS_MIPNEAREST = $00000004;
  2672. {$EXTERNALSYM D3DPTFILTERCAPS_MIPNEAREST}
  2673. D3DPTFILTERCAPS_MIPLINEAR = $00000008;
  2674. {$EXTERNALSYM D3DPTFILTERCAPS_MIPLINEAR}
  2675. D3DPTFILTERCAPS_LINEARMIPNEAREST = $00000010;
  2676. {$EXTERNALSYM D3DPTFILTERCAPS_LINEARMIPNEAREST}
  2677. D3DPTFILTERCAPS_LINEARMIPLINEAR = $00000020;
  2678. {$EXTERNALSYM D3DPTFILTERCAPS_LINEARMIPLINEAR}
  2679. {$IFDEF DIRECT3D_VERSION_6}
  2680. (* Device3 Min Filter *)
  2681. D3DPTFILTERCAPS_MINFPOINT = $00000100;
  2682. {$EXTERNALSYM D3DPTFILTERCAPS_MINFPOINT}
  2683. D3DPTFILTERCAPS_MINFLINEAR = $00000200;
  2684. {$EXTERNALSYM D3DPTFILTERCAPS_MINFLINEAR}
  2685. D3DPTFILTERCAPS_MINFANISOTROPIC = $00000400;
  2686. {$EXTERNALSYM D3DPTFILTERCAPS_MINFANISOTROPIC}
  2687. (* Device3 Mip Filter *)
  2688. D3DPTFILTERCAPS_MIPFPOINT = $00010000;
  2689. {$EXTERNALSYM D3DPTFILTERCAPS_MIPFPOINT}
  2690. D3DPTFILTERCAPS_MIPFLINEAR = $00020000;
  2691. {$EXTERNALSYM D3DPTFILTERCAPS_MIPFLINEAR}
  2692. (* Device3 Mag Filter *)
  2693. D3DPTFILTERCAPS_MAGFPOINT = $01000000;
  2694. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFPOINT}
  2695. D3DPTFILTERCAPS_MAGFLINEAR = $02000000;
  2696. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFLINEAR}
  2697. D3DPTFILTERCAPS_MAGFANISOTROPIC = $04000000;
  2698. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFANISOTROPIC}
  2699. D3DPTFILTERCAPS_MAGFAFLATCUBIC = $08000000;
  2700. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFAFLATCUBIC}
  2701. D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC = $10000000;
  2702. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC}
  2703. {$ENDIF} // DIRECT3D_VERSION_6
  2704. (* TD3DPrimCaps dwTextureBlendCaps *)
  2705. D3DPTBLENDCAPS_DECAL = $00000001;
  2706. {$EXTERNALSYM D3DPTBLENDCAPS_DECAL}
  2707. D3DPTBLENDCAPS_MODULATE = $00000002;
  2708. {$EXTERNALSYM D3DPTBLENDCAPS_MODULATE}
  2709. D3DPTBLENDCAPS_DECALALPHA = $00000004;
  2710. {$EXTERNALSYM D3DPTBLENDCAPS_DECALALPHA}
  2711. D3DPTBLENDCAPS_MODULATEALPHA = $00000008;
  2712. {$EXTERNALSYM D3DPTBLENDCAPS_MODULATEALPHA}
  2713. D3DPTBLENDCAPS_DECALMASK = $00000010;
  2714. {$EXTERNALSYM D3DPTBLENDCAPS_DECALMASK}
  2715. D3DPTBLENDCAPS_MODULATEMASK = $00000020;
  2716. {$EXTERNALSYM D3DPTBLENDCAPS_MODULATEMASK}
  2717. D3DPTBLENDCAPS_COPY = $00000040;
  2718. {$EXTERNALSYM D3DPTBLENDCAPS_COPY}
  2719. {$IFDEF DIRECT3D_VERSION_5}
  2720. D3DPTBLENDCAPS_ADD = $00000080;
  2721. {$EXTERNALSYM D3DPTBLENDCAPS_ADD}
  2722. {$ENDIF} // DIRECT3D_VERSION_5
  2723. (* TD3DPrimCaps dwTextureAddressCaps *)
  2724. D3DPTADDRESSCAPS_WRAP = $00000001;
  2725. {$EXTERNALSYM D3DPTADDRESSCAPS_WRAP}
  2726. D3DPTADDRESSCAPS_MIRROR = $00000002;
  2727. {$EXTERNALSYM D3DPTADDRESSCAPS_MIRROR}
  2728. D3DPTADDRESSCAPS_CLAMP = $00000004;
  2729. {$EXTERNALSYM D3DPTADDRESSCAPS_CLAMP}
  2730. {$IFDEF DIRECT3D_VERSION_5}
  2731. D3DPTADDRESSCAPS_BORDER = $00000008;
  2732. {$EXTERNALSYM D3DPTADDRESSCAPS_BORDER}
  2733. D3DPTADDRESSCAPS_INDEPENDENTUV = $00000010;
  2734. {$EXTERNALSYM D3DPTADDRESSCAPS_INDEPENDENTUV}
  2735. {$ENDIF} // DIRECT3D_VERSION_5
  2736. {$IFDEF DIRECT3D_VERSION_6}
  2737. (* D3DDEVICEDESC dwStencilCaps *)
  2738. D3DSTENCILCAPS_KEEP = $00000001;
  2739. {$EXTERNALSYM D3DSTENCILCAPS_KEEP}
  2740. D3DSTENCILCAPS_ZERO = $00000002;
  2741. {$EXTERNALSYM D3DSTENCILCAPS_ZERO}
  2742. D3DSTENCILCAPS_REPLACE = $00000004;
  2743. {$EXTERNALSYM D3DSTENCILCAPS_REPLACE}
  2744. D3DSTENCILCAPS_INCRSAT = $00000008;
  2745. {$EXTERNALSYM D3DSTENCILCAPS_INCRSAT}
  2746. D3DSTENCILCAPS_DECRSAT = $00000010;
  2747. {$EXTERNALSYM D3DSTENCILCAPS_DECRSAT}
  2748. D3DSTENCILCAPS_INVERT = $00000020;
  2749. {$EXTERNALSYM D3DSTENCILCAPS_INVERT}
  2750. D3DSTENCILCAPS_INCR = $00000040;
  2751. {$EXTERNALSYM D3DSTENCILCAPS_INCR}
  2752. D3DSTENCILCAPS_DECR = $00000080;
  2753. {$EXTERNALSYM D3DSTENCILCAPS_DECR}
  2754. (* D3DDEVICEDESC dwTextureOpCaps *)
  2755. D3DTEXOPCAPS_DISABLE = $00000001;
  2756. {$EXTERNALSYM D3DTEXOPCAPS_DISABLE}
  2757. D3DTEXOPCAPS_SELECTARG1 = $00000002;
  2758. {$EXTERNALSYM D3DTEXOPCAPS_SELECTARG1}
  2759. D3DTEXOPCAPS_SELECTARG2 = $00000004;
  2760. {$EXTERNALSYM D3DTEXOPCAPS_SELECTARG2}
  2761. D3DTEXOPCAPS_MODULATE = $00000008;
  2762. {$EXTERNALSYM D3DTEXOPCAPS_MODULATE}
  2763. D3DTEXOPCAPS_MODULATE2X = $00000010;
  2764. {$EXTERNALSYM D3DTEXOPCAPS_MODULATE2X}
  2765. D3DTEXOPCAPS_MODULATE4X = $00000020;
  2766. {$EXTERNALSYM D3DTEXOPCAPS_MODULATE4X}
  2767. D3DTEXOPCAPS_ADD = $00000040;
  2768. {$EXTERNALSYM D3DTEXOPCAPS_ADD}
  2769. D3DTEXOPCAPS_ADDSIGNED = $00000080;
  2770. {$EXTERNALSYM D3DTEXOPCAPS_ADDSIGNED}
  2771. D3DTEXOPCAPS_ADDSIGNED2X = $00000100;
  2772. {$EXTERNALSYM D3DTEXOPCAPS_ADDSIGNED2X}
  2773. D3DTEXOPCAPS_SUBTRACT = $00000200;
  2774. {$EXTERNALSYM D3DTEXOPCAPS_SUBTRACT}
  2775. D3DTEXOPCAPS_ADDSMOOTH = $00000400;
  2776. {$EXTERNALSYM D3DTEXOPCAPS_ADDSMOOTH}
  2777. D3DTEXOPCAPS_BLENDDIFFUSEALPHA = $00000800;
  2778. {$EXTERNALSYM D3DTEXOPCAPS_BLENDDIFFUSEALPHA}
  2779. D3DTEXOPCAPS_BLENDTEXTUREALPHA = $00001000;
  2780. {$EXTERNALSYM D3DTEXOPCAPS_BLENDTEXTUREALPHA}
  2781. D3DTEXOPCAPS_BLENDFACTORALPHA = $00002000;
  2782. {$EXTERNALSYM D3DTEXOPCAPS_BLENDFACTORALPHA}
  2783. D3DTEXOPCAPS_BLENDTEXTUREALPHAPM = $00004000;
  2784. {$EXTERNALSYM D3DTEXOPCAPS_BLENDTEXTUREALPHAPM}
  2785. D3DTEXOPCAPS_BLENDCURRENTALPHA = $00008000;
  2786. {$EXTERNALSYM D3DTEXOPCAPS_BLENDCURRENTALPHA}
  2787. D3DTEXOPCAPS_PREMODULATE = $00010000;
  2788. {$EXTERNALSYM D3DTEXOPCAPS_PREMODULATE}
  2789. D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR = $00020000;
  2790. {$EXTERNALSYM D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR}
  2791. D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA = $00040000;
  2792. {$EXTERNALSYM D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA}
  2793. D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR = $00080000;
  2794. {$EXTERNALSYM D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR}
  2795. D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA = $00100000;
  2796. {$EXTERNALSYM D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA}
  2797. D3DTEXOPCAPS_BUMPENVMAP = $00200000;
  2798. {$EXTERNALSYM D3DTEXOPCAPS_BUMPENVMAP}
  2799. D3DTEXOPCAPS_BUMPENVMAPLUMINANCE = $00400000;
  2800. {$EXTERNALSYM D3DTEXOPCAPS_BUMPENVMAPLUMINANCE}
  2801. D3DTEXOPCAPS_DOTPRODUCT3 = $00800000;
  2802. {$EXTERNALSYM D3DTEXOPCAPS_DOTPRODUCT3}
  2803. (* D3DDEVICEDESC dwFVFCaps flags *)
  2804. D3DFVFCAPS_TEXCOORDCOUNTMASK = $0000ffff; (* mask for texture coordinate count field *)
  2805. {$EXTERNALSYM D3DFVFCAPS_TEXCOORDCOUNTMASK}
  2806. D3DFVFCAPS_DONOTSTRIPELEMENTS = $00080000; (* Device prefers that vertex elements not be stripped *)
  2807. {$EXTERNALSYM D3DFVFCAPS_DONOTSTRIPELEMENTS}
  2808. {$ENDIF} // DIRECT3D_VERSION_6
  2809. (*
  2810. * Description for a device.
  2811. * This is used to describe a device that is to be created or to query
  2812. * the current device.
  2813. *)
  2814. type
  2815. PD3DDeviceDesc = ^TD3DDeviceDesc;
  2816. _D3DDeviceDesc = packed record
  2817. dwSize: DWORD; (* Size of TD3DDeviceDesc structure *)
  2818. dwFlags: DWORD; (* Indicates which fields have valid data *)
  2819. dcmColorModel: TD3DColorModel; (* Color model of device *)
  2820. dwDevCaps: DWORD; (* Capabilities of device *)
  2821. dtcTransformCaps: TD3DTransformCaps; (* Capabilities of transform *)
  2822. bClipping: BOOL; (* Device can do 3D clipping *)
  2823. dlcLightingCaps: TD3DLightingCaps; (* Capabilities of lighting *)
  2824. dpcLineCaps: TD3DPrimCaps;
  2825. dpcTriCaps: TD3DPrimCaps;
  2826. dwDeviceRenderBitDepth: DWORD; (* One of DDBB_8, 16, etc.. *)
  2827. dwDeviceZBufferBitDepth: DWORD; (* One of DDBD_16, 32, etc.. *)
  2828. dwMaxBufferSize: DWORD; (* Maximum execute buffer size *)
  2829. dwMaxVertexCount: DWORD; (* Maximum vertex count *)
  2830. {$IFDEF DIRECT3D_VERSION_5}
  2831. // *** New fields for DX5 *** //
  2832. // Width and height caps are 0 for legacy HALs.
  2833. dwMinTextureWidth, dwMinTextureHeight : DWORD;
  2834. dwMaxTextureWidth, dwMaxTextureHeight : DWORD;
  2835. dwMinStippleWidth, dwMaxStippleWidth : DWORD;
  2836. dwMinStippleHeight, dwMaxStippleHeight : DWORD;
  2837. {$ENDIF} // DIRECT3D_VERSION_5
  2838. {$IFDEF DIRECT3D_VERSION_6}
  2839. // New fields for DX6
  2840. dwMaxTextureRepeat : DWORD;
  2841. dwMaxTextureAspectRatio : DWORD;
  2842. dwMaxAnisotropy : DWORD;
  2843. // Guard band that the rasterizer can accommodate
  2844. // Screen-space vertices inside this space but outside the viewport
  2845. // will get clipped properly.
  2846. dvGuardBandLeft : TD3DValue;
  2847. dvGuardBandTop : TD3DValue;
  2848. dvGuardBandRight : TD3DValue;
  2849. dvGuardBandBottom : TD3DValue;
  2850. dvExtentsAdjust : TD3DValue;
  2851. dwStencilCaps : DWORD;
  2852. dwFVFCaps : DWORD; (* low 4 bits: 0 implies TLVERTEX only, 1..8 imply FVF aware *)
  2853. dwTextureOpCaps : DWORD;
  2854. wMaxTextureBlendStages : WORD;
  2855. wMaxSimultaneousTextures : WORD;
  2856. {$ENDIF} // DIRECT3D_VERSION_6
  2857. end;
  2858. {$EXTERNALSYM _D3DDeviceDesc}
  2859. D3DDeviceDesc = _D3DDeviceDesc;
  2860. {$EXTERNALSYM D3DDeviceDesc}
  2861. TD3DDeviceDesc = _D3DDeviceDesc;
  2862. {$IFDEF DIRECT3D_VERSION_7}
  2863. PD3DDeviceDesc7 = ^TD3DDeviceDesc7;
  2864. _D3DDeviceDesc7 = packed record
  2865. dwDevCaps: DWORD; (* Capabilities of device *)
  2866. dpcLineCaps: TD3DPrimCaps;
  2867. dpcTriCaps: TD3DPrimCaps;
  2868. dwDeviceRenderBitDepth: DWORD; (* One of DDBB_8, 16, etc.. *)
  2869. dwDeviceZBufferBitDepth: DWORD; (* One of DDBD_16, 32, etc.. *)
  2870. dwMinTextureWidth, dwMinTextureHeight: DWORD;
  2871. dwMaxTextureWidth, dwMaxTextureHeight: DWORD;
  2872. dwMaxTextureRepeat: DWORD;
  2873. dwMaxTextureAspectRatio: DWORD;
  2874. dwMaxAnisotropy: DWORD;
  2875. dvGuardBandLeft: TD3DValue;
  2876. dvGuardBandTop: TD3DValue;
  2877. dvGuardBandRight: TD3DValue;
  2878. dvGuardBandBottom: TD3DValue;
  2879. dvExtentsAdjust: TD3DValue;
  2880. dwStencilCaps: DWORD;
  2881. dwFVFCaps: DWORD;
  2882. dwTextureOpCaps: DWORD;
  2883. wMaxTextureBlendStages: WORD;
  2884. wMaxSimultaneousTextures: WORD;
  2885. dwMaxActiveLights: DWORD;
  2886. dvMaxVertexW: TD3DValue;
  2887. deviceGUID: TGUID;
  2888. wMaxUserClipPlanes: WORD;
  2889. wMaxVertexBlendMatrices: WORD;
  2890. dwVertexProcessingCaps: DWORD;
  2891. dwReserved1: DWORD;
  2892. dwReserved2: DWORD;
  2893. dwReserved3: DWORD;
  2894. dwReserved4: DWORD;
  2895. end;
  2896. {$EXTERNALSYM _D3DDeviceDesc7}
  2897. D3DDeviceDesc7 = _D3DDeviceDesc7;
  2898. {$EXTERNALSYM D3DDeviceDesc7}
  2899. TD3DDeviceDesc7 = _D3DDeviceDesc7;
  2900. {$ENDIF} // DIRECT3D_VERSION_7
  2901. const
  2902. D3DDEVICEDESCSIZE = SizeOf(TD3DDeviceDesc);
  2903. {$EXTERNALSYM D3DDEVICEDESCSIZE}
  2904. {$IFDEF DIRECT3D_VERSION_7} // There is the BUG in C++Headers
  2905. D3DDEVICEDESC7SIZE = SizeOf(TD3DDeviceDesc7);
  2906. {$EXTERNALSYM D3DDEVICEDESC7SIZE}
  2907. {$ENDIF} // DIRECT3D_VERSION_7
  2908. type
  2909. TD3DEnumDevicesCallbackA = function (lpGuid: PGUID; // nil for the default device
  2910. lpDeviceDescription: PAnsiChar; lpDeviceName: PAnsiChar;
  2911. var lpD3DHWDeviceDesc: TD3DDeviceDesc;
  2912. var lpD3DHELDeviceDesc: TD3DDeviceDesc;
  2913. lpContext: Pointer): HResult; stdcall;
  2914. TD3DEnumDevicesCallback = TD3DEnumDevicesCallbackA;
  2915. {$NODEFINE TD3DEnumDevicesCallbackA}
  2916. {$NODEFINE TD3DEnumDevicesCallback}
  2917. {$IFDEF DIRECT3D_VERSION_7}
  2918. TD3DEnumDevicesCallback7A = function (
  2919. lpDeviceDescription: PAnsiChar; lpDeviceName: PAnsiChar;
  2920. const lpD3DDeviceDesc: TD3DDeviceDesc7; lpContext: Pointer): HResult; stdcall;
  2921. TD3DEnumDevicesCallback7 = TD3DEnumDevicesCallback7A;
  2922. {$NODEFINE TD3DEnumDevicesCallback7A}
  2923. {$NODEFINE TD3DEnumDevicesCallback7}
  2924. {$ENDIF} // DIRECT3D_VERSION_7
  2925. (* TD3DDeviceDesc dwFlags indicating valid fields *)
  2926. const
  2927. D3DDD_COLORMODEL = $00000001; (* dcmColorModel is valid *)
  2928. {$EXTERNALSYM D3DDD_COLORMODEL}
  2929. D3DDD_DEVCAPS = $00000002; (* dwDevCaps is valid *)
  2930. {$EXTERNALSYM D3DDD_DEVCAPS}
  2931. D3DDD_TRANSFORMCAPS = $00000004; (* dtcTransformCaps is valid *)
  2932. {$EXTERNALSYM D3DDD_TRANSFORMCAPS}
  2933. D3DDD_LIGHTINGCAPS = $00000008; (* dlcLightingCaps is valid *)
  2934. {$EXTERNALSYM D3DDD_LIGHTINGCAPS}
  2935. D3DDD_BCLIPPING = $00000010; (* bClipping is valid *)
  2936. {$EXTERNALSYM D3DDD_BCLIPPING}
  2937. D3DDD_LINECAPS = $00000020; (* dpcLineCaps is valid *)
  2938. {$EXTERNALSYM D3DDD_LINECAPS}
  2939. D3DDD_TRICAPS = $00000040; (* dpcTriCaps is valid *)
  2940. {$EXTERNALSYM D3DDD_TRICAPS}
  2941. D3DDD_DEVICERENDERBITDEPTH = $00000080; (* dwDeviceRenderBitDepth is valid *)
  2942. {$EXTERNALSYM D3DDD_DEVICERENDERBITDEPTH}
  2943. D3DDD_DEVICEZBUFFERBITDEPTH = $00000100; (* dwDeviceZBufferBitDepth is valid *)
  2944. {$EXTERNALSYM D3DDD_DEVICEZBUFFERBITDEPTH}
  2945. D3DDD_MAXBUFFERSIZE = $00000200; (* dwMaxBufferSize is valid *)
  2946. {$EXTERNALSYM D3DDD_MAXBUFFERSIZE}
  2947. D3DDD_MAXVERTEXCOUNT = $00000400; (* dwMaxVertexCount is valid *)
  2948. {$EXTERNALSYM D3DDD_MAXVERTEXCOUNT}
  2949. (* TD3DDeviceDesc dwDevCaps flags *)
  2950. D3DDEVCAPS_FLOATTLVERTEX = $00000001; (* Device accepts floating point *)
  2951. (* for post-transform vertex data *)
  2952. {$EXTERNALSYM D3DDEVCAPS_FLOATTLVERTEX}
  2953. D3DDEVCAPS_SORTINCREASINGZ = $00000002; (* Device needs data sorted for increasing Z*)
  2954. {$EXTERNALSYM D3DDEVCAPS_SORTINCREASINGZ}
  2955. D3DDEVCAPS_SORTDECREASINGZ = $00000004; (* Device needs data sorted for decreasing Z*)
  2956. {$EXTERNALSYM D3DDEVCAPS_SORTDECREASINGZ}
  2957. D3DDEVCAPS_SORTEXACT = $00000008; (* Device needs data sorted exactly *)
  2958. {$EXTERNALSYM D3DDEVCAPS_SORTEXACT}
  2959. D3DDEVCAPS_EXECUTESYSTEMMEMORY = $00000010; (* Device can use execute buffers from system memory *)
  2960. {$EXTERNALSYM D3DDEVCAPS_EXECUTESYSTEMMEMORY}
  2961. D3DDEVCAPS_EXECUTEVIDEOMEMORY = $00000020; (* Device can use execute buffers from video memory *)
  2962. {$EXTERNALSYM D3DDEVCAPS_EXECUTEVIDEOMEMORY}
  2963. D3DDEVCAPS_TLVERTEXSYSTEMMEMORY = $00000040; (* Device can use TL buffers from system memory *)
  2964. {$EXTERNALSYM D3DDEVCAPS_TLVERTEXSYSTEMMEMORY}
  2965. D3DDEVCAPS_TLVERTEXVIDEOMEMORY = $00000080; (* Device can use TL buffers from video memory *)
  2966. {$EXTERNALSYM D3DDEVCAPS_TLVERTEXVIDEOMEMORY}
  2967. D3DDEVCAPS_TEXTURESYSTEMMEMORY = $00000100; (* Device can texture from system memory *)
  2968. {$EXTERNALSYM D3DDEVCAPS_TEXTURESYSTEMMEMORY}
  2969. D3DDEVCAPS_TEXTUREVIDEOMEMORY = $00000200; (* Device can texture from device memory *)
  2970. {$EXTERNALSYM D3DDEVCAPS_TEXTUREVIDEOMEMORY}
  2971. {$IFDEF DIRECT3D_VERSION_5}
  2972. D3DDEVCAPS_DRAWPRIMTLVERTEX = $00000400; (* Device can draw TLVERTEX primitives *)
  2973. {$EXTERNALSYM D3DDEVCAPS_DRAWPRIMTLVERTEX}
  2974. D3DDEVCAPS_CANRENDERAFTERFLIP = $00000800; (* Device can render without waiting for flip to complete *)
  2975. {$EXTERNALSYM D3DDEVCAPS_CANRENDERAFTERFLIP}
  2976. D3DDEVCAPS_TEXTURENONLOCALVIDMEM = $00001000; (* Device can texture from nonlocal video memory *)
  2977. {$EXTERNALSYM D3DDEVCAPS_TEXTURENONLOCALVIDMEM}
  2978. {$ENDIF} // DIRECT3D_VERSION_5
  2979. {$IFDEF DIRECT3D_VERSION_6}
  2980. D3DDEVCAPS_DRAWPRIMITIVES2 = $00002000; (* Device can support DrawPrimitives2 *)
  2981. {$EXTERNALSYM D3DDEVCAPS_DRAWPRIMITIVES2}
  2982. D3DDEVCAPS_SEPARATETEXTUREMEMORIES = $00004000; (* Device is texturing from separate memory pools *)
  2983. {$EXTERNALSYM D3DDEVCAPS_SEPARATETEXTUREMEMORIES}
  2984. D3DDEVCAPS_DRAWPRIMITIVES2EX = $00008000; (* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*)
  2985. {$EXTERNALSYM D3DDEVCAPS_DRAWPRIMITIVES2EX}
  2986. {$ENDIF} // DIRECT3D_VERSION_6
  2987. {$IFDEF DIRECT3D_VERSION_7}
  2988. D3DDEVCAPS_HWTRANSFORMANDLIGHT = $00010000; (* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also *)
  2989. {$EXTERNALSYM D3DDEVCAPS_HWTRANSFORMANDLIGHT}
  2990. D3DDEVCAPS_CANBLTSYSTONONLOCAL = $00020000; (* Device supports a Tex Blt from system memory to non-local vidmem *)
  2991. {$EXTERNALSYM D3DDEVCAPS_CANBLTSYSTONONLOCAL}
  2992. D3DDEVCAPS_HWRASTERIZATION = $00080000; (* Device has HW acceleration for rasterization *)
  2993. {$EXTERNALSYM D3DDEVCAPS_HWRASTERIZATION}
  2994. (*
  2995. * These are the flags in the D3DDEVICEDESC7.dwVertexProcessingCaps field
  2996. *)
  2997. (* device can do texgen *)
  2998. D3DVTXPCAPS_TEXGEN = $00000001;
  2999. {$EXTERNALSYM D3DVTXPCAPS_TEXGEN}
  3000. (* device can do IDirect3DDevice7 colormaterialsource ops *)
  3001. D3DVTXPCAPS_MATERIALSOURCE7 = $00000002;
  3002. {$EXTERNALSYM D3DVTXPCAPS_MATERIALSOURCE7}
  3003. (* device can do vertex fog *)
  3004. D3DVTXPCAPS_VERTEXFOG = $00000004;
  3005. {$EXTERNALSYM D3DVTXPCAPS_VERTEXFOG}
  3006. (* device can do directional lights *)
  3007. D3DVTXPCAPS_DIRECTIONALLIGHTS = $00000008;
  3008. {$EXTERNALSYM D3DVTXPCAPS_DIRECTIONALLIGHTS}
  3009. (* device can do positional lights (includes point and spot) *)
  3010. D3DVTXPCAPS_POSITIONALLIGHTS = $00000010;
  3011. {$EXTERNALSYM D3DVTXPCAPS_POSITIONALLIGHTS}
  3012. (* device can do local viewer *)
  3013. D3DVTXPCAPS_LOCALVIEWER = $00000020;
  3014. {$EXTERNALSYM D3DVTXPCAPS_LOCALVIEWER}
  3015. {$ENDIF} // DIRECT3D_VERSION_7
  3016. D3DFDS_COLORMODEL = $00000001; (* Match color model *)
  3017. {$EXTERNALSYM D3DFDS_COLORMODEL}
  3018. D3DFDS_GUID = $00000002; (* Match guid *)
  3019. {$EXTERNALSYM D3DFDS_GUID}
  3020. D3DFDS_HARDWARE = $00000004; (* Match hardware/software *)
  3021. {$EXTERNALSYM D3DFDS_HARDWARE}
  3022. D3DFDS_TRIANGLES = $00000008; (* Match in triCaps *)
  3023. {$EXTERNALSYM D3DFDS_TRIANGLES}
  3024. D3DFDS_LINES = $00000010; (* Match in lineCaps *)
  3025. {$EXTERNALSYM D3DFDS_LINES}
  3026. D3DFDS_MISCCAPS = $00000020; (* Match primCaps.dwMiscCaps *)
  3027. {$EXTERNALSYM D3DFDS_MISCCAPS}
  3028. D3DFDS_RASTERCAPS = $00000040; (* Match primCaps.dwRasterCaps *)
  3029. {$EXTERNALSYM D3DFDS_RASTERCAPS}
  3030. D3DFDS_ZCMPCAPS = $00000080; (* Match primCaps.dwZCmpCaps *)
  3031. {$EXTERNALSYM D3DFDS_ZCMPCAPS}
  3032. D3DFDS_ALPHACMPCAPS = $00000100; (* Match primCaps.dwAlphaCmpCaps *)
  3033. {$EXTERNALSYM D3DFDS_ALPHACMPCAPS}
  3034. D3DFDS_SRCBLENDCAPS = $00000200; (* Match primCaps.dwSourceBlendCaps *)
  3035. {$EXTERNALSYM D3DFDS_SRCBLENDCAPS}
  3036. D3DFDS_DSTBLENDCAPS = $00000400; (* Match primCaps.dwDestBlendCaps *)
  3037. {$EXTERNALSYM D3DFDS_DSTBLENDCAPS}
  3038. D3DFDS_SHADECAPS = $00000800; (* Match primCaps.dwShadeCaps *)
  3039. {$EXTERNALSYM D3DFDS_SHADECAPS}
  3040. D3DFDS_TEXTURECAPS = $00001000; (* Match primCaps.dwTextureCaps *)
  3041. {$EXTERNALSYM D3DFDS_TEXTURECAPS}
  3042. D3DFDS_TEXTUREFILTERCAPS = $00002000; (* Match primCaps.dwTextureFilterCaps *)
  3043. {$EXTERNALSYM D3DFDS_TEXTUREFILTERCAPS}
  3044. D3DFDS_TEXTUREBLENDCAPS = $00004000; (* Match primCaps.dwTextureBlendCaps *)
  3045. {$EXTERNALSYM D3DFDS_TEXTUREBLENDCAPS}
  3046. D3DFDS_TEXTUREADDRESSCAPS = $00008000; (* Match primCaps.dwTextureBlendCaps *)
  3047. {$EXTERNALSYM D3DFDS_TEXTUREADDRESSCAPS}
  3048. (*
  3049. * FindDevice arguments
  3050. *)
  3051. type
  3052. PD3DFindDeviceSearch = ^TD3DFindDeviceSearch;
  3053. _D3DFINDDEVICESEARCH = packed record
  3054. dwSize: DWORD;
  3055. dwFlags: DWORD;
  3056. bHardware: BOOL;
  3057. dcmColorModel: TD3DColorModel;
  3058. guid: TGUID;
  3059. dwCaps: DWORD;
  3060. dpcPrimCaps: TD3DPrimCaps;
  3061. end;
  3062. {$EXTERNALSYM _D3DFINDDEVICESEARCH}
  3063. D3DFINDDEVICESEARCH = _D3DFINDDEVICESEARCH;
  3064. {$EXTERNALSYM D3DFINDDEVICESEARCH}
  3065. TD3DFindDeviceSearch = _D3DFINDDEVICESEARCH;
  3066. PD3DFindDeviceResult = ^TD3DFindDeviceResult;
  3067. _D3DFINDDEVICERESULT = packed record
  3068. dwSize: DWORD;
  3069. guid: TGUID; (* guid which matched *)
  3070. ddHwDesc: TD3DDeviceDesc; (* hardware TD3DDeviceDesc *)
  3071. ddSwDesc: TD3DDeviceDesc; (* software TD3DDeviceDesc *)
  3072. end;
  3073. {$EXTERNALSYM _D3DFINDDEVICERESULT}
  3074. D3DFINDDEVICERESULT = _D3DFINDDEVICERESULT;
  3075. {$EXTERNALSYM D3DFINDDEVICERESULT}
  3076. TD3DFindDeviceResult = _D3DFINDDEVICERESULT;
  3077. (*
  3078. * Description of execute buffer.
  3079. *)
  3080. PD3DExecuteBufferDesc = ^TD3DExecuteBufferDesc;
  3081. _D3DExecuteBufferDesc = packed record
  3082. dwSize: DWORD; (* size of this structure *)
  3083. dwFlags: DWORD; (* flags indicating which fields are valid *)
  3084. dwCaps: DWORD; (* capabilities of execute buffer *)
  3085. dwBufferSize: DWORD; (* size of execute buffer data *)
  3086. lpData: Pointer; (* pointer to actual data *)
  3087. end;
  3088. {$EXTERNALSYM _D3DExecuteBufferDesc}
  3089. D3DExecuteBufferDesc = _D3DExecuteBufferDesc;
  3090. {$EXTERNALSYM D3DExecuteBufferDesc}
  3091. TD3DExecuteBufferDesc = _D3DExecuteBufferDesc;
  3092. (* D3DEXECUTEBUFFER dwFlags indicating valid fields *)
  3093. const
  3094. D3DDEB_BUFSIZE = $00000001; (* buffer size valid *)
  3095. {$EXTERNALSYM D3DDEB_BUFSIZE}
  3096. D3DDEB_CAPS = $00000002; (* caps valid *)
  3097. {$EXTERNALSYM D3DDEB_CAPS}
  3098. D3DDEB_LPDATA = $00000004; (* lpData valid *)
  3099. {$EXTERNALSYM D3DDEB_LPDATA}
  3100. (* D3DEXECUTEBUFFER dwCaps *)
  3101. D3DDEBCAPS_SYSTEMMEMORY = $00000001; (* buffer in system memory *)
  3102. {$EXTERNALSYM D3DDEBCAPS_SYSTEMMEMORY}
  3103. D3DDEBCAPS_VIDEOMEMORY = $00000002; (* buffer in device memory *)
  3104. {$EXTERNALSYM D3DDEBCAPS_VIDEOMEMORY}
  3105. D3DDEBCAPS_MEM = (D3DDEBCAPS_SYSTEMMEMORY or D3DDEBCAPS_VIDEOMEMORY);
  3106. {$EXTERNALSYM D3DDEBCAPS_MEM}
  3107. {$IFDEF DIRECT3D_VERSION_LESS_8}
  3108. {$IFDEF DIRECT3D_VERSION_7}
  3109. type
  3110. PD3DDevInfo_TextureManager = ^TD3DDevInfo_TextureManager;
  3111. _D3DDEVINFO_TEXTUREMANAGER = packed record
  3112. bThrashing: BOOL; (* indicates if thrashing *)
  3113. dwApproxBytesDownloaded: DWORD; (* Approximate number of bytes downloaded by texture manager *)
  3114. dwNumEvicts: DWORD; (* number of textures evicted *)
  3115. dwNumVidCreates: DWORD; (* number of textures created in video memory *)
  3116. dwNumTexturesUsed: DWORD; (* number of textures used *)
  3117. dwNumUsedTexInVid: DWORD; (* number of used textures present in video memory *)
  3118. dwWorkingSet: DWORD; (* number of textures in video memory *)
  3119. dwWorkingSetBytes: DWORD; (* number of bytes in video memory *)
  3120. dwTotalManaged: DWORD; (* total number of managed textures *)
  3121. dwTotalBytes: DWORD; (* total number of bytes of managed textures *)
  3122. dwLastPri: DWORD; (* priority of last texture evicted *)
  3123. end;
  3124. {$EXTERNALSYM _D3DDEVINFO_TEXTUREMANAGER}
  3125. D3DDEVINFO_TEXTUREMANAGER = _D3DDEVINFO_TEXTUREMANAGER;
  3126. {$EXTERNALSYM D3DDEVINFO_TEXTUREMANAGER}
  3127. TD3DDevInfo_TextureManager = _D3DDEVINFO_TEXTUREMANAGER;
  3128. PD3DDevInfoTextureManager = PD3DDevInfo_TextureManager;
  3129. TD3DDevInfoTextureManager = _D3DDEVINFO_TEXTUREMANAGER;
  3130. PD3DDevInfo_Texturing = ^TD3DDevInfo_Texturing;
  3131. _D3DDEVINFO_TEXTURING = packed record
  3132. dwNumLoads: DWORD; (* counts Load() API calls *)
  3133. dwApproxBytesLoaded: DWORD; (* Approximate number bytes loaded via Load() *)
  3134. dwNumPreLoads: DWORD; (* counts PreLoad() API calls *)
  3135. dwNumSet: DWORD; (* counts SetTexture() API calls *)
  3136. dwNumCreates: DWORD; (* counts texture creates *)
  3137. dwNumDestroys: DWORD; (* counts texture destroys *)
  3138. dwNumSetPriorities: DWORD; (* counts SetPriority() API calls *)
  3139. dwNumSetLODs: DWORD; (* counts SetLOD() API calls *)
  3140. dwNumLocks: DWORD; (* counts number of texture locks *)
  3141. dwNumGetDCs: DWORD; (* counts number of GetDCs to textures *)
  3142. end;
  3143. {$EXTERNALSYM _D3DDEVINFO_TEXTURING}
  3144. D3DDEVINFO_TEXTURING = _D3DDEVINFO_TEXTURING;
  3145. {$EXTERNALSYM D3DDEVINFO_TEXTURING}
  3146. TD3DDevInfo_Texturing = _D3DDEVINFO_TEXTURING;
  3147. PD3DDevInfoTexturing = PD3DDevInfo_Texturing;
  3148. TD3DDevInfoTexturing = TD3DDevInfo_Texturing;
  3149. {$ENDIF} // DIRECT3D_VERSION_7
  3150. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  3151. (*==========================================================================;
  3152. *
  3153. *
  3154. * File: d3d.h
  3155. * Content: Direct3D include file
  3156. *
  3157. ****************************************************************************)
  3158. // include this file content only if compiling for <=DX7 interfaces
  3159. {$IFDEF DIRECT3D_VERSION_LESS_8}
  3160. function D3DErrorString(Value: HResult): String;
  3161. {$IFDEF DIRECT3D_VERSION_5}
  3162. const
  3163. IID_IDirect3DRampDevice: TGUID =
  3164. (D1:$F2086B20;D2:$259F;D3:$11CF;D4:($A3,$1A,$00,$AA,$00,$B9,$33,$56));
  3165. {$EXTERNALSYM IID_IDirect3DRampDevice}
  3166. IID_IDirect3DRGBDevice: TGUID =
  3167. (D1:$A4665C60;D2:$2673;D3:$11CF;D4:($A3,$1A,$00,$AA,$00,$B9,$33,$56));
  3168. {$EXTERNALSYM IID_IDirect3DRGBDevice}
  3169. IID_IDirect3DHALDevice: TGUID =
  3170. (D1:$84E63dE0;D2:$46AA;D3:$11CF;D4:($81,$6F,$00,$00,$C0,$20,$15,$6E));
  3171. {$EXTERNALSYM IID_IDirect3DHALDevice}
  3172. IID_IDirect3DMMXDevice: TGUID =
  3173. (D1:$881949a1;D2:$d6f3;D3:$11d0;D4:($89,$ab,$00,$a0,$c9,$05,$41,$29));
  3174. {$EXTERNALSYM IID_IDirect3DMMXDevice}
  3175. {$ENDIF} // DIRECT3D_VERSION_5
  3176. {$IFDEF DIRECT3D_VERSION_6}
  3177. IID_IDirect3DRefDevice: TGUID =
  3178. (D1:$50936643;D2:$13e9;D3:$11d1;D4:($89,$aa,$00,$a0,$c9,$05,$41,$29));
  3179. {$EXTERNALSYM IID_IDirect3DRefDevice}
  3180. IID_IDirect3DNullDevice: TGUID =
  3181. (D1:$8767df22;D2:$bacc;D3:$11d1;D4:($89,$69,$00,$a0,$c9,$06,$29,$a8));
  3182. {$EXTERNALSYM IID_IDirect3DNullDevice}
  3183. {$ENDIF} // DIRECT3D_VERSION_6
  3184. {$IFDEF DIRECT3D_VERSION_7}
  3185. IID_IDirect3DTnLHalDevice: TGUID = '{f5049e78-4861-11d2-a407-00a0c90629a8}';
  3186. {$EXTERNALSYM IID_IDirect3DTnLHalDevice}
  3187. {$ENDIF} // DIRECT3D_VERSION_7
  3188. type
  3189. IDirect3D = interface;
  3190. {$EXTERNALSYM IDirect3D}
  3191. {$IFDEF DIRECT3D_VERSION_5}
  3192. IDirect3D2 = interface;
  3193. {$ENDIF} // DIRECT3D_VERSION_5
  3194. {$IFDEF DIRECT3D_VERSION_6}
  3195. IDirect3D3 = interface;
  3196. {$ENDIF} // DIRECT3D_VERSION_5
  3197. {$IFDEF DIRECT3D_VERSION_7}
  3198. IDirect3D7 = interface;
  3199. {$ENDIF} // DIRECT3D_VERSION_5
  3200. IDirect3DDevice = interface;
  3201. {$IFDEF DIRECT3D_VERSION_5}
  3202. IDirect3DDevice2 = interface;
  3203. {$ENDIF} // DIRECT3D_VERSION_5
  3204. {$IFDEF DIRECT3D_VERSION_6}
  3205. IDirect3DDevice3 = interface;
  3206. {$ENDIF} // DIRECT3D_VERSION_6
  3207. {$IFDEF DIRECT3D_VERSION_7}
  3208. IDirect3DDevice7 = interface;
  3209. {$ENDIF} // DIRECT3D_VERSION_7
  3210. IDirect3DExecuteBuffer = interface;
  3211. IDirect3DLight = interface;
  3212. IDirect3DMaterial = interface;
  3213. {$IFDEF DIRECT3D_VERSION_5}
  3214. IDirect3DMaterial2 = interface;
  3215. {$ENDIF} // DIRECT3D_VERSION_5
  3216. {$IFDEF DIRECT3D_VERSION_6}
  3217. IDirect3DMaterial3 = interface;
  3218. {$ENDIF} // DIRECT3D_VERSION_6
  3219. IDirect3DTexture = interface;
  3220. {$IFDEF DIRECT3D_VERSION_5}
  3221. IDirect3DTexture2 = interface;
  3222. {$ENDIF} // DIRECT3D_VERSION_5
  3223. IDirect3DViewport = interface;
  3224. {$IFDEF DIRECT3D_VERSION_5}
  3225. IDirect3DViewport2 = interface;
  3226. {$ENDIF} // DIRECT3D_VERSION_5
  3227. {$IFDEF DIRECT3D_VERSION_6}
  3228. IDirect3DViewport3 = interface;
  3229. IDirect3DVertexBuffer = interface;
  3230. {$ENDIF} // DIRECT3D_VERSION_6
  3231. {$IFDEF DIRECT3D_VERSION_7}
  3232. IDirect3DVertexBuffer7 = interface;
  3233. {$ENDIF} // DIRECT3D_VERSION_7
  3234. (*
  3235. * Interface IID's
  3236. *)
  3237. IID_IDirect3D = IDirect3D;
  3238. {$EXTERNALSYM IID_IDirect3D}
  3239. {$IFDEF DIRECT3D_VERSION_5}
  3240. IID_IDirect3D2 = IDirect3D2;
  3241. {$EXTERNALSYM IID_IDirect3D2}
  3242. {$ENDIF} // DIRECT3D_VERSION_5
  3243. {$IFDEF DIRECT3D_VERSION_6}
  3244. IID_IDirect3D3 = IDirect3D3;
  3245. {$EXTERNALSYM IID_IDirect3D3}
  3246. {$ENDIF} // DIRECT3D_VERSION_6
  3247. {$IFDEF DIRECT3D_VERSION_7}
  3248. IID_IDirect3D7 = IDirect3D7;
  3249. {$EXTERNALSYM IID_IDirect3D7}
  3250. {$ENDIF} // DIRECT3D_VERSION_7
  3251. (*
  3252. * Internal Guid to distinguish requested MMX from MMX being used as an RGB rasterizer
  3253. *)
  3254. IID_IDirect3DDevice = IDirect3DDevice;
  3255. {$EXTERNALSYM IID_IDirect3DDevice}
  3256. {$IFDEF DIRECT3D_VERSION_5}
  3257. IID_IDirect3DDevice2 = IDirect3DDevice2;
  3258. {$EXTERNALSYM IID_IDirect3DDevice2}
  3259. {$ENDIF}
  3260. {$IFDEF DIRECT3D_VERSION_6}
  3261. IID_IDirect3DDevice3 = IDirect3DDevice3;
  3262. {$EXTERNALSYM IID_IDirect3DDevice3}
  3263. {$ENDIF}
  3264. {$IFDEF DIRECT3D_VERSION_7}
  3265. IID_IDirect3DDevice7 = IDirect3DDevice7;
  3266. {$EXTERNALSYM IID_IDirect3DDevice7}
  3267. {$ENDIF}
  3268. IID_IDirect3DTexture = IDirect3DTexture;
  3269. {$EXTERNALSYM IID_IDirect3DTexture}
  3270. {$IFDEF DIRECT3D_VERSION_5}
  3271. IID_IDirect3DTexture2 = IDirect3DTexture2;
  3272. {$EXTERNALSYM IID_IDirect3DTexture2}
  3273. {$ENDIF}
  3274. IID_IDirect3DLight = IDirect3DLight;
  3275. {$EXTERNALSYM IID_IDirect3DLight}
  3276. IID_IDirect3DMaterial = IDirect3DMaterial;
  3277. {$EXTERNALSYM IID_IDirect3DMaterial}
  3278. {$IFDEF DIRECT3D_VERSION_5}
  3279. IID_IDirect3DMaterial2 = IDirect3DMaterial2;
  3280. {$EXTERNALSYM IID_IDirect3DMaterial2}
  3281. {$ENDIF}
  3282. {$IFDEF DIRECT3D_VERSION_6}
  3283. IID_IDirect3DMaterial3 = IDirect3DMaterial3;
  3284. {$EXTERNALSYM IID_IDirect3DMaterial3}
  3285. {$ENDIF}
  3286. IID_IDirect3DExecuteBuffer = IDirect3DExecuteBuffer;
  3287. {$EXTERNALSYM IID_IDirect3DExecuteBuffer}
  3288. IID_IDirect3DViewport = IDirect3DViewport;
  3289. {$EXTERNALSYM IID_IDirect3DViewport}
  3290. {$IFDEF DIRECT3D_VERSION_5}
  3291. IID_IDirect3DViewport2 = IDirect3DViewport2;
  3292. {$EXTERNALSYM IID_IDirect3DViewport2}
  3293. {$ENDIF}
  3294. {$IFDEF DIRECT3D_VERSION_6}
  3295. IID_IDirect3DViewport3 = IDirect3DViewport3;
  3296. {$EXTERNALSYM IID_IDirect3DViewport3}
  3297. {$ENDIF}
  3298. {$IFDEF DIRECT3D_VERSION_6}
  3299. IID_IDirect3DVertexBuffer = IDirect3DVertexBuffer;
  3300. {$EXTERNALSYM IID_IDirect3DVertexBuffer}
  3301. {$ENDIF}
  3302. {$IFDEF DIRECT3D_VERSION_7}
  3303. IID_IDirect3DVertexBuffer7 = IDirect3DVertexBuffer7;
  3304. {$EXTERNALSYM IID_IDirect3DVertexBuffer7}
  3305. {$ENDIF}
  3306. (*
  3307. * Direct3D interfaces
  3308. *)
  3309. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D);'}
  3310. IDirect3D = interface(IUnknown)
  3311. ['{3BBA0080-2421-11CF-A31A-00AA00B93356}']
  3312. (*** IDirect3D methods ***)
  3313. function Initialize(lpREFIID: {REFIID} PGUID): HResult; stdcall;
  3314. function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback;
  3315. lpUserArg: Pointer): HResult; stdcall;
  3316. function CreateLight(var lplpDirect3Dlight: IDirect3DLight;
  3317. pUnkOuter: IUnknown): HResult; stdcall;
  3318. function CreateMaterial(var lplpDirect3DMaterial: IDirect3DMaterial;
  3319. pUnkOuter: IUnknown): HResult; stdcall;
  3320. function CreateViewport(var lplpD3DViewport: IDirect3DViewport;
  3321. pUnkOuter: IUnknown): HResult; stdcall;
  3322. function FindDevice(var lpD3DFDS: TD3DFindDeviceSearch;
  3323. var lpD3DFDR: TD3DFindDeviceResult): HResult; stdcall;
  3324. end;
  3325. {$IFDEF DIRECT3D_VERSION_5}
  3326. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D2);'}
  3327. {$EXTERNALSYM IDirect3D2}
  3328. IDirect3D2 = interface(IUnknown)
  3329. ['{6aae1ec1-662a-11d0-889d-00aa00bbb76a}']
  3330. (*** IDirect3D2 methods ***)
  3331. function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback;
  3332. lpUserArg: Pointer): HResult; stdcall;
  3333. function CreateLight(var lplpDirect3Dlight: IDirect3DLight;
  3334. pUnkOuter: IUnknown): HResult; stdcall;
  3335. function CreateMaterial(var lplpDirect3DMaterial2: IDirect3DMaterial2;
  3336. pUnkOuter: IUnknown): HResult; stdcall;
  3337. function CreateViewport(var lplpD3DViewport2: IDirect3DViewport2;
  3338. pUnkOuter: IUnknown): HResult; stdcall;
  3339. function FindDevice(var lpD3DFDS: TD3DFindDeviceSearch;
  3340. var lpD3DFDR: TD3DFindDeviceResult): HResult; stdcall;
  3341. function CreateDevice(const rclsid: TRefClsID; lpDDS: IDirectDrawSurface;
  3342. out lplpD3DDevice2: IDirect3DDevice2): HResult; stdcall;
  3343. end;
  3344. {$ENDIF} // DIRECT3D_VERSION_5
  3345. {$IFDEF DIRECT3D_VERSION_6}
  3346. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D3);'}
  3347. {$EXTERNALSYM IDirect3D3}
  3348. IDirect3D3 = interface(IUnknown)
  3349. ['{bb223240-e72b-11d0-a9b4-00aa00c0993e}']
  3350. (*** IDirect3D3 methods ***)
  3351. function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback;
  3352. lpUserArg: pointer): HResult; stdcall;
  3353. function CreateLight(var lplpDirect3Dlight: IDirect3DLight;
  3354. pUnkOuter: IUnknown): HResult; stdcall;
  3355. function CreateMaterial(var lplpDirect3DMaterial3: IDirect3DMaterial3;
  3356. pUnkOuter: IUnknown): HResult; stdcall;
  3357. function CreateViewport(var lplpD3DViewport3: IDirect3DViewport3;
  3358. pUnkOuter: IUnknown): HResult; stdcall;
  3359. function FindDevice(var lpD3DFDS: TD3DFindDeviceSearch;
  3360. var lpD3DFDR: TD3DFindDeviceResult): HResult; stdcall;
  3361. function CreateDevice(const rclsid: TRefClsID; lpDDS: IDirectDrawSurface4;
  3362. out lplpD3DDevice: IDirect3DDevice3; pUnkOuter: IUnknown): HResult; stdcall;
  3363. function CreateVertexBuffer(var lpVBDesc: TD3DVertexBufferDesc;
  3364. var lpD3DVertexBuffer: IDirect3DVertexBuffer;
  3365. dwFlags: DWORD; pUnkOuter: IUnknown): HResult; stdcall;
  3366. function EnumZBufferFormats(const riidDevice: TRefClsID; lpEnumCallback:
  3367. TD3DEnumPixelFormatsCallback; lpContext: Pointer): HResult; stdcall;
  3368. function EvictManagedTextures : HResult; stdcall;
  3369. end;
  3370. {$ENDIF} // DIRECT3D_VERSION_6
  3371. {$IFDEF DIRECT3D_VERSION_7}
  3372. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D7);'}
  3373. {$EXTERNALSYM IDirect3D7}
  3374. IDirect3D7 = interface(IUnknown)
  3375. ['{f5049e77-4861-11d2-a407-00a0c90629a8}']
  3376. (*** IDirect3D7 methods ***)
  3377. function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback7;
  3378. lpUserArg: pointer): HResult; stdcall;
  3379. function CreateDevice(const rclsid: TGUID; lpDDS: IDirectDrawSurface7;
  3380. out lplpD3DDevice: IDirect3DDevice7): HResult; stdcall;
  3381. function CreateVertexBuffer(const lpVBDesc: TD3DVertexBufferDesc;
  3382. out lplpD3DVertexBuffer: IDirect3DVertexBuffer7;
  3383. dwFlags: DWORD): HResult; stdcall;
  3384. function EnumZBufferFormats(const riidDevice: TGUID; lpEnumCallback:
  3385. TD3DEnumPixelFormatsCallback; lpContext: pointer): HResult; stdcall;
  3386. function EvictManagedTextures : HResult; stdcall;
  3387. end;
  3388. {$ENDIF} // DIRECT3D_VERSION_7
  3389. (*
  3390. * Direct3D Device interfaces
  3391. *)
  3392. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice);'}
  3393. {$EXTERNALSYM IDirect3DDevice}
  3394. IDirect3DDevice = interface(IUnknown)
  3395. ['{64108800-957d-11d0-89ab-00a0c9054129}']
  3396. (*** IDirect3DDevice methods ***)
  3397. function Initialize(lpd3d: IDirect3D; lpGUID: PGUID;
  3398. var lpd3ddvdesc: TD3DDeviceDesc): HResult; stdcall;
  3399. function GetCaps(var lpD3DHWDevDesc: TD3DDeviceDesc;
  3400. var lpD3DHELDevDesc: TD3DDeviceDesc): HResult; stdcall;
  3401. function SwapTextureHandles(lpD3DTex1: IDirect3DTexture;
  3402. lpD3DTex2: IDirect3DTexture): HResult; stdcall;
  3403. function CreateExecuteBuffer(var lpDesc: TD3DExecuteBufferDesc ;
  3404. var lplpDirect3DExecuteBuffer: IDirect3DExecuteBuffer;
  3405. pUnkOuter: IUnknown): HResult; stdcall;
  3406. function GetStats(var lpD3DStats: TD3DStats): HResult; stdcall;
  3407. function Execute(lpDirect3DExecuteBuffer: IDirect3DExecuteBuffer;
  3408. lpDirect3DViewport: IDirect3DViewport; dwFlags: DWORD): HResult; stdcall;
  3409. function AddViewport(lpDirect3DViewport: IDirect3DViewport): HResult; stdcall;
  3410. function DeleteViewport(lpDirect3DViewport: IDirect3DViewport): HResult; stdcall;
  3411. function NextViewport(lpDirect3DViewport: IDirect3DViewport;
  3412. var lplpDirect3DViewport: IDirect3DViewport; dwFlags: DWORD): HResult; stdcall;
  3413. function Pick(lpDirect3DExecuteBuffer: IDirect3DExecuteBuffer;
  3414. lpDirect3DViewport: IDirect3DViewport; dwFlags: DWORD;
  3415. var lpRect: TD3DRect): HResult; stdcall;
  3416. function GetPickRecords(var lpCount: DWORD;
  3417. var lpD3DPickRec: TD3DPickRecord): HResult; stdcall;
  3418. function EnumTextureFormats(lpd3dEnumTextureProc:
  3419. TD3DEnumTextureFormatsCallback; lpArg: Pointer):
  3420. HResult; stdcall;
  3421. function CreateMatrix(var lpD3DMatHandle: TD3DMatrixHandle): HResult; stdcall;
  3422. function SetMatrix(d3dMatHandle: TD3DMatrixHandle;
  3423. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3424. function GetMatrix(var lpD3DMatHandle: TD3DMatrixHandle;
  3425. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3426. function DeleteMatrix(d3dMatHandle: TD3DMatrixHandle): HResult; stdcall;
  3427. function BeginScene: HResult; stdcall;
  3428. function EndScene: HResult; stdcall;
  3429. function GetDirect3D(var lpD3D: IDirect3D): HResult; stdcall;
  3430. end;
  3431. {$IFDEF DIRECT3D_VERSION_5}
  3432. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice2);'}
  3433. {$EXTERNALSYM IDirect3DDevice2}
  3434. IDirect3DDevice2 = interface(IUnknown)
  3435. ['{93281501-8cf8-11d0-89ab-00a0c9054129}']
  3436. (*** IDirect3DDevice2 methods ***)
  3437. function GetCaps(var lpD3DHWDevDesc: TD3DDeviceDesc;
  3438. var lpD3DHELDevDesc: TD3DDeviceDesc): HResult; stdcall;
  3439. function SwapTextureHandles(lpD3DTex1: IDirect3DTexture2;
  3440. lpD3DTex2: IDirect3DTexture2): HResult; stdcall;
  3441. function GetStats(var lpD3DStats: TD3DStats): HResult; stdcall;
  3442. function AddViewport(lpDirect3DViewport2: IDirect3DViewport2): HResult; stdcall;
  3443. function DeleteViewport(lpDirect3DViewport: IDirect3DViewport2): HResult; stdcall;
  3444. function NextViewport(lpDirect3DViewport: IDirect3DViewport2;
  3445. var lplpDirect3DViewport: IDirect3DViewport2; dwFlags: DWORD):
  3446. HResult; stdcall;
  3447. function EnumTextureFormats(
  3448. lpd3dEnumTextureProc: TD3DEnumTextureFormatsCallback; lpArg: Pointer):
  3449. HResult; stdcall;
  3450. function BeginScene: HResult; stdcall;
  3451. function EndScene: HResult; stdcall;
  3452. function GetDirect3D(var lpD3D: IDirect3D2): HResult; stdcall;
  3453. (*** DrawPrimitive API ***)
  3454. function SetCurrentViewport(lpd3dViewport2: IDirect3DViewport2)
  3455. : HResult; stdcall;
  3456. function GetCurrentViewport(var lplpd3dViewport2: IDirect3DViewport2)
  3457. : HResult; stdcall;
  3458. function SetRenderTarget(lpNewRenderTarget: IDirectDrawSurface)
  3459. : HResult; stdcall;
  3460. function GetRenderTarget(var lplpNewRenderTarget: IDirectDrawSurface)
  3461. : HResult; stdcall;
  3462. function Begin_(d3dpt: TD3DPrimitiveType; d3dvt: TD3DVertexType;
  3463. dwFlags: DWORD): HResult; stdcall;
  3464. function BeginIndexed(dptPrimitiveType: TD3DPrimitiveType; dvtVertexType:
  3465. TD3DVertexType; lpvVertices: pointer; dwNumVertices: DWORD;
  3466. dwFlags: DWORD): HResult; stdcall;
  3467. function Vertex(lpVertexType: pointer): HResult; stdcall;
  3468. function Index(wVertexIndex: WORD): HResult; stdcall;
  3469. function End_(dwFlags: DWORD): HResult; stdcall;
  3470. function GetRenderState(dwRenderStateType: TD3DRenderStateType;
  3471. var lpdwRenderState): HResult; stdcall;
  3472. function SetRenderState(dwRenderStateType: TD3DRenderStateType;
  3473. dwRenderState: DWORD): HResult; stdcall;
  3474. function GetLightState(dwLightStateType: TD3DLightStateType;
  3475. var lpdwLightState): HResult; stdcall;
  3476. function SetLightState(dwLightStateType: TD3DLightStateType;
  3477. dwLightState: DWORD): HResult; stdcall;
  3478. function SetTransform(dtstTransformStateType: TD3DTransformStateType;
  3479. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3480. function GetTransform(dtstTransformStateType: TD3DTransformStateType;
  3481. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3482. function MultiplyTransform(dtstTransformStateType: TD3DTransformStateType;
  3483. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3484. function DrawPrimitive(dptPrimitiveType: TD3DPrimitiveType;
  3485. dvtVertexType: TD3DVertexType; var lpvVertices; dwVertexCount,
  3486. dwFlags: DWORD): HResult; stdcall;
  3487. function DrawIndexedPrimitive(dptPrimitiveType: TD3DPrimitiveType;
  3488. dwVertexTypeDesc: DWORD; lpvVertices: pointer; dwVertexCount: DWORD;
  3489. var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
  3490. function SetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
  3491. function GetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
  3492. end;
  3493. {$ENDIF} // DIRECT3D_VERSION_5
  3494. {$IFDEF DIRECT3D_VERSION_6}
  3495. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice3);'}
  3496. {$EXTERNALSYM IDirect3DDevice3}
  3497. IDirect3DDevice3 = interface(IUnknown)
  3498. ['{b0ab3b60-33d7-11d1-a981-00c04fd7b174}']
  3499. (*** IDirect3DDevice2 methods ***)
  3500. function GetCaps(var lpD3DHWDevDesc: TD3DDeviceDesc;
  3501. var lpD3DHELDevDesc: TD3DDeviceDesc): HResult; stdcall;
  3502. function GetStats(var lpD3DStats: TD3DStats): HResult; stdcall;
  3503. function AddViewport(lpDirect3DViewport: IDirect3DViewport3): HResult; stdcall;
  3504. function DeleteViewport(lpDirect3DViewport: IDirect3DViewport3): HResult; stdcall;
  3505. function NextViewport(lpDirect3DViewport: IDirect3DViewport3;
  3506. var lplpAnotherViewport: IDirect3DViewport3; dwFlags: DWORD): HResult; stdcall;
  3507. function EnumTextureFormats(
  3508. lpd3dEnumPixelProc: TD3DEnumPixelFormatsCallback; lpArg: Pointer):
  3509. HResult; stdcall;
  3510. function BeginScene: HResult; stdcall;
  3511. function EndScene: HResult; stdcall;
  3512. function GetDirect3D(var lpD3D: IDirect3D3): HResult; stdcall;
  3513. function SetCurrentViewport(lpd3dViewport: IDirect3DViewport3)
  3514. : HResult; stdcall;
  3515. function GetCurrentViewport(var lplpd3dViewport: IDirect3DViewport3)
  3516. : HResult; stdcall;
  3517. function SetRenderTarget(lpNewRenderTarget: IDirectDrawSurface4)
  3518. : HResult; stdcall;
  3519. function GetRenderTarget(var lplpNewRenderTarget: IDirectDrawSurface4)
  3520. : HResult; stdcall;
  3521. function Begin_(d3dpt: TD3DPrimitiveType; dwVertexTypeDesc: DWORD;
  3522. dwFlags: DWORD): HResult; stdcall;
  3523. function BeginIndexed(dptPrimitiveType: TD3DPrimitiveType;
  3524. dwVertexTypeDesc: DWORD; lpvVertices: pointer; dwNumVertices: DWORD;
  3525. dwFlags: DWORD): HResult; stdcall;
  3526. function Vertex(lpVertex: pointer): HResult; stdcall;
  3527. function Index(wVertexIndex: WORD): HResult; stdcall;
  3528. function End_(dwFlags: DWORD): HResult; stdcall;
  3529. function GetRenderState(dwRenderStateType: TD3DRenderStateType;
  3530. var lpdwRenderState): HResult; stdcall;
  3531. function SetRenderState(dwRenderStateType: TD3DRenderStateType;
  3532. dwRenderState: DWORD): HResult; stdcall;
  3533. function GetLightState(dwLightStateType: TD3DLightStateType;
  3534. var lpdwLightState): HResult; stdcall;
  3535. function SetLightState(dwLightStateType: TD3DLightStateType;
  3536. dwLightState: DWORD): HResult; stdcall;
  3537. function SetTransform(dtstTransformStateType: TD3DTransformStateType;
  3538. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3539. function GetTransform(dtstTransformStateType: TD3DTransformStateType;
  3540. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3541. function MultiplyTransform(dtstTransformStateType: TD3DTransformStateType;
  3542. var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3543. function DrawPrimitive(dptPrimitiveType: TD3DPrimitiveType;
  3544. dwVertexTypeDesc: DWORD; const lpvVertices;
  3545. dwVertexCount, dwFlags: DWORD): HResult; stdcall;
  3546. function DrawIndexedPrimitive(dptPrimitiveType: TD3DPrimitiveType;
  3547. dwVertexTypeDesc: DWORD; const lpvVertices; dwVertexCount: DWORD;
  3548. var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
  3549. function SetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
  3550. function GetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
  3551. function DrawPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
  3552. dwVertexTypeDesc : DWORD;
  3553. var lpVertexArray: TD3DDrawPrimitiveStridedData;
  3554. dwVertexCount, dwFlags: DWORD): HResult; stdcall;
  3555. function DrawIndexedPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
  3556. dwVertexTypeDesc : DWORD;
  3557. var lpVertexArray: TD3DDrawPrimitiveStridedData; dwVertexCount: DWORD;
  3558. var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
  3559. function DrawPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
  3560. lpd3dVertexBuffer: IDirect3DVertexBuffer;
  3561. dwStartVertex, dwNumVertices, dwFlags: DWORD): HResult; stdcall;
  3562. function DrawIndexedPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
  3563. lpd3dVertexBuffer: IDirect3DVertexBuffer; var lpwIndices: WORD;
  3564. dwIndexCount, dwFlags: DWORD): HResult; stdcall;
  3565. function ComputeSphereVisibility(var lpCenters: TD3DVector;
  3566. var lpRadii: TD3DValue; dwNumSpheres, dwFlags: DWORD;
  3567. var lpdwReturnValues: DWORD): HResult; stdcall;
  3568. function GetTexture(dwStage: DWORD; var lplpTexture: IDirect3DTexture2)
  3569. : HResult; stdcall;
  3570. function SetTexture(dwStage: DWORD; lplpTexture: IDirect3DTexture2)
  3571. : HResult; stdcall;
  3572. function GetTextureStageState(dwStage: DWORD;
  3573. dwState: TD3DTextureStageStateType; var lpdwValue: DWORD): HResult; stdcall;
  3574. function SetTextureStageState(dwStage: DWORD;
  3575. dwState: TD3DTextureStageStateType; lpdwValue: DWORD): HResult; stdcall;
  3576. function ValidateDevice(var lpdwExtraPasses: DWORD): HResult; stdcall;
  3577. end;
  3578. {$ENDIF} // DIRECT3D_VERSION_6
  3579. {$IFDEF DIRECT3D_VERSION_7}
  3580. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice7);'}
  3581. {$EXTERNALSYM IDirect3DDevice7}
  3582. IDirect3DDevice7 = interface(IUnknown)
  3583. ['{f5049e79-4861-11d2-a407-00a0c90629a8}']
  3584. (*** IDirect3DDevice7 methods ***)
  3585. function GetCaps(out lpD3DDevDesc: TD3DDeviceDesc7): HResult; stdcall;
  3586. function EnumTextureFormats(lpd3dEnumPixelProc: TD3DEnumPixelFormatsCallback; lpArg: Pointer): HResult; stdcall;
  3587. function BeginScene: HResult; stdcall;
  3588. function EndScene: HResult; stdcall;
  3589. function GetDirect3D(out lpD3D: IDirect3D7): HResult; stdcall;
  3590. function SetRenderTarget(lpNewRenderTarget: IDirectDrawSurface7; dwFlags: DWORD): HResult; stdcall;
  3591. function GetRenderTarget(out lplpRenderTarget: IDirectDrawSurface7): HResult; stdcall;
  3592. function Clear(dwCount: DWORD; lpRects: PD3DRect; dwFlags, dwColor: DWORD; dvZ: TD3DValue; dwStencil: DWORD): HResult; stdcall;
  3593. function SetTransform(dtstTransformStateType: TD3DTransformStateType;
  3594. const lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3595. function GetTransform(dtstTransformStateType: TD3DTransformStateType;
  3596. out lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3597. function SetViewport(const lpViewport: TD3DViewport7): HResult; stdcall;
  3598. function MultiplyTransform(dtstTransformStateType: TD3DTransformStateType;
  3599. const lpD3DMatrix: TD3DMatrix): HResult; stdcall;
  3600. function GetViewport(out lpViewport: TD3DViewport7): HResult; stdcall;
  3601. function SetMaterial(const lpMaterial: TD3DMaterial7): HResult; stdcall;
  3602. function GetMaterial(out lpMaterial: TD3DMaterial7): HResult; stdcall;
  3603. function SetLight(dwLightIndex: DWORD; const lpLight: TD3DLight7): HResult; stdcall;
  3604. function GetLight(dwLightIndex: DWORD; out lpLight: TD3DLight7): HResult; stdcall;
  3605. function SetRenderState(dwRenderStateType: TD3DRenderStateType; dwRenderState: DWORD): HResult; stdcall;
  3606. function GetRenderState(dwRenderStateType: TD3DRenderStateType; out dwRenderState: DWORD): HResult; stdcall;
  3607. function BeginStateBlock : HResult; stdcall;
  3608. function EndStateBlock(out lpdwBlockHandle: DWORD): HResult; stdcall;
  3609. function PreLoad(lpddsTexture: IDirectDrawSurface7): HResult; stdcall;
  3610. function DrawPrimitive(dptPrimitiveType: TD3DPrimitiveType;
  3611. dwVertexTypeDesc: DWORD; const lpvVertices;
  3612. dwVertexCount, dwFlags: DWORD): HResult; stdcall;
  3613. function DrawIndexedPrimitive(dptPrimitiveType: TD3DPrimitiveType;
  3614. dwVertexTypeDesc: DWORD; const lpvVertices; dwVertexCount: DWORD;
  3615. const lpwIndices; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
  3616. function SetClipStatus(const lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
  3617. function GetClipStatus(out lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
  3618. function DrawPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
  3619. dwVertexTypeDesc : DWORD;
  3620. const lpVertexArray: TD3DDrawPrimitiveStridedData;
  3621. dwVertexCount, dwFlags: DWORD): HResult; stdcall;
  3622. function DrawIndexedPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
  3623. dwVertexTypeDesc : DWORD;
  3624. const lpVertexArray: TD3DDrawPrimitiveStridedData; dwVertexCount: DWORD;
  3625. var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
  3626. function DrawPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
  3627. lpd3dVertexBuffer: IDirect3DVertexBuffer7;
  3628. dwStartVertex, dwNumVertices, dwFlags: DWORD): HResult; stdcall;
  3629. function DrawIndexedPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
  3630. lpd3dVertexBuffer: IDirect3DVertexBuffer7; dwStartVertex, dwNumVertices: DWORD;
  3631. var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
  3632. function ComputeSphereVisibility(const lpCenters: TD3DVector;
  3633. var lpRadii: TD3DValue; dwNumSpheres, dwFlags: DWORD;
  3634. var lpdwReturnValues: DWORD): HResult; stdcall;
  3635. function GetTexture(dwStage: DWORD; out lplpTexture: IDirectDrawSurface7): HResult; stdcall;
  3636. function SetTexture(dwStage: DWORD; lpTexture: IDirectDrawSurface7): HResult; stdcall;
  3637. function GetTextureStageState(dwStage: DWORD;
  3638. dwState: TD3DTextureStageStateType; out lpdwValue: DWORD): HResult; stdcall;
  3639. function SetTextureStageState(dwStage: DWORD;
  3640. dwState: TD3DTextureStageStateType; lpdwValue: DWORD): HResult; stdcall;
  3641. function ValidateDevice(out lpdwExtraPasses: DWORD): HResult; stdcall;
  3642. function ApplyStateBlock(dwBlockHandle: DWORD): HResult; stdcall;
  3643. function CaptureStateBlock(dwBlockHandle: DWORD): HResult; stdcall;
  3644. function DeleteStateBlock(dwBlockHandle: DWORD): HResult; stdcall;
  3645. function CreateStateBlock(d3dsbType: TD3DStateBlockType; out lpdwBlockHandle: DWORD): HResult; stdcall;
  3646. function Load(lpDestTex: IDirectDrawSurface7; lpDestPoint: PPoint;
  3647. lpSrcTex: IDirectDrawSurface7; lprcSrcRect: PRect; dwFlags: DWORD): HResult; stdcall;
  3648. function LightEnable(dwLightIndex: DWORD; bEnable: BOOL): HResult; stdcall;
  3649. function GetLightEnable(dwLightIndex: DWORD; out bEnable: BOOL): HResult; stdcall;
  3650. function SetClipPlane(dwIndex: DWORD; pPlaneEquation: PD3DValue): HResult; stdcall;
  3651. function GetClipPlane(dwIndex: DWORD; pPlaneEquation: PD3DValue): HResult; stdcall;
  3652. function GetInfo(dwDevInfoID: DWORD; pDevInfoStruct: Pointer; dwSize: DWORD): HResult; stdcall;
  3653. end;
  3654. {$ENDIF} // DIRECT3D_VERSION_7
  3655. (*
  3656. * Execute Buffer interface
  3657. *)
  3658. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DExecuteBuffer);'}
  3659. {$EXTERNALSYM IDirect3DExecuteBuffer}
  3660. IDirect3DExecuteBuffer = interface(IUnknown)
  3661. ['{4417C145-33AD-11CF-816F-0000C020156E}']
  3662. (*** IDirect3DExecuteBuffer methods ***)
  3663. function Initialize(lpDirect3DDevice: IDirect3DDevice;
  3664. var lpDesc: TD3DExecuteBufferDesc): HResult; stdcall;
  3665. function Lock(var lpDesc: TD3DExecuteBufferDesc): HResult; stdcall;
  3666. function Unlock: HResult; stdcall;
  3667. function SetExecuteData(var lpData: TD3DExecuteData): HResult; stdcall;
  3668. function GetExecuteData(var lpData: TD3DExecuteData): HResult; stdcall;
  3669. function Validate(var lpdwOffset: DWORD; lpFunc: TD3DValidateCallback;
  3670. lpUserArg: Pointer; dwReserved: DWORD): HResult; stdcall;
  3671. (*** Warning! Optimize is defined differently in the header files
  3672. and the online documentation ***)
  3673. function Optimize(dwFlags: DWORD): HResult; stdcall;
  3674. end;
  3675. (*
  3676. * Light interfaces
  3677. *)
  3678. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DLight);'}
  3679. {$EXTERNALSYM IDirect3DLight}
  3680. IDirect3DLight = interface(IUnknown)
  3681. ['{4417C142-33AD-11CF-816F-0000C020156E}']
  3682. (*** IDirect3DLight methods ***)
  3683. function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
  3684. function SetLight(var lpLight: TD3DLight2): HResult; stdcall;
  3685. function GetLight(var lpLight: TD3DLight2): HResult; stdcall;
  3686. end;
  3687. (*
  3688. * Material interfaces
  3689. *)
  3690. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DMaterial);'}
  3691. {$EXTERNALSYM IDirect3DMaterial}
  3692. IDirect3DMaterial = interface(IUnknown)
  3693. ['{4417C144-33AD-11CF-816F-0000C020156E}']
  3694. (*** IDirect3DMaterial methods ***)
  3695. function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
  3696. function SetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
  3697. function GetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
  3698. function GetHandle(lpDirect3DDevice: IDirect3DDevice;
  3699. var lpHandle: TD3DMaterialHandle): HResult; stdcall;
  3700. function Reserve: HResult; stdcall;
  3701. function Unreserve: HResult; stdcall;
  3702. end;
  3703. {$IFDEF DIRECT3D_VERSION_5}
  3704. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DMaterial2);'}
  3705. {$EXTERNALSYM IDirect3DMaterial2}
  3706. IDirect3DMaterial2 = interface(IUnknown)
  3707. ['{93281503-8cf8-11d0-89ab-00a0c9054129}']
  3708. (*** IDirect3DMaterial2 methods ***)
  3709. function SetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
  3710. function GetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
  3711. function GetHandle(lpDirect3DDevice: IDirect3DDevice2;
  3712. var lpHandle: TD3DMaterialHandle): HResult; stdcall;
  3713. end;
  3714. {$ENDIF} // DIRECT3D_VERSION_5
  3715. {$IFDEF DIRECT3D_VERSION_6}
  3716. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DMaterial3);'}
  3717. {$EXTERNALSYM IDirect3DMaterial3}
  3718. IDirect3DMaterial3 = interface(IUnknown)
  3719. ['{ca9c46f4-d3c5-11d1-b75a-00600852b312}']
  3720. (*** IDirect3DMaterial2 methods ***)
  3721. function SetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
  3722. function GetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
  3723. function GetHandle(lpDirect3DDevice: IDirect3DDevice3;
  3724. var lpHandle: TD3DMaterialHandle): HResult; stdcall;
  3725. end;
  3726. {$ENDIF} // DIRECT3D_VERSION_6
  3727. (*
  3728. * Texture interfaces
  3729. *)
  3730. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DTexture);'}
  3731. {$EXTERNALSYM IDirect3DTexture}
  3732. IDirect3DTexture = interface(IUnknown)
  3733. ['{2CDCD9E0-25A0-11CF-A31A-00AA00B93356}']
  3734. (*** IDirect3DTexture methods ***)
  3735. function Initialize(lpD3DDevice: IDirect3DDevice;
  3736. lpDDSurface: IDirectDrawSurface): HResult; stdcall;
  3737. function GetHandle(lpDirect3DDevice: IDirect3DDevice;
  3738. var lpHandle: TD3DTextureHandle): HResult; stdcall;
  3739. function PaletteChanged(dwStart: DWORD; dwCount: DWORD): HResult; stdcall;
  3740. function Load(lpD3DTexture: IDirect3DTexture): HResult; stdcall;
  3741. function Unload: HResult; stdcall;
  3742. end;
  3743. {$IFDEF DIRECT3D_VERSION_5}
  3744. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DTexture2);'}
  3745. {$EXTERNALSYM IDirect3DTexture2}
  3746. IDirect3DTexture2 = interface(IUnknown)
  3747. ['{93281502-8cf8-11d0-89ab-00a0c9054129}']
  3748. (*** IDirect3DTexture2 methods ***)
  3749. function GetHandle(lpDirect3DDevice: IDirect3DDevice2;
  3750. var lpHandle: TD3DTextureHandle): HResult; stdcall;
  3751. function PaletteChanged(dwStart: DWORD; dwCount: DWORD): HResult; stdcall;
  3752. function Load(lpD3DTexture: IDirect3DTexture2): HResult; stdcall;
  3753. end;
  3754. {$ENDIF} // DIRECT3D_VERSION_5
  3755. (*
  3756. * Viewport interfaces
  3757. *)
  3758. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DViewport);'}
  3759. {$EXTERNALSYM IDirect3DViewport}
  3760. IDirect3DViewport = interface(IUnknown)
  3761. ['{4417C146-33AD-11CF-816F-0000C020156E}']
  3762. (*** IDirect3DViewport methods ***)
  3763. function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
  3764. function GetViewport(out lpData: TD3DViewport): HResult; stdcall;
  3765. function SetViewport(const lpData: TD3DViewport): HResult; stdcall;
  3766. function TransformVertices(dwVertexCount: DWORD;
  3767. const lpData: TD3DTransformData; dwFlags: DWORD;
  3768. out lpOffscreen: DWORD): HResult; stdcall;
  3769. function LightElements(dwElementCount: DWORD;
  3770. var lpData: TD3DLightData): HResult; stdcall;
  3771. function SetBackground(hMat: TD3DMaterialHandle): HResult; stdcall;
  3772. function GetBackground(out hMat: TD3DMaterialHandle): HResult; stdcall;
  3773. function SetBackgroundDepth(lpDDSurface: IDirectDrawSurface):
  3774. HResult; stdcall;
  3775. function GetBackgroundDepth(out lplpDDSurface: IDirectDrawSurface;
  3776. out lpValid: BOOL): HResult; stdcall;
  3777. function Clear(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD):
  3778. HResult; stdcall;
  3779. function AddLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
  3780. function DeleteLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
  3781. function NextLight(lpDirect3DLight: IDirect3DLight;
  3782. out lplpDirect3DLight: IDirect3DLight; dwFlags: DWORD): HResult; stdcall;
  3783. end;
  3784. {$IFDEF DIRECT3D_VERSION_5}
  3785. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DViewport2);'}
  3786. {$EXTERNALSYM IDirect3DViewport2}
  3787. IDirect3DViewport2 = interface(IUnknown)
  3788. ['{93281500-8cf8-11d0-89ab-00a0c9054129}']
  3789. (*** IDirect3DViewport2 methods ***)
  3790. function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
  3791. function GetViewport(out lpData: TD3DViewport): HResult; stdcall;
  3792. function SetViewport(const lpData: TD3DViewport): HResult; stdcall;
  3793. function TransformVertices(dwVertexCount: DWORD;
  3794. const lpData: TD3DTransformData; dwFlags: DWORD;
  3795. out lpOffscreen: DWORD): HResult; stdcall;
  3796. function LightElements(dwElementCount: DWORD;
  3797. var lpData: TD3DLightData): HResult; stdcall;
  3798. function SetBackground(hMat: TD3DMaterialHandle): HResult; stdcall;
  3799. function GetBackground(out hMat: TD3DMaterialHandle): HResult; stdcall;
  3800. function SetBackgroundDepth(lpDDSurface: IDirectDrawSurface):
  3801. HResult; stdcall;
  3802. function GetBackgroundDepth(out lplpDDSurface: IDirectDrawSurface;
  3803. out lpValid: BOOL): HResult; stdcall;
  3804. function Clear(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD):
  3805. HResult; stdcall;
  3806. function AddLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
  3807. function DeleteLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
  3808. function NextLight(lpDirect3DLight: IDirect3DLight;
  3809. out lplpDirect3DLight: IDirect3DLight; dwFlags: DWORD): HResult; stdcall;
  3810. (*** IDirect3DViewport2 methods ***)
  3811. function GetViewport2(out lpData: TD3DViewport2): HResult; stdcall;
  3812. function SetViewport2(const lpData: TD3DViewport2): HResult; stdcall;
  3813. end;
  3814. {$ENDIF} // DIRECT3D_VERSION_5
  3815. {$IFDEF DIRECT3D_VERSION_6}
  3816. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DViewport3);'}
  3817. {$EXTERNALSYM IDirect3DViewport3}
  3818. IDirect3DViewport3 = interface(IUnknown)
  3819. ['{b0ab3b61-33d7-11d1-a981-00c04fd7b174}']
  3820. (*** IDirect3DViewport3 methods ***)
  3821. function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
  3822. function GetViewport(out lpData: TD3DViewport): HResult; stdcall;
  3823. function SetViewport(const lpData: TD3DViewport): HResult; stdcall;
  3824. function TransformVertices(dwVertexCount: DWORD;
  3825. const lpData: TD3DTransformData; dwFlags: DWORD;
  3826. out lpOffscreen: DWORD): HResult; stdcall;
  3827. function LightElements(dwElementCount: DWORD;
  3828. var lpData: TD3DLightData): HResult; stdcall;
  3829. function SetBackground(hMat: TD3DMaterialHandle): HResult; stdcall;
  3830. function GetBackground(var hMat: TD3DMaterialHandle): HResult; stdcall;
  3831. function SetBackgroundDepth(
  3832. lpDDSurface: IDirectDrawSurface): HResult; stdcall;
  3833. function GetBackgroundDepth(out lplpDDSurface: IDirectDrawSurface;
  3834. out lpValid: BOOL): HResult; stdcall;
  3835. function Clear(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD):
  3836. HResult; stdcall;
  3837. function AddLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
  3838. function DeleteLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
  3839. function NextLight(lpDirect3DLight: IDirect3DLight;
  3840. out lplpDirect3DLight: IDirect3DLight; dwFlags: DWORD): HResult; stdcall;
  3841. function GetViewport2(out lpData: TD3DViewport2): HResult; stdcall;
  3842. function SetViewport2(const lpData: TD3DViewport2): HResult; stdcall;
  3843. function SetBackgroundDepth2(
  3844. lpDDSurface: IDirectDrawSurface4): HResult; stdcall;
  3845. function GetBackgroundDepth2(out lplpDDSurface: IDirectDrawSurface4;
  3846. out lpValid: BOOL): HResult; stdcall;
  3847. function Clear2(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD;
  3848. dwColor: DWORD; dvZ: TD3DValue; dwStencil: DWORD): HResult; stdcall;
  3849. end;
  3850. {$ENDIF} // DIRECT3D_VERSION_6
  3851. {$IFDEF DIRECT3D_VERSION_6}
  3852. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVertexBuffer);'}
  3853. {$EXTERNALSYM IDirect3DVertexBuffer}
  3854. IDirect3DVertexBuffer = interface(IUnknown)
  3855. ['{7a503555-4a83-11d1-a5db-00a0c90367f8}']
  3856. (*** IDirect3DVertexBuffer methods ***)
  3857. function Lock(dwFlags: DWORD; var lplpData: pointer; var lpdwSize: DWORD)
  3858. : HResult; stdcall;
  3859. function Unlock : HResult; stdcall;
  3860. function ProcessVertices(dwVertexOp, dwDestIndex, dwCount: DWORD;
  3861. lpSrcBuffer: IDirect3DVertexBuffer; dwSrcIndex: DWORD;
  3862. lpD3DDevice: IDirect3DDevice3; dwFlags: DWORD): HResult; stdcall;
  3863. function GetVertexBufferDesc(var lpVBDesc: TD3DVertexBufferDesc): HResult; stdcall;
  3864. function Optimize(lpD3DDevice: IDirect3DDevice3; dwFlags: DWORD): HResult; stdcall;
  3865. end;
  3866. {$ENDIF} // DIRECT3D_VERSION_6
  3867. {$IFDEF DIRECT3D_VERSION_7}
  3868. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVertexBuffer7);'}
  3869. {$EXTERNALSYM IDirect3DVertexBuffer7}
  3870. IDirect3DVertexBuffer7 = interface(IUnknown)
  3871. ['{f5049e7d-4861-11d2-a407-00a0c90629a8}']
  3872. (*** IDirect3DVertexBuffer methods ***)
  3873. function Lock(dwFlags: DWORD; out lplpData: Pointer; out lpdwSize: DWORD): HResult; stdcall;
  3874. function Unlock : HResult; stdcall;
  3875. function ProcessVertices(dwVertexOp, dwDestIndex, dwCount: DWORD;
  3876. lpSrcBuffer: IDirect3DVertexBuffer7; dwSrcIndex: DWORD;
  3877. lpD3DDevice: IDirect3DDevice7; dwFlags: DWORD): HResult; stdcall;
  3878. function GetVertexBufferDesc(out lpVBDesc: TD3DVertexBufferDesc): HResult; stdcall;
  3879. function Optimize(lpD3DDevice: IDirect3DDevice7; dwFlags: DWORD): HResult; stdcall;
  3880. function ProcessVerticesStrided(dwVertexOp, dwDestIndex, dwCount: DWORD;
  3881. lpVertexArray: TD3DDrawPrimitiveStridedData; dwVertexTypeDesc: DWORD;
  3882. lpD3DDevice: IDirect3DDevice7; dwFlags: DWORD): HResult; stdcall;
  3883. end;
  3884. {$ENDIF} // DIRECT3D_VERSION_7
  3885. {$IFDEF DIRECT3D_VERSION_5}
  3886. const
  3887. (****************************************************************************
  3888. *
  3889. * Flags for IDirect3DDevice::NextViewport
  3890. *
  3891. ****************************************************************************)
  3892. (*
  3893. * Return the next viewport
  3894. *)
  3895. D3DNEXT_NEXT = $00000001;
  3896. {$EXTERNALSYM D3DNEXT_NEXT}
  3897. (*
  3898. * Return the first viewport
  3899. *)
  3900. D3DNEXT_HEAD = $00000002;
  3901. {$EXTERNALSYM D3DNEXT_HEAD}
  3902. (*
  3903. * Return the last viewport
  3904. *)
  3905. D3DNEXT_TAIL = $00000004;
  3906. {$EXTERNALSYM D3DNEXT_TAIL}
  3907. (****************************************************************************
  3908. *
  3909. * Flags for DrawPrimitive/DrawIndexedPrimitive
  3910. * Also valid for Begin/BeginIndexed
  3911. * Also valid for VertexBuffer::CreateVertexBuffer
  3912. ****************************************************************************)
  3913. (*
  3914. * Wait until the device is ready to draw the primitive
  3915. * This will cause DP to not return DDERR_WASSTILLDRAWING
  3916. *)
  3917. D3DDP_WAIT = $00000001;
  3918. {$EXTERNALSYM D3DDP_WAIT}
  3919. {$IFDEF DIRECT3D_VERSION_LESS_6}
  3920. (*
  3921. * Hint that it is acceptable to render the primitive out of order.
  3922. *)
  3923. D3DDP_OUTOFORDER = $00000002;
  3924. {$EXTERNALSYM D3DDP_OUTOFORDER}
  3925. {$ENDIF} // DIRECT3D_VERSION_LESS_6
  3926. (*
  3927. * Hint that the primitives have been clipped by the application.
  3928. *)
  3929. D3DDP_DONOTCLIP = $00000004;
  3930. {$EXTERNALSYM D3DDP_DONOTCLIP}
  3931. (*
  3932. * Hint that the extents need not be updated.
  3933. *)
  3934. D3DDP_DONOTUPDATEEXTENTS = $00000008;
  3935. {$EXTERNALSYM D3DDP_DONOTUPDATEEXTENTS}
  3936. {$ENDIF} // DIRECT3D_VERSION_5
  3937. {$IFDEF DIRECT3D_VERSION_6}
  3938. (*
  3939. * Hint that the lighting should not be applied on vertices.
  3940. *)
  3941. D3DDP_DONOTLIGHT = $00000010;
  3942. {$EXTERNALSYM D3DDP_DONOTLIGHT}
  3943. {$ENDIF} // DIRECT3D_VERSION_6
  3944. (*
  3945. * Direct3D Errors
  3946. * DirectDraw error codes are used when errors not specified here.
  3947. *)
  3948. const
  3949. MAKE_DDHRESULT = HResult($88760000);
  3950. {$EXTERNALSYM MAKE_DDHRESULT}
  3951. D3D_OK = DD_OK;
  3952. {$EXTERNALSYM D3D_OK}
  3953. D3DERR_BADMAJORVERSION = MAKE_DDHRESULT + 700;
  3954. {$EXTERNALSYM D3DERR_BADMAJORVERSION}
  3955. D3DERR_BADMINORVERSION = MAKE_DDHRESULT + 701;
  3956. {$EXTERNALSYM D3DERR_BADMINORVERSION}
  3957. {$IFDEF DIRECT3D_VERSION_5}
  3958. (*
  3959. * An invalid device was requested by the application.
  3960. *)
  3961. D3DERR_INVALID_DEVICE = MAKE_DDHRESULT + 705;
  3962. {$EXTERNALSYM D3DERR_INVALID_DEVICE}
  3963. D3DERR_INITFAILED = MAKE_DDHRESULT + 706;
  3964. {$EXTERNALSYM D3DERR_INITFAILED}
  3965. (*
  3966. * SetRenderTarget attempted on a device that was
  3967. * QI'd off the render target.
  3968. *)
  3969. D3DERR_DEVICEAGGREGATED = MAKE_DDHRESULT + 707;
  3970. {$EXTERNALSYM D3DERR_DEVICEAGGREGATED}
  3971. {$ENDIF} // DIRECT3D_VERSION_5
  3972. D3DERR_EXECUTE_CREATE_FAILED = MAKE_DDHRESULT + 710;
  3973. {$EXTERNALSYM D3DERR_EXECUTE_CREATE_FAILED}
  3974. D3DERR_EXECUTE_DESTROY_FAILED = MAKE_DDHRESULT + 711;
  3975. {$EXTERNALSYM D3DERR_EXECUTE_DESTROY_FAILED}
  3976. D3DERR_EXECUTE_LOCK_FAILED = MAKE_DDHRESULT + 712;
  3977. {$EXTERNALSYM D3DERR_EXECUTE_LOCK_FAILED}
  3978. D3DERR_EXECUTE_UNLOCK_FAILED = MAKE_DDHRESULT + 713;
  3979. {$EXTERNALSYM D3DERR_EXECUTE_UNLOCK_FAILED}
  3980. D3DERR_EXECUTE_LOCKED = MAKE_DDHRESULT + 714;
  3981. {$EXTERNALSYM D3DERR_EXECUTE_LOCKED}
  3982. D3DERR_EXECUTE_NOT_LOCKED = MAKE_DDHRESULT + 715;
  3983. {$EXTERNALSYM D3DERR_EXECUTE_NOT_LOCKED}
  3984. D3DERR_EXECUTE_FAILED = MAKE_DDHRESULT + 716;
  3985. {$EXTERNALSYM D3DERR_EXECUTE_FAILED}
  3986. D3DERR_EXECUTE_CLIPPED_FAILED = MAKE_DDHRESULT + 717;
  3987. {$EXTERNALSYM D3DERR_EXECUTE_CLIPPED_FAILED}
  3988. D3DERR_TEXTURE_NO_SUPPORT = MAKE_DDHRESULT + 720;
  3989. {$EXTERNALSYM D3DERR_TEXTURE_NO_SUPPORT}
  3990. D3DERR_TEXTURE_CREATE_FAILED = MAKE_DDHRESULT + 721;
  3991. {$EXTERNALSYM D3DERR_TEXTURE_CREATE_FAILED}
  3992. D3DERR_TEXTURE_DESTROY_FAILED = MAKE_DDHRESULT + 722;
  3993. {$EXTERNALSYM D3DERR_TEXTURE_DESTROY_FAILED}
  3994. D3DERR_TEXTURE_LOCK_FAILED = MAKE_DDHRESULT + 723;
  3995. {$EXTERNALSYM D3DERR_TEXTURE_LOCK_FAILED}
  3996. D3DERR_TEXTURE_UNLOCK_FAILED = MAKE_DDHRESULT + 724;
  3997. {$EXTERNALSYM D3DERR_TEXTURE_UNLOCK_FAILED}
  3998. D3DERR_TEXTURE_LOAD_FAILED = MAKE_DDHRESULT + 725;
  3999. {$EXTERNALSYM D3DERR_TEXTURE_LOAD_FAILED}
  4000. D3DERR_TEXTURE_SWAP_FAILED = MAKE_DDHRESULT + 726;
  4001. {$EXTERNALSYM D3DERR_TEXTURE_SWAP_FAILED}
  4002. D3DERR_TEXTURE_LOCKED = MAKE_DDHRESULT + 727;
  4003. {$EXTERNALSYM D3DERR_TEXTURE_LOCKED}
  4004. D3DERR_TEXTURE_NOT_LOCKED = MAKE_DDHRESULT + 728;
  4005. {$EXTERNALSYM D3DERR_TEXTURE_NOT_LOCKED}
  4006. D3DERR_TEXTURE_GETSURF_FAILED = MAKE_DDHRESULT + 729;
  4007. {$EXTERNALSYM D3DERR_TEXTURE_GETSURF_FAILED}
  4008. D3DERR_MATRIX_CREATE_FAILED = MAKE_DDHRESULT + 730;
  4009. {$EXTERNALSYM D3DERR_MATRIX_CREATE_FAILED}
  4010. D3DERR_MATRIX_DESTROY_FAILED = MAKE_DDHRESULT + 731;
  4011. {$EXTERNALSYM D3DERR_MATRIX_DESTROY_FAILED}
  4012. D3DERR_MATRIX_SETDATA_FAILED = MAKE_DDHRESULT + 732;
  4013. {$EXTERNALSYM D3DERR_MATRIX_SETDATA_FAILED}
  4014. D3DERR_MATRIX_GETDATA_FAILED = MAKE_DDHRESULT + 733;
  4015. {$EXTERNALSYM D3DERR_MATRIX_GETDATA_FAILED}
  4016. D3DERR_SETVIEWPORTDATA_FAILED = MAKE_DDHRESULT + 734;
  4017. {$EXTERNALSYM D3DERR_SETVIEWPORTDATA_FAILED}
  4018. {$IFDEF DIRECT3D_VERSION_5}
  4019. D3DERR_INVALIDCURRENTVIEWPORT = MAKE_DDHRESULT + 735;
  4020. {$EXTERNALSYM D3DERR_INVALIDCURRENTVIEWPORT}
  4021. D3DERR_INVALIDPRIMITIVETYPE = MAKE_DDHRESULT + 736;
  4022. {$EXTERNALSYM D3DERR_INVALIDPRIMITIVETYPE}
  4023. D3DERR_INVALIDVERTEXTYPE = MAKE_DDHRESULT + 737;
  4024. {$EXTERNALSYM D3DERR_INVALIDVERTEXTYPE}
  4025. D3DERR_TEXTURE_BADSIZE = MAKE_DDHRESULT + 738;
  4026. {$EXTERNALSYM D3DERR_TEXTURE_BADSIZE}
  4027. D3DERR_INVALIDRAMPTEXTURE = MAKE_DDHRESULT + 739;
  4028. {$EXTERNALSYM D3DERR_INVALIDRAMPTEXTURE}
  4029. {$ENDIF} // DIRECT3D_VERSION_5
  4030. D3DERR_MATERIAL_CREATE_FAILED = MAKE_DDHRESULT + 740;
  4031. {$EXTERNALSYM D3DERR_MATERIAL_CREATE_FAILED}
  4032. D3DERR_MATERIAL_DESTROY_FAILED = MAKE_DDHRESULT + 741;
  4033. {$EXTERNALSYM D3DERR_MATERIAL_DESTROY_FAILED}
  4034. D3DERR_MATERIAL_SETDATA_FAILED = MAKE_DDHRESULT + 742;
  4035. {$EXTERNALSYM D3DERR_MATERIAL_SETDATA_FAILED}
  4036. D3DERR_MATERIAL_GETDATA_FAILED = MAKE_DDHRESULT + 743;
  4037. {$EXTERNALSYM D3DERR_MATERIAL_GETDATA_FAILED}
  4038. {$IFDEF DIRECT3D_VERSION_5}
  4039. D3DERR_INVALIDPALETTE = MAKE_DDHRESULT + 744;
  4040. {$EXTERNALSYM D3DERR_INVALIDPALETTE}
  4041. D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY = MAKE_DDHRESULT + 745;
  4042. {$EXTERNALSYM D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY}
  4043. D3DERR_ZBUFF_NEEDS_VIDEOMEMORY = MAKE_DDHRESULT + 746;
  4044. {$EXTERNALSYM D3DERR_ZBUFF_NEEDS_VIDEOMEMORY}
  4045. D3DERR_SURFACENOTINVIDMEM = MAKE_DDHRESULT + 747;
  4046. {$EXTERNALSYM D3DERR_SURFACENOTINVIDMEM}
  4047. {$ENDIF} // DIRECT3D_VERSION_5
  4048. D3DERR_LIGHT_SET_FAILED = MAKE_DDHRESULT + 750;
  4049. {$EXTERNALSYM D3DERR_LIGHT_SET_FAILED}
  4050. {$IFDEF DIRECT3D_VERSION_5}
  4051. D3DERR_LIGHTHASVIEWPORT = MAKE_DDHRESULT + 751;
  4052. {$EXTERNALSYM D3DERR_LIGHTHASVIEWPORT}
  4053. D3DERR_LIGHTNOTINTHISVIEWPORT = MAKE_DDHRESULT + 752;
  4054. {$EXTERNALSYM D3DERR_LIGHTNOTINTHISVIEWPORT}
  4055. {$ENDIF} // DIRECT3D_VERSION_5
  4056. D3DERR_SCENE_IN_SCENE = MAKE_DDHRESULT + 760;
  4057. {$EXTERNALSYM D3DERR_SCENE_IN_SCENE}
  4058. D3DERR_SCENE_NOT_IN_SCENE = MAKE_DDHRESULT + 761;
  4059. {$EXTERNALSYM D3DERR_SCENE_NOT_IN_SCENE}
  4060. D3DERR_SCENE_BEGIN_FAILED = MAKE_DDHRESULT + 762;
  4061. {$EXTERNALSYM D3DERR_SCENE_BEGIN_FAILED}
  4062. D3DERR_SCENE_END_FAILED = MAKE_DDHRESULT + 763;
  4063. {$EXTERNALSYM D3DERR_SCENE_END_FAILED}
  4064. {$IFDEF DIRECT3D_VERSION_5}
  4065. D3DERR_INBEGIN = MAKE_DDHRESULT + 770;
  4066. {$EXTERNALSYM D3DERR_INBEGIN}
  4067. D3DERR_NOTINBEGIN = MAKE_DDHRESULT + 771;
  4068. {$EXTERNALSYM D3DERR_NOTINBEGIN}
  4069. D3DERR_NOVIEWPORTS = MAKE_DDHRESULT + 772;
  4070. {$EXTERNALSYM D3DERR_NOVIEWPORTS}
  4071. D3DERR_VIEWPORTDATANOTSET = MAKE_DDHRESULT + 773;
  4072. {$EXTERNALSYM D3DERR_VIEWPORTDATANOTSET}
  4073. D3DERR_VIEWPORTHASNODEVICE = MAKE_DDHRESULT + 774;
  4074. {$EXTERNALSYM D3DERR_VIEWPORTHASNODEVICE}
  4075. D3DERR_NOCURRENTVIEWPORT = MAKE_DDHRESULT + 775;
  4076. {$EXTERNALSYM D3DERR_NOCURRENTVIEWPORT}
  4077. {$ENDIF} // DIRECT3D_VERSION_5
  4078. {$IFDEF DIRECT3D_VERSION_6}
  4079. D3DERR_INVALIDVERTEXFORMAT = MAKE_DDHRESULT + 2048;
  4080. {$EXTERNALSYM D3DERR_INVALIDVERTEXFORMAT}
  4081. (*
  4082. * Attempted to CreateTexture on a surface that had a color key
  4083. *)
  4084. D3DERR_COLORKEYATTACHED = MAKE_DDHRESULT + 2050;
  4085. {$EXTERNALSYM D3DERR_COLORKEYATTACHED}
  4086. D3DERR_VERTEXBUFFEROPTIMIZED = MAKE_DDHRESULT + 2060;
  4087. {$EXTERNALSYM D3DERR_VERTEXBUFFEROPTIMIZED}
  4088. D3DERR_VBUF_CREATE_FAILED = MAKE_DDHRESULT + 2061;
  4089. {$EXTERNALSYM D3DERR_VBUF_CREATE_FAILED}
  4090. D3DERR_VERTEXBUFFERLOCKED = MAKE_DDHRESULT + 2062;
  4091. {$EXTERNALSYM D3DERR_VERTEXBUFFERLOCKED}
  4092. D3DERR_ZBUFFER_NOTPRESENT = MAKE_DDHRESULT + 2070;
  4093. {$EXTERNALSYM D3DERR_ZBUFFER_NOTPRESENT}
  4094. D3DERR_STENCILBUFFER_NOTPRESENT = MAKE_DDHRESULT + 2071;
  4095. {$EXTERNALSYM D3DERR_STENCILBUFFER_NOTPRESENT}
  4096. D3DERR_WRONGTEXTUREFORMAT = MAKE_DDHRESULT + 2072;
  4097. {$EXTERNALSYM D3DERR_WRONGTEXTUREFORMAT}
  4098. D3DERR_UNSUPPORTEDCOLOROPERATION = MAKE_DDHRESULT + 2073;
  4099. {$EXTERNALSYM D3DERR_UNSUPPORTEDCOLOROPERATION}
  4100. D3DERR_UNSUPPORTEDCOLORARG = MAKE_DDHRESULT + 2074;
  4101. {$EXTERNALSYM D3DERR_UNSUPPORTEDCOLORARG}
  4102. D3DERR_UNSUPPORTEDALPHAOPERATION = MAKE_DDHRESULT + 2075;
  4103. {$EXTERNALSYM D3DERR_UNSUPPORTEDALPHAOPERATION}
  4104. D3DERR_UNSUPPORTEDALPHAARG = MAKE_DDHRESULT + 2076;
  4105. {$EXTERNALSYM D3DERR_UNSUPPORTEDALPHAARG}
  4106. D3DERR_TOOMANYOPERATIONS = MAKE_DDHRESULT + 2077;
  4107. {$EXTERNALSYM D3DERR_TOOMANYOPERATIONS}
  4108. D3DERR_CONFLICTINGTEXTUREFILTER = MAKE_DDHRESULT + 2078;
  4109. {$EXTERNALSYM D3DERR_CONFLICTINGTEXTUREFILTER}
  4110. D3DERR_UNSUPPORTEDFACTORVALUE = MAKE_DDHRESULT + 2079;
  4111. {$EXTERNALSYM D3DERR_UNSUPPORTEDFACTORVALUE}
  4112. D3DERR_CONFLICTINGRENDERSTATE = MAKE_DDHRESULT + 2081;
  4113. {$EXTERNALSYM D3DERR_CONFLICTINGRENDERSTATE}
  4114. D3DERR_UNSUPPORTEDTEXTUREFILTER = MAKE_DDHRESULT + 2082;
  4115. {$EXTERNALSYM D3DERR_UNSUPPORTEDTEXTUREFILTER}
  4116. D3DERR_TOOMANYPRIMITIVES = MAKE_DDHRESULT + 2083;
  4117. {$EXTERNALSYM D3DERR_TOOMANYPRIMITIVES}
  4118. D3DERR_INVALIDMATRIX = MAKE_DDHRESULT + 2084;
  4119. {$EXTERNALSYM D3DERR_INVALIDMATRIX}
  4120. D3DERR_TOOMANYVERTICES = MAKE_DDHRESULT + 2085;
  4121. {$EXTERNALSYM D3DERR_TOOMANYVERTICES}
  4122. D3DERR_CONFLICTINGTEXTUREPALETTE = MAKE_DDHRESULT + 2086;
  4123. {$EXTERNALSYM D3DERR_CONFLICTINGTEXTUREPALETTE}
  4124. {$ENDIF} // DIRECT3D_VERSION_6
  4125. {$IFDEF DIRECT3D_VERSION_7}
  4126. D3DERR_INVALIDSTATEBLOCK = MAKE_DDHRESULT + 2100;
  4127. {$EXTERNALSYM D3DERR_INVALIDSTATEBLOCK}
  4128. D3DERR_INBEGINSTATEBLOCK = MAKE_DDHRESULT + 2101;
  4129. {$EXTERNALSYM D3DERR_INBEGINSTATEBLOCK}
  4130. D3DERR_NOTINBEGINSTATEBLOCK = MAKE_DDHRESULT + 2102;
  4131. {$EXTERNALSYM D3DERR_NOTINBEGINSTATEBLOCK}
  4132. {$ENDIF} // DIRECT3D_VERSION_7
  4133. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  4134. procedure DisableFPUExceptions;
  4135. procedure EnableFPUExceptions;
  4136. {$IFNDEF EXCLUDE_DXFILE_FROM_DIRECT3D}
  4137. (***************************************************************************
  4138. *
  4139. * Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved.
  4140. *
  4141. * File: dxfile.h
  4142. *
  4143. * Content: DirectX File public header file
  4144. *
  4145. ***************************************************************************)
  4146. var
  4147. DXFileDLL : HMODULE;
  4148. function DXFileErrorString(Value: HResult): string;
  4149. type
  4150. TDXFileFormat = (
  4151. DXFILEFORMAT_BINARY,
  4152. DXFILEFORMAT_TEXT,
  4153. DXFILEFORMAT_COMPRESSED
  4154. );
  4155. TDXFileLoadOptions = (
  4156. DXFILELOAD_FROMFILE,
  4157. DXFILELOAD_FROMRESOURCE,
  4158. DXFILELOAD_FROMMEMORY,
  4159. DXFILELOAD_INVALID_3,
  4160. DXFILELOAD_FROMSTREAM,
  4161. DXFILELOAD_INVALID_5,
  4162. DXFILELOAD_INVALID_6,
  4163. DXFILELOAD_INVALID_7,
  4164. DXFILELOAD_FROMURL
  4165. );
  4166. PDXFileLoadResource = ^TDXFileLoadResource;
  4167. TDXFileLoadResource = packed record
  4168. hModule: HModule;
  4169. lpName: PAnsiChar;
  4170. lpType: PAnsiChar;
  4171. end;
  4172. PDXFileLoadMemory = ^TDXFileLoadMemory;
  4173. TDXFileLoadMemory = packed record
  4174. lpMemory: Pointer;
  4175. dSize: DWORD;
  4176. end;
  4177. (*
  4178. * DirectX File object types.
  4179. *)
  4180. IDirectXFile = interface;
  4181. IDirectXFileEnumObject = interface;
  4182. IDirectXFileSaveObject = interface;
  4183. IDirectXFileObject = interface;
  4184. IDirectXFileData = interface;
  4185. IDirectXFileDataReference = interface;
  4186. IDirectXFileBinary = interface;
  4187. (*
  4188. * DirectX File interfaces.
  4189. *)
  4190. IDirectXFile = interface(IUnknown)
  4191. ['{3d82ab40-62da-11cf-ab39-0020af71e433}']
  4192. function CreateEnumObject(pvSource: Pointer;
  4193. dwLoadOptions: TDXFileLoadOptions;
  4194. var ppEnumObj: IDirectXFileEnumObject): HResult; stdcall;
  4195. function CreateSaveObject(szFileName: PChar; dwFileFormat: TDXFileFormat;
  4196. var ppSaveObj: IDirectXFileSaveObject): HResult; stdcall;
  4197. function RegisterTemplates(pvData: Pointer; cbSize: DWORD): HResult; stdcall;
  4198. end;
  4199. IDirectXFileEnumObject = interface(IUnknown)
  4200. ['{3d82ab41-62da-11cf-ab39-0020af71e433}']
  4201. function GetNextDataObject(var ppDataObj: IDirectXFileData): HResult; stdcall;
  4202. function GetDataObjectById
  4203. (const rguid: TGUID; var ppDataObj: IDirectXFileData): HResult; stdcall;
  4204. function GetDataObjectByName
  4205. (szName: PChar; var ppDataObj: IDirectXFileData): HResult; stdcall;
  4206. end;
  4207. IDirectXFileSaveObject = interface(IUnknown)
  4208. ['{3d82ab42-62da-11cf-ab39-0020af71e433}']
  4209. function SaveTemplates
  4210. (cTemplates: DWORD; var ppguidTemplates: PGUID): HResult; stdcall;
  4211. function CreateDataObject(const rguidTemplate: TGUID; szName: PChar;
  4212. pguid: PGUID; cbSize: DWORD; pvData: Pointer;
  4213. var ppDataObj: IDirectXFileData): HResult; stdcall;
  4214. function SaveData(pDataObj: IDirectXFileData): HResult; stdcall;
  4215. end;
  4216. IDirectXFileObject = interface(IUnknown)
  4217. ['{3d82ab43-62da-11cf-ab39-0020af71e433}']
  4218. function GetName(pstrNameBuf: PChar; var dwBufLen: DWORD): HResult; stdcall;
  4219. function GetId(var pGuidBuf: TGUID): HResult; stdcall;
  4220. end;
  4221. IDirectXFileData = interface(IDirectXFileObject)
  4222. ['{3d82ab44-62da-11cf-ab39-0020af71e433}']
  4223. function GetData
  4224. (szMember: PChar; var pcbSize: DWORD; var ppvData: Pointer): HResult; stdcall;
  4225. function GetType(var ppguid: PGUID): HResult; stdcall;
  4226. function GetNextObject(var ppChildObj: IDirectXFileObject): HResult; stdcall;
  4227. function AddDataObject(pDataObj: IDirectXFileData): HResult; stdcall;
  4228. function AddDataReference(szRef: PChar; pguidRef: PGUID): HResult; stdcall;
  4229. function AddBinaryObject(szName: PChar; pguid: PGUID; szMimeType: PChar;
  4230. pvData: Pointer; cbSize: DWORD): HResult; stdcall;
  4231. end;
  4232. IDirectXFileDataReference = interface(IDirectXFileObject)
  4233. ['{3d82ab45-62da-11cf-ab39-0020af71e433}']
  4234. function Resolve(var ppDataObj: IDirectXFileData): HResult; stdcall;
  4235. end;
  4236. IDirectXFileBinary = interface(IDirectXFileObject)
  4237. ['{3d82ab46-62da-11cf-ab39-0020af71e433}']
  4238. function GetSize(var pcbSize: DWORD): HResult; stdcall;
  4239. function GetMimeType(var pszMimeType: PChar): HResult; stdcall;
  4240. function Read(pvData: Pointer; cbSize: DWORD; pcbRead: PDWORD{?}): HResult; stdcall;
  4241. end;
  4242. const
  4243. (*
  4244. * DirectXFile Object Class Id (for CoCreateInstance())
  4245. *)
  4246. CLSID_CDirectXFile: TGUID =
  4247. (D1:$4516ec43;D2:$8f20;D3:$11d0;D4:($9b,$6d,$00,$00,$c0,$78,$1b,$c3));
  4248. (*
  4249. * DirectX File Interface GUIDs.
  4250. *)
  4251. type
  4252. IID_IDirectXFile = IDirectXFile;
  4253. IID_IDirectXFileEnumObject = IDirectXFileEnumObject;
  4254. IID_IDirectXFileSaveObject = IDirectXFileSaveObject;
  4255. IID_IDirectXFileObject = IDirectXFileObject;
  4256. IID_IDirectXFileData = IDirectXFileData;
  4257. IID_IDirectXFileDataReference = IDirectXFileDataReference;
  4258. IID_IDirectXFileBinary = IDirectXFileBinary;
  4259. (*
  4260. * DirectX File Header template's GUID.
  4261. *)
  4262. const
  4263. TID_DXFILEHeader: TGUID =
  4264. (D1:$3d82ab43;D2:$62da;D3:$11cf;D4:($ab,$39,$00,$20,$af,$71,$e4,$33));
  4265. (*
  4266. * DirectX File errors.
  4267. *)
  4268. const
  4269. DXFILE_OK = 0;
  4270. DXFILEERR_BADOBJECT = MAKE_DDHRESULT or 850;
  4271. DXFILEERR_BADVALUE = MAKE_DDHRESULT or 851;
  4272. DXFILEERR_BADTYPE = MAKE_DDHRESULT or 852;
  4273. DXFILEERR_BADSTREAMHANDLE = MAKE_DDHRESULT or 853;
  4274. DXFILEERR_BADALLOC = MAKE_DDHRESULT or 854;
  4275. DXFILEERR_NOTFOUND = MAKE_DDHRESULT or 855;
  4276. DXFILEERR_NOTDONEYET = MAKE_DDHRESULT or 856;
  4277. DXFILEERR_FILENOTFOUND = MAKE_DDHRESULT or 857;
  4278. DXFILEERR_RESOURCENOTFOUND = MAKE_DDHRESULT or 858;
  4279. DXFILEERR_URLNOTFOUND = MAKE_DDHRESULT or 859;
  4280. DXFILEERR_BADRESOURCE = MAKE_DDHRESULT or 860;
  4281. DXFILEERR_BADFILETYPE = MAKE_DDHRESULT or 861;
  4282. DXFILEERR_BADFILEVERSION = MAKE_DDHRESULT or 862;
  4283. DXFILEERR_BADFILEFLOATSIZE = MAKE_DDHRESULT or 863;
  4284. DXFILEERR_BADFILECOMPRESSIONTYPE = MAKE_DDHRESULT or 864;
  4285. DXFILEERR_BADFILE = MAKE_DDHRESULT or 865;
  4286. DXFILEERR_PARSEERROR = MAKE_DDHRESULT or 866;
  4287. DXFILEERR_NOTEMPLATE = MAKE_DDHRESULT or 867;
  4288. DXFILEERR_BADARRAYSIZE = MAKE_DDHRESULT or 868;
  4289. DXFILEERR_BADDATAREFERENCE = MAKE_DDHRESULT or 869;
  4290. DXFILEERR_INTERNALERROR = MAKE_DDHRESULT or 870;
  4291. DXFILEERR_NOMOREOBJECTS = MAKE_DDHRESULT or 871;
  4292. DXFILEERR_BADINTRINSICS = MAKE_DDHRESULT or 872;
  4293. DXFILEERR_NOMORESTREAMHANDLES = MAKE_DDHRESULT or 873;
  4294. DXFILEERR_NOMOREDATA = MAKE_DDHRESULT or 874;
  4295. DXFILEERR_BADCACHEFILE = MAKE_DDHRESULT or 875;
  4296. DXFILEERR_NOINTERNET = MAKE_DDHRESULT or 876;
  4297. (*
  4298. * API for creating IDirectXFile interface.
  4299. *)
  4300. var
  4301. DirectXFileCreate : function
  4302. (out lplpDirectXFile: IDirectXFile): HResult; stdcall;
  4303. (* D3DRM XFile templates in binary form *)
  4304. const
  4305. D3DRM_XTEMPLATES: array [0..3214] of Byte = (
  4306. $78, $6f, $66, $20, $30, $33, $30, $32, $62,
  4307. $69, $6e, $20, $30, $30, $36, $34, $1f, 0, $1,
  4308. 0, $6, 0, 0, 0, $48, $65, $61, $64, $65,
  4309. $72, $a, 0, $5, 0, $43, $ab, $82, $3d, $da,
  4310. $62, $cf, $11, $ab, $39, 0, $20, $af, $71, $e4,
  4311. $33, $28, 0, $1, 0, $5, 0, 0, 0, $6d,
  4312. $61, $6a, $6f, $72, $14, 0, $28, 0, $1, 0,
  4313. $5, 0, 0, 0, $6d, $69, $6e, $6f, $72, $14,
  4314. 0, $29, 0, $1, 0, $5, 0, 0, 0, $66,
  4315. $6c, $61, $67, $73, $14, 0, $b, 0, $1f, 0,
  4316. $1, 0, $6, 0, 0, 0, $56, $65, $63, $74,
  4317. $6f, $72, $a, 0, $5, 0, $5e, $ab, $82, $3d,
  4318. $da, $62, $cf, $11, $ab, $39, 0, $20, $af, $71,
  4319. $e4, $33, $2a, 0, $1, 0, $1, 0, 0, 0,
  4320. $78, $14, 0, $2a, 0, $1, 0, $1, 0, 0,
  4321. 0, $79, $14, 0, $2a, 0, $1, 0, $1, 0,
  4322. 0, 0, $7a, $14, 0, $b, 0, $1f, 0, $1,
  4323. 0, $8, 0, 0, 0, $43, $6f, $6f, $72, $64,
  4324. $73, $32, $64, $a, 0, $5, 0, $44, $3f, $f2,
  4325. $f6, $86, $76, $cf, $11, $8f, $52, 0, $40, $33,
  4326. $35, $94, $a3, $2a, 0, $1, 0, $1, 0, 0,
  4327. 0, $75, $14, 0, $2a, 0, $1, 0, $1, 0,
  4328. 0, 0, $76, $14, 0, $b, 0, $1f, 0, $1,
  4329. 0, $9, 0, 0, 0, $4d, $61, $74, $72, $69,
  4330. $78, $34, $78, $34, $a, 0, $5, 0, $45, $3f,
  4331. $f2, $f6, $86, $76, $cf, $11, $8f, $52, 0, $40,
  4332. $33, $35, $94, $a3, $34, 0, $2a, 0, $1, 0,
  4333. $6, 0, 0, 0, $6d, $61, $74, $72, $69, $78,
  4334. $e, 0, $3, 0, $10, 0, 0, 0, $f, 0,
  4335. $14, 0, $b, 0, $1f, 0, $1, 0, $9, 0,
  4336. 0, 0, $43, $6f, $6c, $6f, $72, $52, $47, $42,
  4337. $41, $a, 0, $5, 0, $e0, $44, $ff, $35, $7c,
  4338. $6c, $cf, $11, $8f, $52, 0, $40, $33, $35, $94,
  4339. $a3, $2a, 0, $1, 0, $3, 0, 0, 0, $72,
  4340. $65, $64, $14, 0, $2a, 0, $1, 0, $5, 0,
  4341. 0, 0, $67, $72, $65, $65, $6e, $14, 0, $2a,
  4342. 0, $1, 0, $4, 0, 0, 0, $62, $6c, $75,
  4343. $65, $14, 0, $2a, 0, $1, 0, $5, 0, 0,
  4344. 0, $61, $6c, $70, $68, $61, $14, 0, $b, 0,
  4345. $1f, 0, $1, 0, $8, 0, 0, 0, $43, $6f,
  4346. $6c, $6f, $72, $52, $47, $42, $a, 0, $5, 0,
  4347. $81, $6e, $e1, $d3, $35, $78, $cf, $11, $8f, $52,
  4348. 0, $40, $33, $35, $94, $a3, $2a, 0, $1, 0,
  4349. $3, 0, 0, 0, $72, $65, $64, $14, 0, $2a,
  4350. 0, $1, 0, $5, 0, 0, 0, $67, $72, $65,
  4351. $65, $6e, $14, 0, $2a, 0, $1, 0, $4, 0,
  4352. 0, 0, $62, $6c, $75, $65, $14, 0, $b, 0,
  4353. $1f, 0, $1, 0, $c, 0, 0, 0, $49, $6e,
  4354. $64, $65, $78, $65, $64, $43, $6f, $6c, $6f, $72,
  4355. $a, 0, $5, 0, $20, $b8, $30, $16, $42, $78,
  4356. $cf, $11, $8f, $52, 0, $40, $33, $35, $94, $a3,
  4357. $29, 0, $1, 0, $5, 0, 0, 0, $69, $6e,
  4358. $64, $65, $78, $14, 0, $1, 0, $9, 0, 0,
  4359. 0, $43, $6f, $6c, $6f, $72, $52, $47, $42, $41,
  4360. $1, 0, $a, 0, 0, 0, $69, $6e, $64, $65,
  4361. $78, $43, $6f, $6c, $6f, $72, $14, 0, $b, 0,
  4362. $1f, 0, $1, 0, $7, 0, 0, 0, $42, $6f,
  4363. $6f, $6c, $65, $61, $6e, $a, 0, $5, 0, $a0,
  4364. $a6, $7d, $53, $37, $ca, $d0, $11, $94, $1c, 0,
  4365. $80, $c8, $c, $fa, $7b, $29, 0, $1, 0, $9,
  4366. 0, 0, 0, $74, $72, $75, $65, $66, $61, $6c,
  4367. $73, $65, $14, 0, $b, 0, $1f, 0, $1, 0,
  4368. $9, 0, 0, 0, $42, $6f, $6f, $6c, $65, $61,
  4369. $6e, $32, $64, $a, 0, $5, 0, $63, $ae, $85,
  4370. $48, $e8, $78, $cf, $11, $8f, $52, 0, $40, $33,
  4371. $35, $94, $a3, $1, 0, $7, 0, 0, 0, $42,
  4372. $6f, $6f, $6c, $65, $61, $6e, $1, 0, $1, 0,
  4373. 0, 0, $75, $14, 0, $1, 0, $7, 0, 0,
  4374. 0, $42, $6f, $6f, $6c, $65, $61, $6e, $1, 0,
  4375. $1, 0, 0, 0, $76, $14, 0, $b, 0, $1f,
  4376. 0, $1, 0, $c, 0, 0, 0, $4d, $61, $74,
  4377. $65, $72, $69, $61, $6c, $57, $72, $61, $70, $a,
  4378. 0, $5, 0, $60, $ae, $85, $48, $e8, $78, $cf,
  4379. $11, $8f, $52, 0, $40, $33, $35, $94, $a3, $1,
  4380. 0, $7, 0, 0, 0, $42, $6f, $6f, $6c, $65,
  4381. $61, $6e, $1, 0, $1, 0, 0, 0, $75, $14,
  4382. 0, $1, 0, $7, 0, 0, 0, $42, $6f, $6f,
  4383. $6c, $65, $61, $6e, $1, 0, $1, 0, 0, 0,
  4384. $76, $14, 0, $b, 0, $1f, 0, $1, 0, $f,
  4385. 0, 0, 0, $54, $65, $78, $74, $75, $72, $65,
  4386. $46, $69, $6c, $65, $6e, $61, $6d, $65, $a, 0,
  4387. $5, 0, $e1, $90, $27, $a4, $10, $78, $cf, $11,
  4388. $8f, $52, 0, $40, $33, $35, $94, $a3, $31, 0,
  4389. $1, 0, $8, 0, 0, 0, $66, $69, $6c, $65,
  4390. $6e, $61, $6d, $65, $14, 0, $b, 0, $1f, 0,
  4391. $1, 0, $8, 0, 0, 0, $4d, $61, $74, $65,
  4392. $72, $69, $61, $6c, $a, 0, $5, 0, $4d, $ab,
  4393. $82, $3d, $da, $62, $cf, $11, $ab, $39, 0, $20,
  4394. $af, $71, $e4, $33, $1, 0, $9, 0, 0, 0,
  4395. $43, $6f, $6c, $6f, $72, $52, $47, $42, $41, $1,
  4396. 0, $9, 0, 0, 0, $66, $61, $63, $65, $43,
  4397. $6f, $6c, $6f, $72, $14, 0, $2a, 0, $1, 0,
  4398. $5, 0, 0, 0, $70, $6f, $77, $65, $72, $14,
  4399. 0, $1, 0, $8, 0, 0, 0, $43, $6f, $6c,
  4400. $6f, $72, $52, $47, $42, $1, 0, $d, 0, 0,
  4401. 0, $73, $70, $65, $63, $75, $6c, $61, $72, $43,
  4402. $6f, $6c, $6f, $72, $14, 0, $1, 0, $8, 0,
  4403. 0, 0, $43, $6f, $6c, $6f, $72, $52, $47, $42,
  4404. $1, 0, $d, 0, 0, 0, $65, $6d, $69, $73,
  4405. $73, $69, $76, $65, $43, $6f, $6c, $6f, $72, $14,
  4406. 0, $e, 0, $12, 0, $12, 0, $12, 0, $f,
  4407. 0, $b, 0, $1f, 0, $1, 0, $8, 0, 0,
  4408. 0, $4d, $65, $73, $68, $46, $61, $63, $65, $a,
  4409. 0, $5, 0, $5f, $ab, $82, $3d, $da, $62, $cf,
  4410. $11, $ab, $39, 0, $20, $af, $71, $e4, $33, $29,
  4411. 0, $1, 0, $12, 0, 0, 0, $6e, $46, $61,
  4412. $63, $65, $56, $65, $72, $74, $65, $78, $49, $6e,
  4413. $64, $69, $63, $65, $73, $14, 0, $34, 0, $29,
  4414. 0, $1, 0, $11, 0, 0, 0, $66, $61, $63,
  4415. $65, $56, $65, $72, $74, $65, $78, $49, $6e, $64,
  4416. $69, $63, $65, $73, $e, 0, $1, 0, $12, 0,
  4417. 0, 0, $6e, $46, $61, $63, $65, $56, $65, $72,
  4418. $74, $65, $78, $49, $6e, $64, $69, $63, $65, $73,
  4419. $f, 0, $14, 0, $b, 0, $1f, 0, $1, 0,
  4420. $d, 0, 0, 0, $4d, $65, $73, $68, $46, $61,
  4421. $63, $65, $57, $72, $61, $70, $73, $a, 0, $5,
  4422. 0, $c0, $c5, $1e, $ed, $a8, $c0, $d0, $11, $94,
  4423. $1c, 0, $80, $c8, $c, $fa, $7b, $29, 0, $1,
  4424. 0, $f, 0, 0, 0, $6e, $46, $61, $63, $65,
  4425. $57, $72, $61, $70, $56, $61, $6c, $75, $65, $73,
  4426. $14, 0, $34, 0, $1, 0, $9, 0, 0, 0,
  4427. $42, $6f, $6f, $6c, $65, $61, $6e, $32, $64, $1,
  4428. 0, $e, 0, 0, 0, $66, $61, $63, $65, $57,
  4429. $72, $61, $70, $56, $61, $6c, $75, $65, $73, $e,
  4430. 0, $1, 0, $f, 0, 0, 0, $6e, $46, $61,
  4431. $63, $65, $57, $72, $61, $70, $56, $61, $6c, $75,
  4432. $65, $73, $f, 0, $14, 0, $b, 0, $1f, 0,
  4433. $1, 0, $11, 0, 0, 0, $4d, $65, $73, $68,
  4434. $54, $65, $78, $74, $75, $72, $65, $43, $6f, $6f,
  4435. $72, $64, $73, $a, 0, $5, 0, $40, $3f, $f2,
  4436. $f6, $86, $76, $cf, $11, $8f, $52, 0, $40, $33,
  4437. $35, $94, $a3, $29, 0, $1, 0, $e, 0, 0,
  4438. 0, $6e, $54, $65, $78, $74, $75, $72, $65, $43,
  4439. $6f, $6f, $72, $64, $73, $14, 0, $34, 0, $1,
  4440. 0, $8, 0, 0, 0, $43, $6f, $6f, $72, $64,
  4441. $73, $32, $64, $1, 0, $d, 0, 0, 0, $74,
  4442. $65, $78, $74, $75, $72, $65, $43, $6f, $6f, $72,
  4443. $64, $73, $e, 0, $1, 0, $e, 0, 0, 0,
  4444. $6e, $54, $65, $78, $74, $75, $72, $65, $43, $6f,
  4445. $6f, $72, $64, $73, $f, 0, $14, 0, $b, 0,
  4446. $1f, 0, $1, 0, $10, 0, 0, 0, $4d, $65,
  4447. $73, $68, $4d, $61, $74, $65, $72, $69, $61, $6c,
  4448. $4c, $69, $73, $74, $a, 0, $5, 0, $42, $3f,
  4449. $f2, $f6, $86, $76, $cf, $11, $8f, $52, 0, $40,
  4450. $33, $35, $94, $a3, $29, 0, $1, 0, $a, 0,
  4451. 0, 0, $6e, $4d, $61, $74, $65, $72, $69, $61,
  4452. $6c, $73, $14, 0, $29, 0, $1, 0, $c, 0,
  4453. 0, 0, $6e, $46, $61, $63, $65, $49, $6e, $64,
  4454. $65, $78, $65, $73, $14, 0, $34, 0, $29, 0,
  4455. $1, 0, $b, 0, 0, 0, $66, $61, $63, $65,
  4456. $49, $6e, $64, $65, $78, $65, $73, $e, 0, $1,
  4457. 0, $c, 0, 0, 0, $6e, $46, $61, $63, $65,
  4458. $49, $6e, $64, $65, $78, $65, $73, $f, 0, $14,
  4459. 0, $e, 0, $1, 0, $8, 0, 0, 0, $4d,
  4460. $61, $74, $65, $72, $69, $61, $6c, $f, 0, $b,
  4461. 0, $1f, 0, $1, 0, $b, 0, 0, 0, $4d,
  4462. $65, $73, $68, $4e, $6f, $72, $6d, $61, $6c, $73,
  4463. $a, 0, $5, 0, $43, $3f, $f2, $f6, $86, $76,
  4464. $cf, $11, $8f, $52, 0, $40, $33, $35, $94, $a3,
  4465. $29, 0, $1, 0, $8, 0, 0, 0, $6e, $4e,
  4466. $6f, $72, $6d, $61, $6c, $73, $14, 0, $34, 0,
  4467. $1, 0, $6, 0, 0, 0, $56, $65, $63, $74,
  4468. $6f, $72, $1, 0, $7, 0, 0, 0, $6e, $6f,
  4469. $72, $6d, $61, $6c, $73, $e, 0, $1, 0, $8,
  4470. 0, 0, 0, $6e, $4e, $6f, $72, $6d, $61, $6c,
  4471. $73, $f, 0, $14, 0, $29, 0, $1, 0, $c,
  4472. 0, 0, 0, $6e, $46, $61, $63, $65, $4e, $6f,
  4473. $72, $6d, $61, $6c, $73, $14, 0, $34, 0, $1,
  4474. 0, $8, 0, 0, 0, $4d, $65, $73, $68, $46,
  4475. $61, $63, $65, $1, 0, $b, 0, 0, 0, $66,
  4476. $61, $63, $65, $4e, $6f, $72, $6d, $61, $6c, $73,
  4477. $e, 0, $1, 0, $c, 0, 0, 0, $6e, $46,
  4478. $61, $63, $65, $4e, $6f, $72, $6d, $61, $6c, $73,
  4479. $f, 0, $14, 0, $b, 0, $1f, 0, $1, 0,
  4480. $10, 0, 0, 0, $4d, $65, $73, $68, $56, $65,
  4481. $72, $74, $65, $78, $43, $6f, $6c, $6f, $72, $73,
  4482. $a, 0, $5, 0, $21, $b8, $30, $16, $42, $78,
  4483. $cf, $11, $8f, $52, 0, $40, $33, $35, $94, $a3,
  4484. $29, 0, $1, 0, $d, 0, 0, 0, $6e, $56,
  4485. $65, $72, $74, $65, $78, $43, $6f, $6c, $6f, $72,
  4486. $73, $14, 0, $34, 0, $1, 0, $c, 0, 0,
  4487. 0, $49, $6e, $64, $65, $78, $65, $64, $43, $6f,
  4488. $6c, $6f, $72, $1, 0, $c, 0, 0, 0, $76,
  4489. $65, $72, $74, $65, $78, $43, $6f, $6c, $6f, $72,
  4490. $73, $e, 0, $1, 0, $d, 0, 0, 0, $6e,
  4491. $56, $65, $72, $74, $65, $78, $43, $6f, $6c, $6f,
  4492. $72, $73, $f, 0, $14, 0, $b, 0, $1f, 0,
  4493. $1, 0, $4, 0, 0, 0, $4d, $65, $73, $68,
  4494. $a, 0, $5, 0, $44, $ab, $82, $3d, $da, $62,
  4495. $cf, $11, $ab, $39, 0, $20, $af, $71, $e4, $33,
  4496. $29, 0, $1, 0, $9, 0, 0, 0, $6e, $56,
  4497. $65, $72, $74, $69, $63, $65, $73, $14, 0, $34,
  4498. 0, $1, 0, $6, 0, 0, 0, $56, $65, $63,
  4499. $74, $6f, $72, $1, 0, $8, 0, 0, 0, $76,
  4500. $65, $72, $74, $69, $63, $65, $73, $e, 0, $1,
  4501. 0, $9, 0, 0, 0, $6e, $56, $65, $72, $74,
  4502. $69, $63, $65, $73, $f, 0, $14, 0, $29, 0,
  4503. $1, 0, $6, 0, 0, 0, $6e, $46, $61, $63,
  4504. $65, $73, $14, 0, $34, 0, $1, 0, $8, 0,
  4505. 0, 0, $4d, $65, $73, $68, $46, $61, $63, $65,
  4506. $1, 0, $5, 0, 0, 0, $66, $61, $63, $65,
  4507. $73, $e, 0, $1, 0, $6, 0, 0, 0, $6e,
  4508. $46, $61, $63, $65, $73, $f, 0, $14, 0, $e,
  4509. 0, $12, 0, $12, 0, $12, 0, $f, 0, $b,
  4510. 0, $1f, 0, $1, 0, $14, 0, 0, 0, $46,
  4511. $72, $61, $6d, $65, $54, $72, $61, $6e, $73, $66,
  4512. $6f, $72, $6d, $4d, $61, $74, $72, $69, $78, $a,
  4513. 0, $5, 0, $41, $3f, $f2, $f6, $86, $76, $cf,
  4514. $11, $8f, $52, 0, $40, $33, $35, $94, $a3, $1,
  4515. 0, $9, 0, 0, 0, $4d, $61, $74, $72, $69,
  4516. $78, $34, $78, $34, $1, 0, $b, 0, 0, 0,
  4517. $66, $72, $61, $6d, $65, $4d, $61, $74, $72, $69,
  4518. $78, $14, 0, $b, 0, $1f, 0, $1, 0, $5,
  4519. 0, 0, 0, $46, $72, $61, $6d, $65, $a, 0,
  4520. $5, 0, $46, $ab, $82, $3d, $da, $62, $cf, $11,
  4521. $ab, $39, 0, $20, $af, $71, $e4, $33, $e, 0,
  4522. $12, 0, $12, 0, $12, 0, $f, 0, $b, 0,
  4523. $1f, 0, $1, 0, $9, 0, 0, 0, $46, $6c,
  4524. $6f, $61, $74, $4b, $65, $79, $73, $a, 0, $5,
  4525. 0, $a9, $46, $dd, $10, $5b, $77, $cf, $11, $8f,
  4526. $52, 0, $40, $33, $35, $94, $a3, $29, 0, $1,
  4527. 0, $7, 0, 0, 0, $6e, $56, $61, $6c, $75,
  4528. $65, $73, $14, 0, $34, 0, $2a, 0, $1, 0,
  4529. $6, 0, 0, 0, $76, $61, $6c, $75, $65, $73,
  4530. $e, 0, $1, 0, $7, 0, 0, 0, $6e, $56,
  4531. $61, $6c, $75, $65, $73, $f, 0, $14, 0, $b,
  4532. 0, $1f, 0, $1, 0, $e, 0, 0, 0, $54,
  4533. $69, $6d, $65, $64, $46, $6c, $6f, $61, $74, $4b,
  4534. $65, $79, $73, $a, 0, $5, 0, $80, $b1, $6,
  4535. $f4, $3b, $7b, $cf, $11, $8f, $52, 0, $40, $33,
  4536. $35, $94, $a3, $29, 0, $1, 0, $4, 0, 0,
  4537. 0, $74, $69, $6d, $65, $14, 0, $1, 0, $9,
  4538. 0, 0, 0, $46, $6c, $6f, $61, $74, $4b, $65,
  4539. $79, $73, $1, 0, $6, 0, 0, 0, $74, $66,
  4540. $6b, $65, $79, $73, $14, 0, $b, 0, $1f, 0,
  4541. $1, 0, $c, 0, 0, 0, $41, $6e, $69, $6d,
  4542. $61, $74, $69, $6f, $6e, $4b, $65, $79, $a, 0,
  4543. $5, 0, $a8, $46, $dd, $10, $5b, $77, $cf, $11,
  4544. $8f, $52, 0, $40, $33, $35, $94, $a3, $29, 0,
  4545. $1, 0, $7, 0, 0, 0, $6b, $65, $79, $54,
  4546. $79, $70, $65, $14, 0, $29, 0, $1, 0, $5,
  4547. 0, 0, 0, $6e, $4b, $65, $79, $73, $14, 0,
  4548. $34, 0, $1, 0, $e, 0, 0, 0, $54, $69,
  4549. $6d, $65, $64, $46, $6c, $6f, $61, $74, $4b, $65,
  4550. $79, $73, $1, 0, $4, 0, 0, 0, $6b, $65,
  4551. $79, $73, $e, 0, $1, 0, $5, 0, 0, 0,
  4552. $6e, $4b, $65, $79, $73, $f, 0, $14, 0, $b,
  4553. 0, $1f, 0, $1, 0, $10, 0, 0, 0, $41,
  4554. $6e, $69, $6d, $61, $74, $69, $6f, $6e, $4f, $70,
  4555. $74, $69, $6f, $6e, $73, $a, 0, $5, 0, $c0,
  4556. $56, $bf, $e2, $f, $84, $cf, $11, $8f, $52, 0,
  4557. $40, $33, $35, $94, $a3, $29, 0, $1, 0, $a,
  4558. 0, 0, 0, $6f, $70, $65, $6e, $63, $6c, $6f,
  4559. $73, $65, $64, $14, 0, $29, 0, $1, 0, $f,
  4560. 0, 0, 0, $70, $6f, $73, $69, $74, $69, $6f,
  4561. $6e, $71, $75, $61, $6c, $69, $74, $79, $14, 0,
  4562. $b, 0, $1f, 0, $1, 0, $9, 0, 0, 0,
  4563. $41, $6e, $69, $6d, $61, $74, $69, $6f, $6e, $a,
  4564. 0, $5, 0, $4f, $ab, $82, $3d, $da, $62, $cf,
  4565. $11, $ab, $39, 0, $20, $af, $71, $e4, $33, $e,
  4566. 0, $12, 0, $12, 0, $12, 0, $f, 0, $b,
  4567. 0, $1f, 0, $1, 0, $c, 0, 0, 0, $41,
  4568. $6e, $69, $6d, $61, $74, $69, $6f, $6e, $53, $65,
  4569. $74, $a, 0, $5, 0, $50, $ab, $82, $3d, $da,
  4570. $62, $cf, $11, $ab, $39, 0, $20, $af, $71, $e4,
  4571. $33, $e, 0, $1, 0, $9, 0, 0, 0, $41,
  4572. $6e, $69, $6d, $61, $74, $69, $6f, $6e, $f, 0,
  4573. $b, 0, $1f, 0, $1, 0, $a, 0, 0, 0,
  4574. $49, $6e, $6c, $69, $6e, $65, $44, $61, $74, $61,
  4575. $a, 0, $5, 0, $a0, $ee, $23, $3a, $b1, $94,
  4576. $d0, $11, $ab, $39, 0, $20, $af, $71, $e4, $33,
  4577. $e, 0, $1, 0, $6, 0, 0, 0, $42, $49,
  4578. $4e, $41, $52, $59, $f, 0, $b, 0, $1f, 0,
  4579. $1, 0, $3, 0, 0, 0, $55, $72, $6c, $a,
  4580. 0, $5, 0, $a1, $ee, $23, $3a, $b1, $94, $d0,
  4581. $11, $ab, $39, 0, $20, $af, $71, $e4, $33, $29,
  4582. 0, $1, 0, $5, 0, 0, 0, $6e, $55, $72,
  4583. $6c, $73, $14, 0, $34, 0, $31, 0, $1, 0,
  4584. $4, 0, 0, 0, $75, $72, $6c, $73, $e, 0,
  4585. $1, 0, $5, 0, 0, 0, $6e, $55, $72, $6c,
  4586. $73, $f, 0, $14, 0, $b, 0, $1f, 0, $1,
  4587. 0, $f, 0, 0, 0, $50, $72, $6f, $67, $72,
  4588. $65, $73, $73, $69, $76, $65, $4d, $65, $73, $68,
  4589. $a, 0, $5, 0, $60, $c3, $63, $8a, $7d, $99,
  4590. $d0, $11, $94, $1c, 0, $80, $c8, $c, $fa, $7b,
  4591. $e, 0, $1, 0, $3, 0, 0, 0, $55, $72,
  4592. $6c, $13, 0, $1, 0, $a, 0, 0, 0, $49,
  4593. $6e, $6c, $69, $6e, $65, $44, $61, $74, $61, $f,
  4594. 0, $b, 0, $1f, 0, $1, 0, $4, 0, 0,
  4595. 0, $47, $75, $69, $64, $a, 0, $5, 0, $e0,
  4596. $90, $27, $a4, $10, $78, $cf, $11, $8f, $52, 0,
  4597. $40, $33, $35, $94, $a3, $29, 0, $1, 0, $5,
  4598. 0, 0, 0, $64, $61, $74, $61, $31, $14, 0,
  4599. $28, 0, $1, 0, $5, 0, 0, 0, $64, $61,
  4600. $74, $61, $32, $14, 0, $28, 0, $1, 0, $5,
  4601. 0, 0, 0, $64, $61, $74, $61, $33, $14, 0,
  4602. $34, 0, $2d, 0, $1, 0, $5, 0, 0, 0,
  4603. $64, $61, $74, $61, $34, $e, 0, $3, 0, $8,
  4604. 0, 0, 0, $f, 0, $14, 0, $b, 0, $1f,
  4605. 0, $1, 0, $e, 0, 0, 0, $53, $74, $72,
  4606. $69, $6e, $67, $50, $72, $6f, $70, $65, $72, $74,
  4607. $79, $a, 0, $5, 0, $e0, $21, $f, $7f, $e1,
  4608. $bf, $d1, $11, $82, $c0, 0, $a0, $c9, $69, $72,
  4609. $71, $31, 0, $1, 0, $3, 0, 0, 0, $6b,
  4610. $65, $79, $14, 0, $31, 0, $1, 0, $5, 0,
  4611. 0, 0, $76, $61, $6c, $75, $65, $14, 0, $b,
  4612. 0, $1f, 0, $1, 0, $b, 0, 0, 0, $50,
  4613. $72, $6f, $70, $65, $72, $74, $79, $42, $61, $67,
  4614. $a, 0, $5, 0, $e1, $21, $f, $7f, $e1, $bf,
  4615. $d1, $11, $82, $c0, 0, $a0, $c9, $69, $72, $71,
  4616. $e, 0, $1, 0, $e, 0, 0, 0, $53, $74,
  4617. $72, $69, $6e, $67, $50, $72, $6f, $70, $65, $72,
  4618. $74, $79, $f, 0, $b, 0, $1f, 0, $1, 0,
  4619. $e, 0, 0, 0, $45, $78, $74, $65, $72, $6e,
  4620. $61, $6c, $56, $69, $73, $75, $61, $6c, $a, 0,
  4621. $5, 0, $a0, $6a, $11, $98, $ba, $bd, $d1, $11,
  4622. $82, $c0, 0, $a0, $c9, $69, $72, $71, $1, 0,
  4623. $4, 0, 0, 0, $47, $75, $69, $64, $1, 0,
  4624. $12, 0, 0, 0, $67, $75, $69, $64, $45, $78,
  4625. $74, $65, $72, $6e, $61, $6c, $56, $69, $73, $75,
  4626. $61, $6c, $14, 0, $e, 0, $12, 0, $12, 0,
  4627. $12, 0, $f, 0, $b, 0);
  4628. {$ENDIF}
  4629. implementation
  4630. {$IFDEF DIRECT3D_VERSION_LESS_8}
  4631. {$IFDEF DIRECT3D_VERSION_7}
  4632. function D3DFVF_TEXCOORDSIZE3(CoordIndex: DWORD): DWORD;
  4633. begin
  4634. Result := (D3DFVF_TEXTUREFORMAT3 shl (CoordIndex*2 + 16));
  4635. end;
  4636. function D3DFVF_TEXCOORDSIZE2(CoordIndex: DWORD): DWORD;
  4637. begin
  4638. Result := (D3DFVF_TEXTUREFORMAT2);
  4639. end;
  4640. function D3DFVF_TEXCOORDSIZE4(CoordIndex: DWORD): DWORD;
  4641. begin
  4642. Result := (D3DFVF_TEXTUREFORMAT4 shl (CoordIndex*2 + 16));
  4643. end;
  4644. function D3DFVF_TEXCOORDSIZE1(CoordIndex: DWORD): DWORD;
  4645. begin
  4646. Result := (D3DFVF_TEXTUREFORMAT1 shl (CoordIndex*2 + 16));
  4647. end;
  4648. {$ENDIF} // DIRECT3D_VERSION_7
  4649. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  4650. function D3DVal(val: variant): Single;
  4651. begin
  4652. Result := val;
  4653. end;
  4654. function D3DDivide(a, b: double): Single;
  4655. begin
  4656. Result := a / b;
  4657. end;
  4658. function D3DMultiply(a, b: double): Single;
  4659. begin
  4660. Result := a * b;
  4661. end;
  4662. // #define CI_GETALPHA(ci) ((ci) >> 24)
  4663. function CI_GETALPHA(ci: DWORD): DWORD;
  4664. begin
  4665. Result := ci shr 24;
  4666. end;
  4667. // #define CI_GETINDEX(ci) (((ci) >> 8) & 0xffff)
  4668. function CI_GETINDEX(ci: DWORD): DWORD;
  4669. begin
  4670. Result := (ci shr 8) and $ffff;
  4671. end;
  4672. // #define CI_GETFRACTION(ci) ((ci) & 0xff)
  4673. function CI_GETFRACTION(ci: DWORD): DWORD;
  4674. begin
  4675. Result := ci and $ff;
  4676. end;
  4677. // #define CI_ROUNDINDEX(ci) CI_GETINDEX((ci) + 0x80)
  4678. function CI_ROUNDINDEX(ci: DWORD): DWORD;
  4679. begin
  4680. Result := CI_GETINDEX(ci + $80);
  4681. end;
  4682. // #define CI_MASKALPHA(ci) ((ci) & 0xffffff)
  4683. function CI_MASKALPHA(ci: DWORD): DWORD;
  4684. begin
  4685. Result := ci and $ffffff;
  4686. end;
  4687. // #define CI_MAKE(a, i, f) (((a) << 24) | ((i) << 8) | (f))
  4688. function CI_MAKE(a,i,f: DWORD): DWORD;
  4689. begin
  4690. Result := (a shl 24) or (i shl 8) or f;
  4691. end;
  4692. // #define RGBA_GETALPHA(rgb) ((rgb) >> 24)
  4693. function RGBA_GETALPHA(rgb: TD3DColor): DWORD;
  4694. begin
  4695. Result := rgb shr 24;
  4696. end;
  4697. // #define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
  4698. function RGBA_GETRED(rgb: TD3DColor): DWORD;
  4699. begin
  4700. Result := (rgb shr 16) and $ff;
  4701. end;
  4702. // #define RGBA_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
  4703. function RGBA_GETGREEN(rgb: TD3DColor): DWORD;
  4704. begin
  4705. Result := (rgb shr 8) and $ff;
  4706. end;
  4707. // #define RGBA_GETBLUE(rgb) ((rgb) & 0xff)
  4708. function RGBA_GETBLUE(rgb: TD3DColor): DWORD;
  4709. begin
  4710. Result := rgb and $ff;
  4711. end;
  4712. // #define RGBA_MAKE(r, g, b, a) ((TD3DColor) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
  4713. function RGBA_MAKE(r, g, b, a: DWORD): TD3DColor;
  4714. begin
  4715. Result := (a shl 24) or (r shl 16) or (g shl 8) or b;
  4716. end;
  4717. // #define D3DRGB(r, g, b) \
  4718. // (0xff000000L | (((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
  4719. function D3DRGB(r, g, b: Single): TD3DColor;
  4720. begin
  4721. Result := $ff000000 or DWORD(Round(r * 255) shl 16)
  4722. or DWORD(Round(g * 255) shl 8)
  4723. or DWORD(Round(b * 255));
  4724. end;
  4725. // #define D3DRGBA(r, g, b, a) \
  4726. // ( (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
  4727. // | (((long)((g) * 255)) << 8) | (long)((b) * 255) \
  4728. // )
  4729. function D3DRGBA(r, g, b, a: Single): TD3DColor;
  4730. begin
  4731. Result := DWORD(Round(a * 255) shl 24) or DWORD(Round(r * 255) shl 16)
  4732. or DWORD(Round(g * 255) shl 8)
  4733. or DWORD(Round(b * 255));
  4734. end;
  4735. // #define RGB_GETRED(rgb) (((rgb) >> 16) & 0xff)
  4736. function RGB_GETRED(rgb: TD3DColor): DWORD;
  4737. begin
  4738. Result := (rgb shr 16) and $ff;
  4739. end;
  4740. // #define RGB_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
  4741. function RGB_GETGREEN(rgb: TD3DColor): DWORD;
  4742. begin
  4743. Result := (rgb shr 8) and $ff;
  4744. end;
  4745. // #define RGB_GETBLUE(rgb) ((rgb) & 0xff)
  4746. function RGB_GETBLUE(rgb: TD3DColor): DWORD;
  4747. begin
  4748. Result := rgb and $ff;
  4749. end;
  4750. // #define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
  4751. function RGBA_SETALPHA(rgba: TD3DColor; x: DWORD): TD3DColor;
  4752. begin
  4753. Result := (x shl 24) or (rgba and $00ffffff);
  4754. end;
  4755. // #define RGB_MAKE(r, g, b) ((TD3DColor) (((r) << 16) | ((g) << 8) | (b)))
  4756. function RGB_MAKE(r, g, b: DWORD): TD3DColor;
  4757. begin
  4758. Result := (r shl 16) or (g shl 8) or b;
  4759. end;
  4760. // #define RGBA_TORGB(rgba) ((TD3DColor) ((rgba) & 0xffffff))
  4761. function RGBA_TORGB(rgba: TD3DColor): TD3DColor;
  4762. begin
  4763. Result := rgba and $00ffffff;
  4764. end;
  4765. // #define RGB_TORGBA(rgb) ((TD3DColor) ((rgb) | 0xff000000))
  4766. function RGB_TORGBA(rgb: TD3DColor): TD3DColor;
  4767. begin
  4768. Result := rgb or $ff000000;
  4769. end;
  4770. function D3DSTATE_OVERRIDE(StateType: DWORD): DWORD;
  4771. begin
  4772. Result := StateType + D3DSTATE_OVERRIDE_BIAS;
  4773. end;
  4774. function D3DTRIFLAG_STARTFLAT(len: DWORD): DWORD;
  4775. begin
  4776. if not (len in [1..29]) then len := 0;
  4777. Result := len;
  4778. end;
  4779. // #define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
  4780. function D3DRENDERSTATE_STIPPLEPATTERN(y: Integer): TD3DRenderStateType;
  4781. begin
  4782. Result := TD3DRenderStateType(Ord(D3DRENDERSTATE_STIPPLEPATTERN00) + y);
  4783. end;
  4784. // Addition and subtraction
  4785. function VectorAdd(const v1, v2: TD3DVector): TD3DVector;
  4786. begin
  4787. Result.x := v1.x+v2.x;
  4788. Result.y := v1.y+v2.y;
  4789. Result.z := v1.z+v2.z;
  4790. end;
  4791. function VectorSub(const v1, v2: TD3DVector): TD3DVector;
  4792. begin
  4793. Result.x := v1.x-v2.x;
  4794. Result.y := v1.y-v2.y;
  4795. Result.z := v1.z-v2.z;
  4796. end;
  4797. // Scalar multiplication and division
  4798. function VectorMulS(const v: TD3DVector; s: TD3DValue): TD3DVector;
  4799. begin
  4800. Result.x := v.x*s;
  4801. Result.y := v.y*s;
  4802. Result.z := v.z*s;
  4803. end;
  4804. function VectorDivS(const v: TD3DVector; s: TD3DValue): TD3DVector;
  4805. begin
  4806. Result.x := v.x/s;
  4807. Result.y := v.y/s;
  4808. Result.z := v.z/s;
  4809. end;
  4810. // Memberwise multiplication and division
  4811. function VectorMul(const v1, v2: TD3DVector): TD3DVector;
  4812. begin
  4813. Result.x := v1.x*v2.x;
  4814. Result.y := v1.y*v2.y;
  4815. Result.z := v1.z*v2.z;
  4816. end;
  4817. function VectorDiv(const v1, v2: TD3DVector): TD3DVector;
  4818. begin
  4819. Result.x := v1.x/v2.x;
  4820. Result.y := v1.y/v2.y;
  4821. Result.z := v1.z/v2.z;
  4822. end;
  4823. // Vector dominance
  4824. function VectorSmaller(v1, v2: TD3DVector): boolean;
  4825. begin
  4826. result := (v1.x < v2.x) and (v1.y < v2.y) and (v1.z < v2.z);
  4827. end;
  4828. function VectorSmallerEqual(v1, v2: TD3DVector): boolean;
  4829. begin
  4830. result := (v1.x <= v2.x) and (v1.y <= v2.y) and (v1.z <= v2.z);
  4831. end;
  4832. // Bitwise equality
  4833. function VectorEqual(v1, v2: TD3DVector): boolean;
  4834. begin
  4835. result := (v1.x = v2.x) and (v1.y = v2.y) and (v1.z = v2.z);
  4836. end;
  4837. // Length-related functions
  4838. function VectorSquareMagnitude(v: TD3DVector): TD3DValue;
  4839. begin
  4840. result := (v.x*v.x) + (v.y*v.y) + (v.z*v.z);
  4841. end;
  4842. function VectorMagnitude(v: TD3DVector): TD3DValue;
  4843. begin
  4844. result := sqrt((v.x*v.x) + (v.y*v.y) + (v.z*v.z));
  4845. end;
  4846. // Returns vector with same direction and unit length
  4847. function VectorNormalize(const v: TD3DVector): TD3DVector;
  4848. begin
  4849. result := VectorDivS(v,VectorMagnitude(v));
  4850. end;
  4851. // Return min/max component of the input vector
  4852. function VectorMin(v: TD3DVector): TD3DValue;
  4853. var
  4854. ret : TD3DValue;
  4855. begin
  4856. ret := v.x;
  4857. if (v.y < ret) then ret := v.y;
  4858. if (v.z < ret) then ret := v.z;
  4859. Result := ret;
  4860. end;
  4861. function VectorMax(v: TD3DVector): TD3DValue;
  4862. var
  4863. ret : TD3DValue;
  4864. begin
  4865. ret := v.x;
  4866. if (ret < v.y) then ret := v.y;
  4867. if (ret < v.z) then ret := v.z;
  4868. Result := ret;
  4869. end;
  4870. // Return memberwise min/max of input vectors
  4871. function VectorMinimize(const v1, v2: TD3DVector): TD3DVector;
  4872. begin
  4873. if v1.x < v2.x then Result.x := v1.x else Result.x := v2.x;
  4874. if v1.y < v2.y then Result.y := v1.y else Result.y := v2.y;
  4875. if v1.z < v2.z then Result.z := v1.z else Result.z := v2.z;
  4876. end;
  4877. function VectorMaximize(const v1, v2: TD3DVector): TD3DVector;
  4878. begin
  4879. if v1.x > v2.x then Result.x := v1.x else Result.x := v2.x;
  4880. if v1.y > v2.y then Result.y := v1.y else Result.y := v2.y;
  4881. if v1.z > v2.z then Result.z := v1.z else Result.z := v2.z;
  4882. end;
  4883. // Dot and cross product
  4884. function VectorDotProduct(v1, v2: TD3DVector): TD3DValue;
  4885. begin
  4886. Result := (v1.x*v2.x) + (v1.y * v2.y) + (v1.z*v2.z);
  4887. end;
  4888. function VectorCrossProduct(const v1, v2: TD3DVector): TD3DVector;
  4889. begin
  4890. Result.x := (v1.y*v2.z) - (v1.z*v2.y);
  4891. Result.y := (v1.z*v2.x) - (v1.x*v2.z);
  4892. Result.z := (v1.x*v2.y) - (v1.y*v2.x);
  4893. end;
  4894. procedure DisableFPUExceptions;
  4895. var
  4896. FPUControlWord: Word;
  4897. asm
  4898. FSTCW FPUControlWord;
  4899. OR FPUControlWord, $4 + $1; { Divide by zero + invalid operation }
  4900. FLDCW FPUControlWord;
  4901. end;
  4902. procedure EnableFPUExceptions;
  4903. var
  4904. FPUControlWord: Word;
  4905. asm
  4906. FSTCW FPUControlWord;
  4907. AND FPUControlWord, $FFFF - $4 - $1; { Divide by zero + invalid operation }
  4908. FLDCW FPUControlWord;
  4909. end;
  4910. {$IFDEF DIRECT3D_VERSION_LESS_8}
  4911. function D3DErrorString(Value: HResult): String; //Full description not available yet
  4912. begin
  4913. case Value of
  4914. D3D_OK: Result := 'No error';
  4915. D3DERR_BADMAJORVERSION: Result := 'D3DERR_BADMAJORVERSION';
  4916. D3DERR_BADMINORVERSION: Result := 'D3DERR_BADMINORVERSION';
  4917. {$IFDEF DIRECT3D_VERSION_5}
  4918. D3DERR_INVALID_DEVICE: Result := 'D3DERR_INITFAILED';
  4919. D3DERR_INITFAILED: Result := 'D3DERR_INITFAILED';
  4920. D3DERR_DEVICEAGGREGATED: Result := 'D3DERR_DEVICEAGGREGATED';
  4921. {$ENDIF} // DIRECT3D_VERSION_5
  4922. D3DERR_EXECUTE_CREATE_FAILED: Result := 'D3DERR_EXECUTE_CREATE_FAILED';
  4923. D3DERR_EXECUTE_DESTROY_FAILED: Result := 'D3DERR_EXECUTE_DESTROY_FAILED';
  4924. D3DERR_EXECUTE_LOCK_FAILED: Result := 'D3DERR_EXECUTE_LOCK_FAILED';
  4925. D3DERR_EXECUTE_UNLOCK_FAILED: Result := 'D3DERR_EXECUTE_UNLOCK_FAILED';
  4926. D3DERR_EXECUTE_LOCKED: Result := 'D3DERR_EXECUTE_LOCKED';
  4927. D3DERR_EXECUTE_NOT_LOCKED: Result := 'D3DERR_EXECUTE_NOT_LOCKED';
  4928. D3DERR_EXECUTE_FAILED: Result := 'D3DERR_EXECUTE_FAILED';
  4929. D3DERR_EXECUTE_CLIPPED_FAILED: Result := 'D3DERR_EXECUTE_CLIPPED_FAILED';
  4930. D3DERR_TEXTURE_NO_SUPPORT: Result := 'D3DERR_TEXTURE_NO_SUPPORT';
  4931. D3DERR_TEXTURE_CREATE_FAILED: Result := 'D3DERR_TEXTURE_CREATE_FAILED';
  4932. D3DERR_TEXTURE_DESTROY_FAILED: Result := 'D3DERR_TEXTURE_DESTROY_FAILED';
  4933. D3DERR_TEXTURE_LOCK_FAILED: Result := 'D3DERR_TEXTURE_LOCK_FAILED';
  4934. D3DERR_TEXTURE_UNLOCK_FAILED: Result := 'D3DERR_TEXTURE_UNLOCK_FAILED';
  4935. D3DERR_TEXTURE_LOAD_FAILED: Result := 'D3DERR_TEXTURE_LOAD_FAILED';
  4936. D3DERR_TEXTURE_SWAP_FAILED: Result := 'D3DERR_TEXTURE_SWAP_FAILED';
  4937. D3DERR_TEXTURE_LOCKED: Result := 'D3DERR_TEXTURELOCKED';
  4938. D3DERR_TEXTURE_NOT_LOCKED: Result := 'D3DERR_TEXTURE_NOT_LOCKED';
  4939. D3DERR_TEXTURE_GETSURF_FAILED: Result := 'D3DERR_TEXTURE_GETSURF_FAILED';
  4940. D3DERR_MATRIX_CREATE_FAILED: Result := 'D3DERR_MATRIX_CREATE_FAILED';
  4941. D3DERR_MATRIX_DESTROY_FAILED: Result := 'D3DERR_MATRIX_DESTROY_FAILED';
  4942. D3DERR_MATRIX_SETDATA_FAILED: Result := 'D3DERR_MATRIX_SETDATA_FAILED';
  4943. D3DERR_MATRIX_GETDATA_FAILED: Result := 'D3DERR_MATRIX_GETDATA_FAILED';
  4944. D3DERR_SETVIEWPORTDATA_FAILED: Result := 'D3DERR_SETVIEWPORTDATA_FAILED';
  4945. {$IFDEF DIRECT3D_VERSION_5}
  4946. D3DERR_INVALIDCURRENTVIEWPORT: Result := 'D3DERR_INVALIDCURRENTVIEWPORT';
  4947. D3DERR_INVALIDPRIMITIVETYPE: Result := 'D3DERR_INVALIDPRIMITIVETYPE';
  4948. D3DERR_INVALIDVERTEXTYPE: Result := 'D3DERR_INVALIDVERTEXTYPE';
  4949. D3DERR_TEXTURE_BADSIZE: Result := 'D3DERR_TEXTURE_BADSIZE';
  4950. D3DERR_INVALIDRAMPTEXTURE: Result := 'D3DERR_INVALIDRAMPTEXTURE';
  4951. {$ENDIF} // DIRECT3D_VERSION_5
  4952. D3DERR_MATERIAL_CREATE_FAILED: Result := 'D3DERR_MATERIAL_CREATE_FAILED';
  4953. D3DERR_MATERIAL_DESTROY_FAILED: Result := 'D3DERR_MATERIAL_DESTROY_FAILED';
  4954. D3DERR_MATERIAL_SETDATA_FAILED: Result := 'D3DERR_MATERIAL_SETDATA_FAILED';
  4955. D3DERR_MATERIAL_GETDATA_FAILED: Result := 'D3DERR_MATERIAL_GETDATA_FAILED';
  4956. {$IFDEF DIRECT3D_VERSION_5}
  4957. D3DERR_INVALIDPALETTE: Result := 'D3DERR_INVALIDPALETTE';
  4958. D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY: Result := 'D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY';
  4959. D3DERR_ZBUFF_NEEDS_VIDEOMEMORY: Result := 'D3DERR_ZBUFF_NEEDS_VIDEOMEMORY';
  4960. D3DERR_SURFACENOTINVIDMEM: Result := 'D3DERR_SURFACENOTINVIDMEM';
  4961. {$ENDIF} // DIRECT3D_VERSION_5
  4962. D3DERR_LIGHT_SET_FAILED: Result := 'D3DERR_LIGHT_SET_FAILED';
  4963. {$IFDEF DIRECT3D_VERSION_5}
  4964. D3DERR_LIGHTHASVIEWPORT: Result := 'D3DERR_LIGHTHASVIEWPORT';
  4965. D3DERR_LIGHTNOTINTHISVIEWPORT: Result := 'D3DERR_LIGHTNOTINTHISVIEWPORT';
  4966. {$ENDIF} // DIRECT3D_VERSION_5
  4967. D3DERR_SCENE_IN_SCENE: Result := 'D3DERR_SCENE_IN_SCENE';
  4968. D3DERR_SCENE_NOT_IN_SCENE: Result := 'D3DERR_SCENE_NOT_IN_SCENE';
  4969. D3DERR_SCENE_BEGIN_FAILED: Result := 'D3DERR_SCENE_BEGIN_FAILED';
  4970. D3DERR_SCENE_END_FAILED: Result := 'D3DERR_SCENE_END_FAILED';
  4971. {$IFDEF DIRECT3D_VERSION_5}
  4972. D3DERR_INBEGIN: Result := 'D3DERR_INBEGIN';
  4973. D3DERR_NOTINBEGIN: Result := 'D3DERR_NOTINBEGIN';
  4974. D3DERR_NOVIEWPORTS: Result := 'D3DERR_NOVIEWPORTS';
  4975. D3DERR_VIEWPORTDATANOTSET: Result := 'D3DERR_VIEWPORTDATANOTSET';
  4976. D3DERR_VIEWPORTHASNODEVICE: Result := 'D3DERR_VIEWPORTHASNODEVICE';
  4977. D3DERR_NOCURRENTVIEWPORT: Result := 'D3DERR_NOCURRENTVIEWPORT';
  4978. {$ENDIF} // DIRECT3D_VERSION_5
  4979. {$IFDEF DIRECT3D_VERSION_6}
  4980. D3DERR_INVALIDVERTEXFORMAT: Result := 'D3DERR_INVALIDVERTEXFORMAT';
  4981. D3DERR_COLORKEYATTACHED: Result := 'D3DERR_COLORKEYATTACHED';
  4982. D3DERR_VERTEXBUFFEROPTIMIZED: Result := 'D3DERR_VERTEXBUFFEROPTIMIZED';
  4983. D3DERR_VBUF_CREATE_FAILED: Result := 'D3DERR_VBUF_CREATE_FAILED';
  4984. D3DERR_VERTEXBUFFERLOCKED: Result := 'D3DERR_VERTEXBUFFERLOCKED';
  4985. D3DERR_ZBUFFER_NOTPRESENT: Result := 'D3DERR_ZBUFFER_NOTPRESENT';
  4986. D3DERR_STENCILBUFFER_NOTPRESENT: Result := 'D3DERR_STENCILBUFFER_NOTPRESENT';
  4987. D3DERR_WRONGTEXTUREFORMAT: Result := 'D3DERR_WRONGTEXTUREFORMAT';
  4988. D3DERR_UNSUPPORTEDCOLOROPERATION: Result := 'D3DERR_UNSUPPORTEDCOLOROPERATION';
  4989. D3DERR_UNSUPPORTEDCOLORARG: Result := 'D3DERR_UNSUPPORTEDCOLORARG';
  4990. D3DERR_UNSUPPORTEDALPHAOPERATION: Result := 'D3DERR_UNSUPPORTEDALPHAOPERATION';
  4991. D3DERR_UNSUPPORTEDALPHAARG: Result := 'D3DERR_UNSUPPORTEDALPHAARG';
  4992. D3DERR_TOOMANYOPERATIONS: Result := 'D3DERR_TOOMANYOPERATIONS';
  4993. D3DERR_CONFLICTINGTEXTUREFILTER: Result := 'D3DERR_CONFLICTINGTEXTUREFILTER';
  4994. D3DERR_UNSUPPORTEDFACTORVALUE: Result := 'D3DERR_UNSUPPORTEDFACTORVALUE';
  4995. D3DERR_CONFLICTINGRENDERSTATE: Result := 'D3DERR_CONFLICTINGRENDERSTATE';
  4996. D3DERR_UNSUPPORTEDTEXTUREFILTER: Result := 'D3DERR_UNSUPPORTEDTEXTUREFILTER';
  4997. D3DERR_TOOMANYPRIMITIVES: Result := 'D3DERR_TOOMANYPRIMITIVES';
  4998. D3DERR_INVALIDMATRIX: Result := 'D3DERR_INVALIDMATRIX';
  4999. D3DERR_TOOMANYVERTICES: Result := 'D3DERR_TOOMANYVERTICES';
  5000. D3DERR_CONFLICTINGTEXTUREPALETTE: Result := 'D3DERR_CONFLICTINGTEXTUREPALETTE';
  5001. {$ENDIF} // DIRECT3D_VERSION_6
  5002. {$IFDEF DIRECT3D_VERSION_7}
  5003. D3DERR_INVALIDSTATEBLOCK: Result := 'D3DERR_INVALIDSTATEBLOCK';
  5004. D3DERR_INBEGINSTATEBLOCK: Result := 'D3DERR_INBEGINSTATEBLOCK';
  5005. D3DERR_NOTINBEGINSTATEBLOCK: Result := 'D3DERR_NOTINBEGINSTATEBLOCK';
  5006. {$ENDIF} // DIRECT3D_VERSION_7
  5007. else Result := 'Unrecognized Error';
  5008. end;
  5009. end;
  5010. {$ENDIF} // DIRECT3D_VERSION_LESS_8
  5011. {$IFNDEF EXCLUDE_DXFILE_FROM_DIRECT3D}
  5012. function DXFileErrorString(Value: HResult): string;
  5013. begin
  5014. case Value of
  5015. DXFILE_OK: Result := 'Command completed successfully. Equivalent to DD_OK.';
  5016. DXFILEERR_BADVALUE: Result := 'Parameter is invalid.';
  5017. DXFILEERR_BADTYPE: Result := 'Object type is invalid.';
  5018. DXFILEERR_BADALLOC: Result := 'Memory allocation failed.';
  5019. DXFILEERR_NOTFOUND: Result := 'Object could not be found.';
  5020. DXFILEERR_FILENOTFOUND: Result := 'File could not be found.';
  5021. DXFILEERR_RESOURCENOTFOUND: Result := 'Resource could not be found.';
  5022. DXFILEERR_URLNOTFOUND: Result := 'URL could not be found.';
  5023. DXFILEERR_BADRESOURCE: Result := 'Resource is invalid.';
  5024. DXFILEERR_BADFILETYPE: Result := 'File is not a DirectX file.';
  5025. DXFILEERR_BADFILEVERSION: Result := 'File version is not valid.';
  5026. DXFILEERR_BADFILEFLOATSIZE: Result := 'Floating-point size is invalid.';
  5027. DXFILEERR_BADFILE: Result := 'File is invalid.';
  5028. DXFILEERR_PARSEERROR: Result := 'File could not be parsed.';
  5029. DXFILEERR_BADARRAYSIZE: Result := 'Array size is invalid.';
  5030. DXFILEERR_BADDATAREFERENCE: Result := 'Data reference is invalid.';
  5031. DXFILEERR_NOMOREOBJECTS: Result := 'All objects have been enumerated.';
  5032. DXFILEERR_NOMOREDATA: Result := 'No further data is available.';
  5033. else Result := 'Unrecognized Error';
  5034. end;
  5035. end;
  5036. initialization
  5037. begin
  5038. DisableFPUExceptions;
  5039. DXFileDLL := LoadLibrary('D3DXOF.DLL');
  5040. DirectXFileCreate := GetProcAddress(DXFileDLL,'DirectXFileCreate');
  5041. end;
  5042. finalization
  5043. begin
  5044. FreeLibrary(DXFileDLL);
  5045. end;
  5046. {$ENDIF}
  5047. end.