2
0

Direct3D9.pas 233 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614
  1. {******************************************************************************}
  2. {* *}
  3. {* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
  4. {* *}
  5. {* Files: d3d9types.h d3d9caps.h d3d9.h *}
  6. {* Content: Direct3D9 include files *}
  7. {* *}
  8. {* DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy *}
  9. {* E-Mail: [email protected] *}
  10. {* *}
  11. {* Latest version can be downloaded from: *}
  12. {* http://clootie.ru *}
  13. {* http://sourceforge.net/projects/delphi-dx9sdk *}
  14. {* *}
  15. {*----------------------------------------------------------------------------*}
  16. {* $Id: Direct3D9.pas,v 1.13 2006/10/22 22:00:33 clootie Exp $ }
  17. {******************************************************************************}
  18. { }
  19. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  20. { }
  21. { The contents of this file are used with permission, subject to the Mozilla }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html }
  25. { }
  26. { Software distributed under the License is distributed on an "AS IS" basis, }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License. }
  29. { }
  30. { Alternatively, the contents of this file may be used under the terms of the }
  31. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  32. { provisions of the LGPL License are applicable instead of those above. }
  33. { If you wish to allow use of your version of this file only under the terms }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting the provisions above and }
  36. { replace them with the notice and other provisions required by the LGPL }
  37. { License. If you do not delete the provisions above, a recipient may use }
  38. { your version of this file under either the MPL or the LGPL License. }
  39. { }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. { }
  42. {******************************************************************************}
  43. {$I DirectX.inc}
  44. unit Direct3D9;
  45. interface
  46. // Global level dynamic loading support
  47. {$IFDEF DYNAMIC_LINK_ALL}
  48. {$DEFINE DIRECT3D9_DYNAMIC_LINK}
  49. {$ENDIF}
  50. {$IFDEF DYNAMIC_LINK_EXPLICIT_ALL}
  51. {$DEFINE DIRECT3D9_DYNAMIC_LINK_EXPLICIT}
  52. {$ENDIF}
  53. // Remove "dots" below to force some kind of dynamic linking
  54. {.$DEFINE DIRECT3D9_DYNAMIC_LINK}
  55. {.$DEFINE DIRECT3D9_DYNAMIC_LINK_EXPLICIT}
  56. (*$HPPEMIT '#include "d3d9.h"' *)
  57. (*$HPPEMIT '#include "d3d9types.h"' *)
  58. (*$HPPEMIT '#include "d3d9caps.h"' *)
  59. uses Windows, DXTypes;
  60. ///// Helper constants (for use in SetRenderState) /////
  61. const
  62. iTrue = DWORD(True);
  63. iFalse = DWORD(False);
  64. (*==========================================================================;
  65. *
  66. * Copyright (C) Microsoft Corporation. All Rights Reserved.
  67. *
  68. * File: d3d9types.h
  69. * Content: Direct3D capabilities include file
  70. *
  71. ***************************************************************************)
  72. type
  73. // D3DCOLOR is equivalent to D3DFMT_A8R8G8B8
  74. D3DCOLOR = DXTypes.D3DCOLOR;
  75. {$EXTERNALSYM D3DCOLOR}
  76. TD3DColor = DXTypes.TD3DColor;
  77. // maps unsigned 8 bits/channel to D3DCOLOR
  78. // #define D3DCOLOR_ARGB(a,r,g,b) \
  79. // ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
  80. function D3DCOLOR_ARGB(a,r,g,b: DWord): TD3DColor;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  81. {$EXTERNALSYM D3DCOLOR_ARGB}
  82. // #define D3DCOLOR_RGBA(r,g,b,a) D3DCOLOR_ARGB(a,r,g,b)
  83. function D3DCOLOR_RGBA(r,g,b,a: DWord): TD3DColor;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  84. {$EXTERNALSYM D3DCOLOR_RGBA}
  85. // #define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b)
  86. function D3DCOLOR_XRGB(r,g,b: DWord): TD3DColor;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  87. {$EXTERNALSYM D3DCOLOR_XRGB}
  88. // #define D3DCOLOR_XYUV(y,u,v) D3DCOLOR_ARGB(0xff,y,u,v)
  89. function D3DCOLOR_XYUV(y,u,v: DWord): TD3DColor;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  90. {$EXTERNALSYM D3DCOLOR_XYUV}
  91. // #define D3DCOLOR_AYUV(a,y,u,v) D3DCOLOR_ARGB(a,y,u,v)
  92. function D3DCOLOR_AYUV(a,y,u,v: DWord): TD3DColor;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  93. {$EXTERNALSYM D3DCOLOR_AYUV}
  94. // maps floating point channels (0.f to 1.f range) to D3DCOLOR
  95. // #define D3DCOLOR_COLORVALUE(r,g,b,a) \
  96. // D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
  97. function D3DCOLOR_COLORVALUE(r,g,b,a: Single): TD3DColor;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  98. {$EXTERNALSYM D3DCOLOR_COLORVALUE}
  99. type
  100. _D3DVECTOR = DXTypes._D3DVECTOR;
  101. {$EXTERNALSYM _D3DVECTOR}
  102. D3DVECTOR = DXTypes.D3DVECTOR;
  103. {$EXTERNALSYM D3DVECTOR}
  104. TD3DVector = DXTypes.TD3DVector;
  105. PD3DVector = DXTypes.PD3DVector;
  106. PD3DColorValue = ^TD3DColorValue;
  107. _D3DCOLORVALUE = record
  108. r: Single;
  109. g: Single;
  110. b: Single;
  111. a: Single;
  112. end {_D3DCOLORVALUE};
  113. {$EXTERNALSYM _D3DCOLORVALUE}
  114. D3DCOLORVALUE = _D3DCOLORVALUE;
  115. {$EXTERNALSYM D3DCOLORVALUE}
  116. TD3DColorValue = _D3DCOLORVALUE;
  117. PD3DRect = ^TD3DRect;
  118. _D3DRECT = packed record
  119. x1: LongInt;
  120. y1: LongInt;
  121. x2: LongInt;
  122. y2: LongInt;
  123. end {_D3DRECT};
  124. {$EXTERNALSYM _D3DRECT}
  125. D3DRECT = _D3DRECT;
  126. {$EXTERNALSYM D3DRECT}
  127. TD3DRect = _D3DRECT;
  128. PD3DMatrix = ^TD3DMatrix;
  129. _D3DMATRIX = record
  130. case integer of
  131. 0 : (_11, _12, _13, _14: Single;
  132. _21, _22, _23, _24: Single;
  133. _31, _32, _33, _34: Single;
  134. _41, _42, _43, _44: Single);
  135. 1 : (m : array [0..3, 0..3] of Single);
  136. end {_D3DMATRIX};
  137. {$EXTERNALSYM _D3DMATRIX}
  138. D3DMATRIX = _D3DMATRIX;
  139. {$EXTERNALSYM D3DMATRIX}
  140. TD3DMatrix = _D3DMATRIX;
  141. PD3DViewport9 = ^TD3DViewport9;
  142. _D3DVIEWPORT9 = record
  143. X: DWord;
  144. Y: DWord; { Viewport Top left }
  145. Width: DWord;
  146. Height: DWord; { Viewport Dimensions }
  147. MinZ: Single; { Min/max of clip Volume }
  148. MaxZ: Single;
  149. end {_D3DVIEWPORT9};
  150. {$EXTERNALSYM _D3DVIEWPORT9}
  151. D3DVIEWPORT9 = _D3DVIEWPORT9;
  152. {$EXTERNALSYM D3DVIEWPORT9}
  153. TD3DViewport9 = _D3DVIEWPORT9;
  154. (*
  155. * Values for clip fields.
  156. *)
  157. const
  158. // Max number of user clipping planes, supported in D3D.
  159. D3DMAXUSERCLIPPLANES = 32;
  160. {$EXTERNALSYM D3DMAXUSERCLIPPLANES}
  161. // These bits could be ORed together to use with D3DRS_CLIPPLANEENABLE
  162. //
  163. D3DCLIPPLANE0 = (1 shl 0);
  164. {$EXTERNALSYM D3DCLIPPLANE0}
  165. D3DCLIPPLANE1 = (1 shl 1);
  166. {$EXTERNALSYM D3DCLIPPLANE1}
  167. D3DCLIPPLANE2 = (1 shl 2);
  168. {$EXTERNALSYM D3DCLIPPLANE2}
  169. D3DCLIPPLANE3 = (1 shl 3);
  170. {$EXTERNALSYM D3DCLIPPLANE3}
  171. D3DCLIPPLANE4 = (1 shl 4);
  172. {$EXTERNALSYM D3DCLIPPLANE4}
  173. D3DCLIPPLANE5 = (1 shl 5);
  174. {$EXTERNALSYM D3DCLIPPLANE5}
  175. // The following bits are used in the ClipUnion and ClipIntersection
  176. // members of the D3DCLIPSTATUS9
  177. //
  178. D3DCS_LEFT = $00000001;
  179. {$EXTERNALSYM D3DCS_LEFT}
  180. D3DCS_RIGHT = $00000002;
  181. {$EXTERNALSYM D3DCS_RIGHT}
  182. D3DCS_TOP = $00000004;
  183. {$EXTERNALSYM D3DCS_TOP}
  184. D3DCS_BOTTOM = $00000008;
  185. {$EXTERNALSYM D3DCS_BOTTOM}
  186. D3DCS_FRONT = $00000010;
  187. {$EXTERNALSYM D3DCS_FRONT}
  188. D3DCS_BACK = $00000020;
  189. {$EXTERNALSYM D3DCS_BACK}
  190. D3DCS_PLANE0 = $00000040;
  191. {$EXTERNALSYM D3DCS_PLANE0}
  192. D3DCS_PLANE1 = $00000080;
  193. {$EXTERNALSYM D3DCS_PLANE1}
  194. D3DCS_PLANE2 = $00000100;
  195. {$EXTERNALSYM D3DCS_PLANE2}
  196. D3DCS_PLANE3 = $00000200;
  197. {$EXTERNALSYM D3DCS_PLANE3}
  198. D3DCS_PLANE4 = $00000400;
  199. {$EXTERNALSYM D3DCS_PLANE4}
  200. D3DCS_PLANE5 = $00000800;
  201. {$EXTERNALSYM D3DCS_PLANE5}
  202. D3DCS_ALL = D3DCS_LEFT or
  203. D3DCS_RIGHT or
  204. D3DCS_TOP or
  205. D3DCS_BOTTOM or
  206. D3DCS_FRONT or
  207. D3DCS_BACK or
  208. D3DCS_PLANE0 or
  209. D3DCS_PLANE1 or
  210. D3DCS_PLANE2 or
  211. D3DCS_PLANE3 or
  212. D3DCS_PLANE4 or
  213. D3DCS_PLANE5;
  214. {$EXTERNALSYM D3DCS_ALL}
  215. type
  216. PD3DClipStatus9 = ^TD3DClipStatus9;
  217. _D3DCLIPSTATUS9 = record
  218. ClipUnion: DWord;
  219. ClipIntersection: DWord;
  220. end {_D3DCLIPSTATUS9};
  221. {$EXTERNALSYM _D3DCLIPSTATUS9}
  222. D3DCLIPSTATUS9 = _D3DCLIPSTATUS9;
  223. {$EXTERNALSYM D3DCLIPSTATUS9}
  224. TD3DClipStatus9 = _D3DCLIPSTATUS9;
  225. PD3DMaterial9 = ^TD3DMaterial9;
  226. _D3DMATERIAL9 = record
  227. Diffuse: TD3DColorValue; { Diffuse color RGBA }
  228. Ambient: TD3DColorValue; { Ambient color RGB }
  229. Specular: TD3DColorValue; { Specular 'shininess' }
  230. Emissive: TD3DColorValue; { Emissive color RGB }
  231. Power: Single; { Sharpness if specular highlight }
  232. end {_D3DMATERIAL9};
  233. {$EXTERNALSYM _D3DMATERIAL9}
  234. D3DMATERIAL9 = _D3DMATERIAL9;
  235. {$EXTERNALSYM D3DMATERIAL9}
  236. TD3DMaterial9 = _D3DMATERIAL9;
  237. _D3DLIGHTTYPE = (
  238. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  239. D3DLIGHT_INVALID_0, {= 0}
  240. D3DLIGHT_POINT, {= 1}
  241. D3DLIGHT_SPOT, {= 2}
  242. D3DLIGHT_DIRECTIONAL{= 3}
  243. {$ELSE}
  244. D3DLIGHT_POINT = 1,
  245. D3DLIGHT_SPOT = 2,
  246. D3DLIGHT_DIRECTIONAL = 3
  247. {$ENDIF}
  248. );
  249. {$EXTERNALSYM _D3DLIGHTTYPE}
  250. D3DLIGHTTYPE = _D3DLIGHTTYPE;
  251. {$EXTERNALSYM D3DLIGHTTYPE}
  252. TD3DLightType = _D3DLIGHTTYPE;
  253. PD3DLight9 = ^TD3DLight9;
  254. _D3DLIGHT9 = record
  255. _Type: TD3DLightType; { Type of light source }
  256. Diffuse: TD3DColorValue; { Diffuse color of light }
  257. Specular: TD3DColorValue; { Specular color of light }
  258. Ambient: TD3DColorValue; { Ambient color of light }
  259. Position: TD3DVector; { Position in world space }
  260. Direction: TD3DVector; { Direction in world space }
  261. Range: Single; { Cutoff range }
  262. Falloff: Single; { Falloff }
  263. Attenuation0: Single; { Constant attenuation }
  264. Attenuation1: Single; { Linear attenuation }
  265. Attenuation2: Single; { Quadratic attenuation }
  266. Theta: Single; { Inner angle of spotlight cone }
  267. Phi: Single; { Outer angle of spotlight cone }
  268. end {_D3DLIGHT9};
  269. {$EXTERNALSYM _D3DLIGHT9}
  270. D3DLIGHT9 = _D3DLIGHT9;
  271. {$EXTERNALSYM D3DLIGHT9}
  272. TD3DLight9 = _D3DLIGHT9;
  273. (*
  274. * Options for clearing
  275. *)
  276. const
  277. D3DCLEAR_TARGET = $00000001; { Clear target surface }
  278. {$EXTERNALSYM D3DCLEAR_TARGET}
  279. D3DCLEAR_ZBUFFER = $00000002; { Clear target z buffer }
  280. {$EXTERNALSYM D3DCLEAR_ZBUFFER}
  281. D3DCLEAR_STENCIL = $00000004; { Clear stencil planes }
  282. {$EXTERNALSYM D3DCLEAR_STENCIL}
  283. (*
  284. * The following defines the rendering states
  285. *)
  286. type
  287. _D3DSHADEMODE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  288. {$EXTERNALSYM _D3DSHADEMODE}
  289. D3DSHADEMODE = _D3DSHADEMODE;
  290. {$EXTERNALSYM D3DSHADEMODE}
  291. TD3DShadeMode = _D3DSHADEMODE;
  292. const
  293. D3DSHADE_FLAT = 1;
  294. {$EXTERNALSYM D3DSHADE_FLAT}
  295. D3DSHADE_GOURAUD = 2;
  296. {$EXTERNALSYM D3DSHADE_GOURAUD}
  297. D3DSHADE_PHONG = 3;
  298. {$EXTERNALSYM D3DSHADE_PHONG}
  299. type
  300. _D3DFILLMODE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  301. {$EXTERNALSYM _D3DFILLMODE}
  302. D3DFILLMODE = _D3DFILLMODE;
  303. {$EXTERNALSYM D3DFILLMODE}
  304. TD3DFillMode = _D3DFILLMODE;
  305. const
  306. D3DFILL_POINT = 1;
  307. {$EXTERNALSYM D3DFILL_POINT}
  308. D3DFILL_WIREFRAME = 2;
  309. {$EXTERNALSYM D3DFILL_WIREFRAME}
  310. D3DFILL_SOLID = 3;
  311. {$EXTERNALSYM D3DFILL_SOLID}
  312. type
  313. _D3DBLEND = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  314. {$EXTERNALSYM _D3DBLEND}
  315. D3DBLEND = _D3DBLEND;
  316. {$EXTERNALSYM D3DBLEND}
  317. TD3DBlend = _D3DBLEND;
  318. const
  319. D3DBLEND_ZERO = 1;
  320. {$EXTERNALSYM D3DBLEND_ZERO}
  321. D3DBLEND_ONE = 2;
  322. {$EXTERNALSYM D3DBLEND_ONE}
  323. D3DBLEND_SRCCOLOR = 3;
  324. {$EXTERNALSYM D3DBLEND_SRCCOLOR}
  325. D3DBLEND_INVSRCCOLOR = 4;
  326. {$EXTERNALSYM D3DBLEND_INVSRCCOLOR}
  327. D3DBLEND_SRCALPHA = 5;
  328. {$EXTERNALSYM D3DBLEND_SRCALPHA}
  329. D3DBLEND_INVSRCALPHA = 6;
  330. {$EXTERNALSYM D3DBLEND_INVSRCALPHA}
  331. D3DBLEND_DESTALPHA = 7;
  332. {$EXTERNALSYM D3DBLEND_DESTALPHA}
  333. D3DBLEND_INVDESTALPHA = 8;
  334. {$EXTERNALSYM D3DBLEND_INVDESTALPHA}
  335. D3DBLEND_DESTCOLOR = 9;
  336. {$EXTERNALSYM D3DBLEND_DESTCOLOR}
  337. D3DBLEND_INVDESTCOLOR = 10;
  338. {$EXTERNALSYM D3DBLEND_INVDESTCOLOR}
  339. D3DBLEND_SRCALPHASAT = 11;
  340. {$EXTERNALSYM D3DBLEND_SRCALPHASAT}
  341. D3DBLEND_BOTHSRCALPHA = 12;
  342. {$EXTERNALSYM D3DBLEND_BOTHSRCALPHA}
  343. D3DBLEND_BOTHINVSRCALPHA = 13;
  344. {$EXTERNALSYM D3DBLEND_BOTHINVSRCALPHA}
  345. D3DBLEND_BLENDFACTOR = 14; (* Only supported if D3DPBLENDCAPS_BLENDFACTOR is on *)
  346. {$EXTERNALSYM D3DBLEND_BLENDFACTOR}
  347. D3DBLEND_INVBLENDFACTOR = 15; (* Only supported if D3DPBLENDCAPS_BLENDFACTOR is on *)
  348. {$EXTERNALSYM D3DBLEND_INVBLENDFACTOR}
  349. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  350. D3DBLEND_SRCCOLOR2 = 16;
  351. {$EXTERNALSYM D3DBLEND_SRCCOLOR2}
  352. D3DBLEND_INVSRCCOLOR2 = 17;
  353. {$EXTERNALSYM D3DBLEND_INVSRCCOLOR2}
  354. {$ENDIF}
  355. type
  356. _D3DBLENDOP = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  357. {$EXTERNALSYM _D3DBLENDOP}
  358. D3DBLENDOP = _D3DBLENDOP;
  359. {$EXTERNALSYM D3DBLENDOP}
  360. TD3DBlendOp = _D3DBLENDOP;
  361. const
  362. D3DBLENDOP_ADD = 1;
  363. {$EXTERNALSYM D3DBLENDOP_ADD}
  364. D3DBLENDOP_SUBTRACT = 2;
  365. {$EXTERNALSYM D3DBLENDOP_SUBTRACT}
  366. D3DBLENDOP_REVSUBTRACT = 3;
  367. {$EXTERNALSYM D3DBLENDOP_REVSUBTRACT}
  368. D3DBLENDOP_MIN = 4;
  369. {$EXTERNALSYM D3DBLENDOP_MIN}
  370. D3DBLENDOP_MAX = 5;
  371. {$EXTERNALSYM D3DBLENDOP_MAX}
  372. type
  373. _D3DTEXTUREADDRESS = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  374. {$EXTERNALSYM _D3DTEXTUREADDRESS}
  375. D3DTEXTUREADDRESS = _D3DTEXTUREADDRESS;
  376. {$EXTERNALSYM D3DTEXTUREADDRESS}
  377. TD3DTextureAddress = _D3DTEXTUREADDRESS;
  378. const
  379. D3DTADDRESS_WRAP = 1;
  380. {$EXTERNALSYM D3DTADDRESS_WRAP}
  381. D3DTADDRESS_MIRROR = 2;
  382. {$EXTERNALSYM D3DTADDRESS_MIRROR}
  383. D3DTADDRESS_CLAMP = 3;
  384. {$EXTERNALSYM D3DTADDRESS_CLAMP}
  385. D3DTADDRESS_BORDER = 4;
  386. {$EXTERNALSYM D3DTADDRESS_BORDER}
  387. D3DTADDRESS_MIRRORONCE = 5;
  388. {$EXTERNALSYM D3DTADDRESS_MIRRORONCE}
  389. type
  390. _D3DCULL = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  391. {$EXTERNALSYM _D3DCULL}
  392. D3DCULL = _D3DCULL;
  393. {$EXTERNALSYM D3DCULL}
  394. TD3DCull = _D3DCULL;
  395. const
  396. D3DCULL_NONE = 1;
  397. {$EXTERNALSYM D3DCULL_NONE}
  398. D3DCULL_CW = 2;
  399. {$EXTERNALSYM D3DCULL_CW}
  400. D3DCULL_CCW = 3;
  401. {$EXTERNALSYM D3DCULL_CCW}
  402. type
  403. _D3DCMPFUNC = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  404. {$EXTERNALSYM _D3DCMPFUNC}
  405. D3DCMPFUNC = _D3DCMPFUNC;
  406. {$EXTERNALSYM D3DCMPFUNC}
  407. TD3DCmpFunc = _D3DCMPFUNC;
  408. const
  409. D3DCMP_NEVER = 1;
  410. {$EXTERNALSYM D3DCMP_NEVER}
  411. D3DCMP_LESS = 2;
  412. {$EXTERNALSYM D3DCMP_LESS}
  413. D3DCMP_EQUAL = 3;
  414. {$EXTERNALSYM D3DCMP_EQUAL}
  415. D3DCMP_LESSEQUAL = 4;
  416. {$EXTERNALSYM D3DCMP_LESSEQUAL}
  417. D3DCMP_GREATER = 5;
  418. {$EXTERNALSYM D3DCMP_GREATER}
  419. D3DCMP_NOTEQUAL = 6;
  420. {$EXTERNALSYM D3DCMP_NOTEQUAL}
  421. D3DCMP_GREATEREQUAL = 7;
  422. {$EXTERNALSYM D3DCMP_GREATEREQUAL}
  423. D3DCMP_ALWAYS = 8;
  424. {$EXTERNALSYM D3DCMP_ALWAYS}
  425. type
  426. _D3DSTENCILOP = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  427. {$EXTERNALSYM _D3DSTENCILOP}
  428. D3DSTENCILOP = _D3DSTENCILOP;
  429. {$EXTERNALSYM D3DSTENCILOP}
  430. TD3DStencilOp = _D3DSTENCILOP;
  431. const
  432. D3DSTENCILOP_KEEP = 1;
  433. {$EXTERNALSYM D3DSTENCILOP_KEEP}
  434. D3DSTENCILOP_ZERO = 2;
  435. {$EXTERNALSYM D3DSTENCILOP_ZERO}
  436. D3DSTENCILOP_REPLACE = 3;
  437. {$EXTERNALSYM D3DSTENCILOP_REPLACE}
  438. D3DSTENCILOP_INCRSAT = 4;
  439. {$EXTERNALSYM D3DSTENCILOP_INCRSAT}
  440. D3DSTENCILOP_DECRSAT = 5;
  441. {$EXTERNALSYM D3DSTENCILOP_DECRSAT}
  442. D3DSTENCILOP_INVERT = 6;
  443. {$EXTERNALSYM D3DSTENCILOP_INVERT}
  444. D3DSTENCILOP_INCR = 7;
  445. {$EXTERNALSYM D3DSTENCILOP_INCR}
  446. D3DSTENCILOP_DECR = 8;
  447. {$EXTERNALSYM D3DSTENCILOP_DECR}
  448. type
  449. _D3DFOGMODE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  450. {$EXTERNALSYM _D3DFOGMODE}
  451. D3DFOGMODE = _D3DFOGMODE;
  452. {$EXTERNALSYM D3DFOGMODE}
  453. TD3DFogMode = _D3DFOGMODE;
  454. const
  455. D3DFOG_NONE = 0;
  456. {$EXTERNALSYM D3DFOG_NONE}
  457. D3DFOG_EXP = 1;
  458. {$EXTERNALSYM D3DFOG_EXP}
  459. D3DFOG_EXP2 = 2;
  460. {$EXTERNALSYM D3DFOG_EXP2}
  461. D3DFOG_LINEAR = 3;
  462. {$EXTERNALSYM D3DFOG_LINEAR}
  463. type
  464. _D3DZBUFFERTYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  465. {$EXTERNALSYM _D3DZBUFFERTYPE}
  466. D3DZBUFFERTYPE = _D3DZBUFFERTYPE;
  467. {$EXTERNALSYM D3DZBUFFERTYPE}
  468. TD3DZBufferType = _D3DZBUFFERTYPE;
  469. const
  470. D3DZB_FALSE = 0;
  471. {$EXTERNALSYM D3DZB_FALSE}
  472. D3DZB_TRUE = 1;
  473. {$EXTERNALSYM D3DZB_TRUE}
  474. D3DZB_USEW = 2;
  475. {$EXTERNALSYM D3DZB_USEW}
  476. type
  477. // Primitives supported by draw-primitive API
  478. _D3DPRIMITIVETYPE = (
  479. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  480. D3DPT_INVALID_0 {= 0},
  481. D3DPT_POINTLIST {= 1},
  482. D3DPT_LINELIST {= 2},
  483. D3DPT_LINESTRIP {= 3},
  484. D3DPT_TRIANGLELIST {= 4},
  485. D3DPT_TRIANGLESTRIP{= 5},
  486. D3DPT_TRIANGLEFAN {= 6}
  487. {$ELSE}
  488. D3DPT_POINTLIST = 1,
  489. D3DPT_LINELIST = 2,
  490. D3DPT_LINESTRIP = 3,
  491. D3DPT_TRIANGLELIST = 4,
  492. D3DPT_TRIANGLESTRIP = 5,
  493. D3DPT_TRIANGLEFAN = 6
  494. {$ENDIF}
  495. );
  496. {$EXTERNALSYM _D3DPRIMITIVETYPE}
  497. D3DPRIMITIVETYPE = _D3DPRIMITIVETYPE;
  498. {$EXTERNALSYM D3DPRIMITIVETYPE}
  499. TD3DPrimitiveType = _D3DPRIMITIVETYPE;
  500. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  501. const
  502. D3DTS_VIEW = 2;
  503. {$EXTERNALSYM D3DTS_VIEW}
  504. D3DTS_PROJECTION = 3;
  505. {$EXTERNALSYM D3DTS_PROJECTION}
  506. D3DTS_TEXTURE0 = 16;
  507. {$EXTERNALSYM D3DTS_TEXTURE0}
  508. D3DTS_TEXTURE1 = 17;
  509. {$EXTERNALSYM D3DTS_TEXTURE1}
  510. D3DTS_TEXTURE2 = 18;
  511. {$EXTERNALSYM D3DTS_TEXTURE2}
  512. D3DTS_TEXTURE3 = 19;
  513. {$EXTERNALSYM D3DTS_TEXTURE3}
  514. D3DTS_TEXTURE4 = 20;
  515. {$EXTERNALSYM D3DTS_TEXTURE4}
  516. D3DTS_TEXTURE5 = 21;
  517. {$EXTERNALSYM D3DTS_TEXTURE5}
  518. D3DTS_TEXTURE6 = 22;
  519. {$EXTERNALSYM D3DTS_TEXTURE6}
  520. D3DTS_TEXTURE7 = 23;
  521. {$EXTERNALSYM D3DTS_TEXTURE7}
  522. D3DTS_FORCE_DWORD = $7fffffff; (* force 32-bit size enum *)
  523. {$EXTERNALSYM D3DTS_FORCE_DWORD}
  524. type
  525. _D3DTRANSFORMSTATETYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  526. {$ELSE}
  527. type
  528. _D3DTRANSFORMSTATETYPE = (
  529. D3DTS_VIEW = 2,
  530. D3DTS_PROJECTION = 3,
  531. D3DTS_TEXTURE0 = 16,
  532. D3DTS_TEXTURE1 = 17,
  533. D3DTS_TEXTURE2 = 18,
  534. D3DTS_TEXTURE3 = 19,
  535. D3DTS_TEXTURE4 = 20,
  536. D3DTS_TEXTURE5 = 21,
  537. D3DTS_TEXTURE6 = 22,
  538. D3DTS_TEXTURE7 = 23
  539. );
  540. {$ENDIF}
  541. {$EXTERNALSYM _D3DTRANSFORMSTATETYPE}
  542. D3DTRANSFORMSTATETYPE = _D3DTRANSFORMSTATETYPE;
  543. {$EXTERNALSYM D3DTRANSFORMSTATETYPE}
  544. TD3DTransformStateType = _D3DTRANSFORMSTATETYPE;
  545. // #define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
  546. function D3DTS_WORLDMATRIX(index: Byte): TD3DTransformStateType;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  547. {$EXTERNALSYM D3DTS_WORLDMATRIX}
  548. const
  549. D3DTS_WORLD = TD3DTransformStateType(0 + 256); // #define D3DTS_WORLD D3DTS_WORLDMATRIX(0)
  550. {$EXTERNALSYM D3DTS_WORLD}
  551. D3DTS_WORLD1 = TD3DTransformStateType(1 + 256); // #define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
  552. {$EXTERNALSYM D3DTS_WORLD1}
  553. D3DTS_WORLD2 = TD3DTransformStateType(2 + 256); // #define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
  554. {$EXTERNALSYM D3DTS_WORLD2}
  555. D3DTS_WORLD3 = TD3DTransformStateType(3 + 256); // #define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
  556. {$EXTERNALSYM D3DTS_WORLD3}
  557. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  558. type
  559. _D3DRENDERSTATETYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  560. {$EXTERNALSYM _D3DRENDERSTATETYPE}
  561. D3DRENDERSTATETYPE = _D3DRENDERSTATETYPE;
  562. {$EXTERNALSYM D3DRENDERSTATETYPE}
  563. TD3DRenderStateType = _D3DRENDERSTATETYPE;
  564. const
  565. D3DRS_ZENABLE = TD3DRenderStateType(7); { D3DZBUFFERTYPE (or TRUE/FALSE for legacy) }
  566. {$EXTERNALSYM D3DRS_ZENABLE}
  567. D3DRS_FILLMODE = TD3DRenderStateType(8); { D3DFILLMODE }
  568. {$EXTERNALSYM D3DRS_FILLMODE}
  569. D3DRS_SHADEMODE = TD3DRenderStateType(9); { D3DSHADEMODE }
  570. {$EXTERNALSYM D3DRS_SHADEMODE}
  571. D3DRS_ZWRITEENABLE = TD3DRenderStateType(14); { TRUE to enable z writes }
  572. {$EXTERNALSYM D3DRS_ZWRITEENABLE}
  573. D3DRS_ALPHATESTENABLE = TD3DRenderStateType(15); { TRUE to enable alpha tests }
  574. {$EXTERNALSYM D3DRS_ALPHATESTENABLE}
  575. D3DRS_LASTPIXEL = TD3DRenderStateType(16); { TRUE for last-pixel on lines }
  576. {$EXTERNALSYM D3DRS_LASTPIXEL}
  577. D3DRS_SRCBLEND = TD3DRenderStateType(19); { D3DBLEND }
  578. {$EXTERNALSYM D3DRS_SRCBLEND}
  579. D3DRS_DESTBLEND = TD3DRenderStateType(20); { D3DBLEND }
  580. {$EXTERNALSYM D3DRS_DESTBLEND}
  581. D3DRS_CULLMODE = TD3DRenderStateType(22); { D3DCULL }
  582. {$EXTERNALSYM D3DRS_CULLMODE}
  583. D3DRS_ZFUNC = TD3DRenderStateType(23); { D3DCMPFUNC }
  584. {$EXTERNALSYM D3DRS_ZFUNC}
  585. D3DRS_ALPHAREF = TD3DRenderStateType(24); { D3DFIXED }
  586. {$EXTERNALSYM D3DRS_ALPHAREF}
  587. D3DRS_ALPHAFUNC = TD3DRenderStateType(25); { D3DCMPFUNC }
  588. {$EXTERNALSYM D3DRS_ALPHAFUNC}
  589. D3DRS_DITHERENABLE = TD3DRenderStateType(26); { TRUE to enable dithering }
  590. {$EXTERNALSYM D3DRS_DITHERENABLE}
  591. D3DRS_ALPHABLENDENABLE = TD3DRenderStateType(27); { TRUE to enable alpha blending }
  592. {$EXTERNALSYM D3DRS_ALPHABLENDENABLE}
  593. D3DRS_FOGENABLE = TD3DRenderStateType(28); { TRUE to enable fog blending }
  594. {$EXTERNALSYM D3DRS_FOGENABLE}
  595. D3DRS_SPECULARENABLE = TD3DRenderStateType(29); { TRUE to enable specular }
  596. {$EXTERNALSYM D3DRS_SPECULARENABLE}
  597. D3DRS_FOGCOLOR = TD3DRenderStateType(34); { D3DCOLOR }
  598. {$EXTERNALSYM D3DRS_FOGCOLOR}
  599. D3DRS_FOGTABLEMODE = TD3DRenderStateType(35); { D3DFOGMODE }
  600. {$EXTERNALSYM D3DRS_FOGTABLEMODE}
  601. D3DRS_FOGSTART = TD3DRenderStateType(36); { Fog start (for both vertex and pixel fog) }
  602. {$EXTERNALSYM D3DRS_FOGSTART}
  603. D3DRS_FOGEND = TD3DRenderStateType(37); { Fog end }
  604. {$EXTERNALSYM D3DRS_FOGEND}
  605. D3DRS_FOGDENSITY = TD3DRenderStateType(38); { Fog density }
  606. {$EXTERNALSYM D3DRS_FOGDENSITY}
  607. D3DRS_RANGEFOGENABLE = TD3DRenderStateType(48); { Enables range-based fog }
  608. {$EXTERNALSYM D3DRS_RANGEFOGENABLE}
  609. D3DRS_STENCILENABLE = TD3DRenderStateType(52); { BOOL enable/disable stenciling }
  610. {$EXTERNALSYM D3DRS_STENCILENABLE}
  611. D3DRS_STENCILFAIL = TD3DRenderStateType(53); { D3DSTENCILOP to do if stencil test fails }
  612. {$EXTERNALSYM D3DRS_STENCILFAIL}
  613. D3DRS_STENCILZFAIL = TD3DRenderStateType(54); { D3DSTENCILOP to do if stencil test passes and Z test fails }
  614. {$EXTERNALSYM D3DRS_STENCILZFAIL}
  615. D3DRS_STENCILPASS = TD3DRenderStateType(55); { D3DSTENCILOP to do if both stencil and Z tests pass }
  616. {$EXTERNALSYM D3DRS_STENCILPASS}
  617. D3DRS_STENCILFUNC = TD3DRenderStateType(56); { D3DCMPFUNC fn. Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true }
  618. {$EXTERNALSYM D3DRS_STENCILFUNC}
  619. D3DRS_STENCILREF = TD3DRenderStateType(57); { Reference value used in stencil test }
  620. {$EXTERNALSYM D3DRS_STENCILREF}
  621. D3DRS_STENCILMASK = TD3DRenderStateType(58); { Mask value used in stencil test }
  622. {$EXTERNALSYM D3DRS_STENCILMASK}
  623. D3DRS_STENCILWRITEMASK = TD3DRenderStateType(59); { Write mask applied to values written to stencil buffer }
  624. {$EXTERNALSYM D3DRS_STENCILWRITEMASK}
  625. D3DRS_TEXTUREFACTOR = TD3DRenderStateType(60); { D3DCOLOR used for multi-texture blend }
  626. {$EXTERNALSYM D3DRS_TEXTUREFACTOR}
  627. D3DRS_WRAP0 = TD3DRenderStateType(128); { wrap for 1st texture coord. set }
  628. {$EXTERNALSYM D3DRS_WRAP0}
  629. D3DRS_WRAP1 = TD3DRenderStateType(129); { wrap for 2nd texture coord. set }
  630. {$EXTERNALSYM D3DRS_WRAP1}
  631. D3DRS_WRAP2 = TD3DRenderStateType(130); { wrap for 3rd texture coord. set }
  632. {$EXTERNALSYM D3DRS_WRAP2}
  633. D3DRS_WRAP3 = TD3DRenderStateType(131); { wrap for 4th texture coord. set }
  634. {$EXTERNALSYM D3DRS_WRAP3}
  635. D3DRS_WRAP4 = TD3DRenderStateType(132); { wrap for 5th texture coord. set }
  636. {$EXTERNALSYM D3DRS_WRAP4}
  637. D3DRS_WRAP5 = TD3DRenderStateType(133); { wrap for 6th texture coord. set }
  638. {$EXTERNALSYM D3DRS_WRAP5}
  639. D3DRS_WRAP6 = TD3DRenderStateType(134); { wrap for 7th texture coord. set }
  640. {$EXTERNALSYM D3DRS_WRAP6}
  641. D3DRS_WRAP7 = TD3DRenderStateType(135); { wrap for 8th texture coord. set }
  642. {$EXTERNALSYM D3DRS_WRAP7}
  643. D3DRS_CLIPPING = TD3DRenderStateType(136);
  644. {$EXTERNALSYM D3DRS_CLIPPING}
  645. D3DRS_LIGHTING = TD3DRenderStateType(137);
  646. {$EXTERNALSYM D3DRS_LIGHTING}
  647. D3DRS_AMBIENT = TD3DRenderStateType(139);
  648. {$EXTERNALSYM D3DRS_AMBIENT}
  649. D3DRS_FOGVERTEXMODE = TD3DRenderStateType(140);
  650. {$EXTERNALSYM D3DRS_FOGVERTEXMODE}
  651. D3DRS_COLORVERTEX = TD3DRenderStateType(141);
  652. {$EXTERNALSYM D3DRS_COLORVERTEX}
  653. D3DRS_LOCALVIEWER = TD3DRenderStateType(142);
  654. {$EXTERNALSYM D3DRS_LOCALVIEWER}
  655. D3DRS_NORMALIZENORMALS = TD3DRenderStateType(143);
  656. {$EXTERNALSYM D3DRS_NORMALIZENORMALS}
  657. D3DRS_DIFFUSEMATERIALSOURCE = TD3DRenderStateType(145);
  658. {$EXTERNALSYM D3DRS_DIFFUSEMATERIALSOURCE}
  659. D3DRS_SPECULARMATERIALSOURCE = TD3DRenderStateType(146);
  660. {$EXTERNALSYM D3DRS_SPECULARMATERIALSOURCE}
  661. D3DRS_AMBIENTMATERIALSOURCE = TD3DRenderStateType(147);
  662. {$EXTERNALSYM D3DRS_AMBIENTMATERIALSOURCE}
  663. D3DRS_EMISSIVEMATERIALSOURCE = TD3DRenderStateType(148);
  664. {$EXTERNALSYM D3DRS_EMISSIVEMATERIALSOURCE}
  665. D3DRS_VERTEXBLEND = TD3DRenderStateType(151);
  666. {$EXTERNALSYM D3DRS_VERTEXBLEND}
  667. D3DRS_CLIPPLANEENABLE = TD3DRenderStateType(152);
  668. {$EXTERNALSYM D3DRS_CLIPPLANEENABLE}
  669. D3DRS_POINTSIZE = TD3DRenderStateType(154); { float point size }
  670. {$EXTERNALSYM D3DRS_POINTSIZE}
  671. D3DRS_POINTSIZE_MIN = TD3DRenderStateType(155); { float point size min threshold }
  672. {$EXTERNALSYM D3DRS_POINTSIZE_MIN}
  673. D3DRS_POINTSPRITEENABLE = TD3DRenderStateType(156); { BOOL point texture coord control }
  674. {$EXTERNALSYM D3DRS_POINTSPRITEENABLE}
  675. D3DRS_POINTSCALEENABLE = TD3DRenderStateType(157); { BOOL point size scale enable }
  676. {$EXTERNALSYM D3DRS_POINTSCALEENABLE}
  677. D3DRS_POINTSCALE_A = TD3DRenderStateType(158); { float point attenuation A value }
  678. {$EXTERNALSYM D3DRS_POINTSCALE_A}
  679. D3DRS_POINTSCALE_B = TD3DRenderStateType(159); { float point attenuation B value }
  680. {$EXTERNALSYM D3DRS_POINTSCALE_B}
  681. D3DRS_POINTSCALE_C = TD3DRenderStateType(160); { float point attenuation C value }
  682. {$EXTERNALSYM D3DRS_POINTSCALE_C}
  683. D3DRS_MULTISAMPLEANTIALIAS = TD3DRenderStateType(161); // BOOL - set to do FSAA with multisample buffer
  684. {$EXTERNALSYM D3DRS_MULTISAMPLEANTIALIAS}
  685. D3DRS_MULTISAMPLEMASK = TD3DRenderStateType(162); // DWORD - per-sample enable/disable
  686. {$EXTERNALSYM D3DRS_MULTISAMPLEMASK}
  687. D3DRS_PATCHEDGESTYLE = TD3DRenderStateType(163); // Sets whether patch edges will use float style tessellation
  688. {$EXTERNALSYM D3DRS_PATCHEDGESTYLE}
  689. D3DRS_DEBUGMONITORTOKEN = TD3DRenderStateType(165); // DEBUG ONLY - token to debug monitor
  690. {$EXTERNALSYM D3DRS_DEBUGMONITORTOKEN}
  691. D3DRS_POINTSIZE_MAX = TD3DRenderStateType(166); { float point size max threshold }
  692. {$EXTERNALSYM D3DRS_POINTSIZE_MAX}
  693. D3DRS_INDEXEDVERTEXBLENDENABLE = TD3DRenderStateType(167);
  694. {$EXTERNALSYM D3DRS_INDEXEDVERTEXBLENDENABLE}
  695. D3DRS_COLORWRITEENABLE = TD3DRenderStateType(168); // per-channel write enable
  696. {$EXTERNALSYM D3DRS_COLORWRITEENABLE}
  697. D3DRS_TWEENFACTOR = TD3DRenderStateType(170); // float tween factor
  698. {$EXTERNALSYM D3DRS_TWEENFACTOR}
  699. D3DRS_BLENDOP = TD3DRenderStateType(171); // D3DBLENDOP setting
  700. {$EXTERNALSYM D3DRS_BLENDOP}
  701. D3DRS_POSITIONDEGREE = TD3DRenderStateType(172); // NPatch position interpolation degree. D3DDEGREE_LINEAR or D3DDEGREE_CUBIC (default)
  702. {$EXTERNALSYM D3DRS_POSITIONDEGREE}
  703. D3DRS_NORMALDEGREE = TD3DRenderStateType(173); // NPatch normal interpolation degree. D3DDEGREE_LINEAR (default) or D3DDEGREE_QUADRATIC
  704. {$EXTERNALSYM D3DRS_NORMALDEGREE}
  705. D3DRS_SCISSORTESTENABLE = TD3DRenderStateType(174);
  706. {$EXTERNALSYM D3DRS_SCISSORTESTENABLE}
  707. D3DRS_SLOPESCALEDEPTHBIAS = TD3DRenderStateType(175);
  708. {$EXTERNALSYM D3DRS_SLOPESCALEDEPTHBIAS}
  709. D3DRS_ANTIALIASEDLINEENABLE = TD3DRenderStateType(176);
  710. {$EXTERNALSYM D3DRS_ANTIALIASEDLINEENABLE}
  711. D3DRS_MINTESSELLATIONLEVEL = TD3DRenderStateType(178);
  712. {$EXTERNALSYM D3DRS_MINTESSELLATIONLEVEL}
  713. D3DRS_MAXTESSELLATIONLEVEL = TD3DRenderStateType(179);
  714. {$EXTERNALSYM D3DRS_MAXTESSELLATIONLEVEL}
  715. D3DRS_ADAPTIVETESS_X = TD3DRenderStateType(180);
  716. {$EXTERNALSYM D3DRS_ADAPTIVETESS_X}
  717. D3DRS_ADAPTIVETESS_Y = TD3DRenderStateType(181);
  718. {$EXTERNALSYM D3DRS_ADAPTIVETESS_Y}
  719. D3DRS_ADAPTIVETESS_Z = TD3DRenderStateType(182);
  720. {$EXTERNALSYM D3DRS_ADAPTIVETESS_Z}
  721. D3DRS_ADAPTIVETESS_W = TD3DRenderStateType(183);
  722. {$EXTERNALSYM D3DRS_ADAPTIVETESS_W}
  723. D3DRS_ENABLEADAPTIVETESSELLATION = TD3DRenderStateType(184);
  724. {$EXTERNALSYM D3DRS_ENABLEADAPTIVETESSELLATION}
  725. D3DRS_TWOSIDEDSTENCILMODE = TD3DRenderStateType(185); (* BOOL enable/disable 2 sided stenciling *)
  726. {$EXTERNALSYM D3DRS_TWOSIDEDSTENCILMODE}
  727. D3DRS_CCW_STENCILFAIL = TD3DRenderStateType(186); (* D3DSTENCILOP to do if ccw stencil test fails *)
  728. {$EXTERNALSYM D3DRS_CCW_STENCILFAIL}
  729. D3DRS_CCW_STENCILZFAIL = TD3DRenderStateType(187); (* D3DSTENCILOP to do if ccw stencil test passes and Z test fails *)
  730. {$EXTERNALSYM D3DRS_CCW_STENCILZFAIL}
  731. D3DRS_CCW_STENCILPASS = TD3DRenderStateType(188); (* D3DSTENCILOP to do if both ccw stencil and Z tests pass *)
  732. {$EXTERNALSYM D3DRS_CCW_STENCILPASS}
  733. D3DRS_CCW_STENCILFUNC = TD3DRenderStateType(189); (* D3DCMPFUNC fn. ccw Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true *)
  734. {$EXTERNALSYM D3DRS_CCW_STENCILFUNC}
  735. D3DRS_COLORWRITEENABLE1 = TD3DRenderStateType(190); (* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS *)
  736. {$EXTERNALSYM D3DRS_COLORWRITEENABLE1}
  737. D3DRS_COLORWRITEENABLE2 = TD3DRenderStateType(191); (* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS *)
  738. {$EXTERNALSYM D3DRS_COLORWRITEENABLE2}
  739. D3DRS_COLORWRITEENABLE3 = TD3DRenderStateType(192); (* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS *)
  740. {$EXTERNALSYM D3DRS_COLORWRITEENABLE3}
  741. D3DRS_BLENDFACTOR = TD3DRenderStateType(193); (* D3DCOLOR used for a constant blend factor during alpha blending for devices that support D3DPBLENDCAPS_BLENDFACTOR *)
  742. {$EXTERNALSYM D3DRS_BLENDFACTOR}
  743. D3DRS_SRGBWRITEENABLE = TD3DRenderStateType(194); (* Enable rendertarget writes to be DE-linearized to SRGB (for formats that expose D3DUSAGE_QUERY_SRGBWRITE) *)
  744. {$EXTERNALSYM D3DRS_SRGBWRITEENABLE}
  745. D3DRS_DEPTHBIAS = TD3DRenderStateType(195);
  746. {$EXTERNALSYM D3DRS_DEPTHBIAS}
  747. D3DRS_WRAP8 = TD3DRenderStateType(198); (* Additional wrap states for vs_3_0+ attributes with D3DDECLUSAGE_TEXCOORD *)
  748. {$EXTERNALSYM D3DRS_WRAP8}
  749. D3DRS_WRAP9 = TD3DRenderStateType(199);
  750. {$EXTERNALSYM D3DRS_WRAP9}
  751. D3DRS_WRAP10 = TD3DRenderStateType(200);
  752. {$EXTERNALSYM D3DRS_WRAP10}
  753. D3DRS_WRAP11 = TD3DRenderStateType(201);
  754. {$EXTERNALSYM D3DRS_WRAP11}
  755. D3DRS_WRAP12 = TD3DRenderStateType(202);
  756. {$EXTERNALSYM D3DRS_WRAP12}
  757. D3DRS_WRAP13 = TD3DRenderStateType(203);
  758. {$EXTERNALSYM D3DRS_WRAP13}
  759. D3DRS_WRAP14 = TD3DRenderStateType(204);
  760. {$EXTERNALSYM D3DRS_WRAP14}
  761. D3DRS_WRAP15 = TD3DRenderStateType(205);
  762. {$EXTERNALSYM D3DRS_WRAP15}
  763. D3DRS_SEPARATEALPHABLENDENABLE = TD3DRenderStateType(206); (* TRUE to enable a separate blending function for the alpha channel *)
  764. {$EXTERNALSYM D3DRS_SEPARATEALPHABLENDENABLE}
  765. D3DRS_SRCBLENDALPHA = TD3DRenderStateType(207); (* SRC blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE *)
  766. {$EXTERNALSYM D3DRS_SRCBLENDALPHA}
  767. D3DRS_DESTBLENDALPHA = TD3DRenderStateType(208); (* DST blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE *)
  768. {$EXTERNALSYM D3DRS_DESTBLENDALPHA}
  769. D3DRS_BLENDOPALPHA = TD3DRenderStateType(209); (* Blending operation for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE *)
  770. {$EXTERNALSYM D3DRS_BLENDOPALPHA}
  771. D3DRS_FORCE_DWORD = TD3DRenderStateType($7fffffff); { force 32-bit size enum }
  772. {$EXTERNALSYM D3DRS_FORCE_DWORD}
  773. {$ELSE}
  774. type
  775. _D3DRENDERSTATETYPE = (
  776. D3DRS_ZENABLE = 7, (* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) *)
  777. D3DRS_FILLMODE = 8, (* D3DFILLMODE *)
  778. D3DRS_SHADEMODE = 9, (* D3DSHADEMODE *)
  779. D3DRS_ZWRITEENABLE = 14, (* TRUE to enable z writes *)
  780. D3DRS_ALPHATESTENABLE = 15, (* TRUE to enable alpha tests *)
  781. D3DRS_LASTPIXEL = 16, (* TRUE for last-pixel on lines *)
  782. D3DRS_SRCBLEND = 19, (* D3DBLEND *)
  783. D3DRS_DESTBLEND = 20, (* D3DBLEND *)
  784. D3DRS_CULLMODE = 22, (* D3DCULL *)
  785. D3DRS_ZFUNC = 23, (* D3DCMPFUNC *)
  786. D3DRS_ALPHAREF = 24, (* D3DFIXED *)
  787. D3DRS_ALPHAFUNC = 25, (* D3DCMPFUNC *)
  788. D3DRS_DITHERENABLE = 26, (* TRUE to enable dithering *)
  789. D3DRS_ALPHABLENDENABLE = 27, (* TRUE to enable alpha blending *)
  790. D3DRS_FOGENABLE = 28, (* TRUE to enable fog blending *)
  791. D3DRS_SPECULARENABLE = 29, (* TRUE to enable specular *)
  792. D3DRS_FOGCOLOR = 34, (* D3DCOLOR *)
  793. D3DRS_FOGTABLEMODE = 35, (* D3DFOGMODE *)
  794. D3DRS_FOGSTART = 36, (* Fog start (for both vertex and pixel fog) *)
  795. D3DRS_FOGEND = 37, (* Fog end *)
  796. D3DRS_FOGDENSITY = 38, (* Fog density *)
  797. D3DRS_RANGEFOGENABLE = 48, (* Enables range-based fog *)
  798. D3DRS_STENCILENABLE = 52, (* BOOL enable/disable stenciling *)
  799. D3DRS_STENCILFAIL = 53, (* D3DSTENCILOP to do if stencil test fails *)
  800. D3DRS_STENCILZFAIL = 54, (* D3DSTENCILOP to do if stencil test passes and Z test fails *)
  801. D3DRS_STENCILPASS = 55, (* D3DSTENCILOP to do if both stencil and Z tests pass *)
  802. D3DRS_STENCILFUNC = 56, (* D3DCMPFUNC fn. Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true *)
  803. D3DRS_STENCILREF = 57, (* Reference value used in stencil test *)
  804. D3DRS_STENCILMASK = 58, (* Mask value used in stencil test *)
  805. D3DRS_STENCILWRITEMASK = 59, (* Write mask applied to values written to stencil buffer *)
  806. D3DRS_TEXTUREFACTOR = 60, (* D3DCOLOR used for multi-texture blend *)
  807. D3DRS_WRAP0 = 128, (* wrap for 1st texture coord. set *)
  808. D3DRS_WRAP1 = 129, (* wrap for 2nd texture coord. set *)
  809. D3DRS_WRAP2 = 130, (* wrap for 3rd texture coord. set *)
  810. D3DRS_WRAP3 = 131, (* wrap for 4th texture coord. set *)
  811. D3DRS_WRAP4 = 132, (* wrap for 5th texture coord. set *)
  812. D3DRS_WRAP5 = 133, (* wrap for 6th texture coord. set *)
  813. D3DRS_WRAP6 = 134, (* wrap for 7th texture coord. set *)
  814. D3DRS_WRAP7 = 135, (* wrap for 8th texture coord. set *)
  815. D3DRS_CLIPPING = 136,
  816. D3DRS_LIGHTING = 137,
  817. D3DRS_AMBIENT = 139,
  818. D3DRS_FOGVERTEXMODE = 140,
  819. D3DRS_COLORVERTEX = 141,
  820. D3DRS_LOCALVIEWER = 142,
  821. D3DRS_NORMALIZENORMALS = 143,
  822. D3DRS_DIFFUSEMATERIALSOURCE = 145,
  823. D3DRS_SPECULARMATERIALSOURCE = 146,
  824. D3DRS_AMBIENTMATERIALSOURCE = 147,
  825. D3DRS_EMISSIVEMATERIALSOURCE = 148,
  826. D3DRS_VERTEXBLEND = 151,
  827. D3DRS_CLIPPLANEENABLE = 152,
  828. D3DRS_POINTSIZE = 154, (* float point size *)
  829. D3DRS_POINTSIZE_MIN = 155, (* float point size min threshold *)
  830. D3DRS_POINTSPRITEENABLE = 156, (* BOOL point texture coord control *)
  831. D3DRS_POINTSCALEENABLE = 157, (* BOOL point size scale enable *)
  832. D3DRS_POINTSCALE_A = 158, (* float point attenuation A value *)
  833. D3DRS_POINTSCALE_B = 159, (* float point attenuation B value *)
  834. D3DRS_POINTSCALE_C = 160, (* float point attenuation C value *)
  835. D3DRS_MULTISAMPLEANTIALIAS = 161, // BOOL - set to do FSAA with multisample buffer
  836. D3DRS_MULTISAMPLEMASK = 162, // DWORD - per-sample enable/disable
  837. D3DRS_PATCHEDGESTYLE = 163, // Sets whether patch edges will use float style tessellation
  838. D3DRS_DEBUGMONITORTOKEN = 165, // DEBUG ONLY - token to debug monitor
  839. D3DRS_POINTSIZE_MAX = 166, (* float point size max threshold *)
  840. D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
  841. D3DRS_COLORWRITEENABLE = 168, // per-channel write enable
  842. D3DRS_TWEENFACTOR = 170, // float tween factor
  843. D3DRS_BLENDOP = 171, // D3DBLENDOP setting
  844. D3DRS_POSITIONDEGREE = 172, // NPatch position interpolation degree. D3DDEGREE_LINEAR or D3DDEGREE_CUBIC (default)
  845. D3DRS_NORMALDEGREE = 173, // NPatch normal interpolation degree. D3DDEGREE_LINEAR (default) or D3DDEGREE_QUADRATIC
  846. D3DRS_SCISSORTESTENABLE = 174,
  847. D3DRS_SLOPESCALEDEPTHBIAS = 175,
  848. D3DRS_ANTIALIASEDLINEENABLE = 176,
  849. D3DRS_MINTESSELLATIONLEVEL = 178,
  850. D3DRS_MAXTESSELLATIONLEVEL = 179,
  851. D3DRS_ADAPTIVETESS_X = 180,
  852. D3DRS_ADAPTIVETESS_Y = 181,
  853. D3DRS_ADAPTIVETESS_Z = 182,
  854. D3DRS_ADAPTIVETESS_W = 183,
  855. D3DRS_ENABLEADAPTIVETESSELLATION = 184,
  856. D3DRS_TWOSIDEDSTENCILMODE = 185, (* BOOL enable/disable 2 sided stenciling *)
  857. D3DRS_CCW_STENCILFAIL = 186, (* D3DSTENCILOP to do if ccw stencil test fails *)
  858. D3DRS_CCW_STENCILZFAIL = 187, (* D3DSTENCILOP to do if ccw stencil test passes and Z test fails *)
  859. D3DRS_CCW_STENCILPASS = 188, (* D3DSTENCILOP to do if both ccw stencil and Z tests pass *)
  860. D3DRS_CCW_STENCILFUNC = 189, (* D3DCMPFUNC fn. ccw Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true *)
  861. D3DRS_COLORWRITEENABLE1 = 190, (* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS *)
  862. D3DRS_COLORWRITEENABLE2 = 191, (* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS *)
  863. D3DRS_COLORWRITEENABLE3 = 192, (* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS *)
  864. D3DRS_BLENDFACTOR = 193, (* D3DCOLOR used for a constant blend factor during alpha blending for devices that support D3DPBLENDCAPS_BLENDFACTOR *)
  865. D3DRS_SRGBWRITEENABLE = 194, (* Enable rendertarget writes to be DE-linearized to SRGB (for formats that expose D3DUSAGE_QUERY_SRGBWRITE) *)
  866. D3DRS_DEPTHBIAS = 195,
  867. D3DRS_WRAP8 = 198, (* Additional wrap states for vs_3_0+ attributes with D3DDECLUSAGE_TEXCOORD *)
  868. D3DRS_WRAP9 = 199,
  869. D3DRS_WRAP10 = 200,
  870. D3DRS_WRAP11 = 201,
  871. D3DRS_WRAP12 = 202,
  872. D3DRS_WRAP13 = 203,
  873. D3DRS_WRAP14 = 204,
  874. D3DRS_WRAP15 = 205,
  875. D3DRS_SEPARATEALPHABLENDENABLE = 206, (* TRUE to enable a separate blending function for the alpha channel *)
  876. D3DRS_SRCBLENDALPHA = 207, (* SRC blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE *)
  877. D3DRS_DESTBLENDALPHA = 208, (* DST blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE *)
  878. D3DRS_BLENDOPALPHA = 209 (* Blending operation for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE *)
  879. );
  880. {$EXTERNALSYM _D3DRENDERSTATETYPE}
  881. D3DRENDERSTATETYPE = _D3DRENDERSTATETYPE;
  882. {$EXTERNALSYM D3DRENDERSTATETYPE}
  883. TD3DRenderStateType = _D3DRENDERSTATETYPE;
  884. {$ENDIF}
  885. const
  886. // Maximum number of simultaneous render targets D3D supports
  887. D3D_MAX_SIMULTANEOUS_RENDERTARGETS = 4;
  888. {$EXTERNALSYM D3D_MAX_SIMULTANEOUS_RENDERTARGETS}
  889. type
  890. // Values for material source
  891. _D3DMATERIALCOLORSOURCE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  892. {$EXTERNALSYM _D3DMATERIALCOLORSOURCE}
  893. D3DMATERIALCOLORSOURCE = _D3DMATERIALCOLORSOURCE;
  894. {$EXTERNALSYM D3DMATERIALCOLORSOURCE}
  895. TD3DMaterialSource = _D3DMATERIALCOLORSOURCE;
  896. const
  897. D3DMCS_MATERIAL = TD3DMaterialSource(0); // Color from material is used
  898. {$EXTERNALSYM D3DMCS_MATERIAL}
  899. D3DMCS_COLOR1 = TD3DMaterialSource(1); // Diffuse vertex color is used
  900. {$EXTERNALSYM D3DMCS_COLOR1}
  901. D3DMCS_COLOR2 = TD3DMaterialSource(2); // Specular vertex color is used
  902. {$EXTERNALSYM D3DMCS_COLOR2}
  903. D3DMCS_FORCE_DWORD = TD3DMaterialSource($7fffffff); // force 32-bit size enum
  904. {$EXTERNALSYM D3DMCS_FORCE_DWORD}
  905. // Bias to apply to the texture coordinate set to apply a wrap to.
  906. D3DRENDERSTATE_WRAPBIAS = DWORD(128);
  907. {$EXTERNALSYM D3DRENDERSTATE_WRAPBIAS}
  908. { Flags to construct the WRAP render states }
  909. D3DWRAP_U = $00000001;
  910. {$EXTERNALSYM D3DWRAP_U}
  911. D3DWRAP_V = $00000002;
  912. {$EXTERNALSYM D3DWRAP_V}
  913. D3DWRAP_W = $00000004;
  914. {$EXTERNALSYM D3DWRAP_W}
  915. { Flags to construct the WRAP render states for 1D thru 4D texture coordinates }
  916. D3DWRAPCOORD_0 = $00000001; // same as D3DWRAP_U
  917. {$EXTERNALSYM D3DWRAPCOORD_0}
  918. D3DWRAPCOORD_1 = $00000002; // same as D3DWRAP_V
  919. {$EXTERNALSYM D3DWRAPCOORD_1}
  920. D3DWRAPCOORD_2 = $00000004; // same as D3DWRAP_W
  921. {$EXTERNALSYM D3DWRAPCOORD_2}
  922. D3DWRAPCOORD_3 = $00000008;
  923. {$EXTERNALSYM D3DWRAPCOORD_3}
  924. { Flags to construct D3DRS_COLORWRITEENABLE }
  925. D3DCOLORWRITEENABLE_RED = (1 shl 0);
  926. {$EXTERNALSYM D3DCOLORWRITEENABLE_RED}
  927. D3DCOLORWRITEENABLE_GREEN = (1 shl 1);
  928. {$EXTERNALSYM D3DCOLORWRITEENABLE_GREEN}
  929. D3DCOLORWRITEENABLE_BLUE = (1 shl 2);
  930. {$EXTERNALSYM D3DCOLORWRITEENABLE_BLUE}
  931. D3DCOLORWRITEENABLE_ALPHA = (1 shl 3);
  932. {$EXTERNALSYM D3DCOLORWRITEENABLE_ALPHA}
  933. (*
  934. * State enumerants for per-stage processing of fixed function pixel processing
  935. * Two of these affect fixed function vertex processing as well: TEXTURETRANSFORMFLAGS and TEXCOORDINDEX.
  936. *)
  937. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  938. type
  939. _D3DTEXTURESTAGESTATETYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  940. {$EXTERNALSYM _D3DTEXTURESTAGESTATETYPE}
  941. D3DTEXTURESTAGESTATETYPE = _D3DTEXTURESTAGESTATETYPE;
  942. {$EXTERNALSYM D3DTEXTURESTAGESTATETYPE}
  943. TD3DTextureStageStateType = _D3DTEXTURESTAGESTATETYPE;
  944. const
  945. D3DTSS_COLOROP = TD3DTextureStageStateType( 1); { D3DTEXTUREOP - per-stage blending controls for color channels }
  946. {$EXTERNALSYM D3DTSS_COLOROP}
  947. D3DTSS_COLORARG1 = TD3DTextureStageStateType( 2); { D3DTA_* (texture arg) }
  948. {$EXTERNALSYM D3DTSS_COLORARG1}
  949. D3DTSS_COLORARG2 = TD3DTextureStageStateType( 3); { D3DTA_* (texture arg) }
  950. {$EXTERNALSYM D3DTSS_COLORARG2}
  951. D3DTSS_ALPHAOP = TD3DTextureStageStateType( 4); { D3DTEXTUREOP - per-stage blending controls for alpha channel }
  952. {$EXTERNALSYM D3DTSS_ALPHAOP}
  953. D3DTSS_ALPHAARG1 = TD3DTextureStageStateType( 5); { D3DTA_* (texture arg) }
  954. {$EXTERNALSYM D3DTSS_ALPHAARG1}
  955. D3DTSS_ALPHAARG2 = TD3DTextureStageStateType( 6); { D3DTA_* (texture arg) }
  956. {$EXTERNALSYM D3DTSS_ALPHAARG2}
  957. D3DTSS_BUMPENVMAT00 = TD3DTextureStageStateType( 7); { float (bump mapping matrix) }
  958. {$EXTERNALSYM D3DTSS_BUMPENVMAT00}
  959. D3DTSS_BUMPENVMAT01 = TD3DTextureStageStateType( 8); { float (bump mapping matrix) }
  960. {$EXTERNALSYM D3DTSS_BUMPENVMAT01}
  961. D3DTSS_BUMPENVMAT10 = TD3DTextureStageStateType( 9); { float (bump mapping matrix) }
  962. {$EXTERNALSYM D3DTSS_BUMPENVMAT10}
  963. D3DTSS_BUMPENVMAT11 = TD3DTextureStageStateType(10); { float (bump mapping matrix) }
  964. {$EXTERNALSYM D3DTSS_BUMPENVMAT11}
  965. D3DTSS_TEXCOORDINDEX = TD3DTextureStageStateType(11); { identifies which set of texture coordinates index this texture }
  966. {$EXTERNALSYM D3DTSS_TEXCOORDINDEX}
  967. D3DTSS_BUMPENVLSCALE = TD3DTextureStageStateType(22); { float scale for bump map luminance }
  968. {$EXTERNALSYM D3DTSS_BUMPENVLSCALE}
  969. D3DTSS_BUMPENVLOFFSET = TD3DTextureStageStateType(23); { float offset for bump map luminance }
  970. {$EXTERNALSYM D3DTSS_BUMPENVLOFFSET}
  971. D3DTSS_TEXTURETRANSFORMFLAGS = TD3DTextureStageStateType(24); { D3DTEXTURETRANSFORMFLAGS controls texture transform }
  972. {$EXTERNALSYM D3DTSS_TEXTURETRANSFORMFLAGS}
  973. D3DTSS_COLORARG0 = TD3DTextureStageStateType(26); { D3DTA_* third arg for triadic ops }
  974. {$EXTERNALSYM D3DTSS_COLORARG0}
  975. D3DTSS_ALPHAARG0 = TD3DTextureStageStateType(27); { D3DTA_* third arg for triadic ops }
  976. {$EXTERNALSYM D3DTSS_ALPHAARG0}
  977. D3DTSS_RESULTARG = TD3DTextureStageStateType(28); { D3DTA_* arg for result (CURRENT or TEMP) }
  978. {$EXTERNALSYM D3DTSS_RESULTARG}
  979. D3DTSS_CONSTANT = TD3DTextureStageStateType(32); { Per-stage constant D3DTA_CONSTANT }
  980. {$EXTERNALSYM D3DTSS_CONSTANT}
  981. D3DTSS_FORCE_DWORD = TD3DTextureStageStateType($7fffffff); { force 32-bit size enum }
  982. {$EXTERNALSYM D3DTSS_FORCE_DWORD}
  983. {$ELSE}
  984. type
  985. _D3DTEXTURESTAGESTATETYPE = (
  986. D3DTSS_COLOROP = 1, { D3DTEXTUREOP - per-stage blending controls for color channels }
  987. D3DTSS_COLORARG1 = 2, { D3DTA_* (texture arg) }
  988. D3DTSS_COLORARG2 = 3, { D3DTA_* (texture arg) }
  989. D3DTSS_ALPHAOP = 4, { D3DTEXTUREOP - per-stage blending controls for alpha channel }
  990. D3DTSS_ALPHAARG1 = 5, { D3DTA_* (texture arg) }
  991. D3DTSS_ALPHAARG2 = 6, { D3DTA_* (texture arg) }
  992. D3DTSS_BUMPENVMAT00 = 7, { float (bump mapping matrix) }
  993. D3DTSS_BUMPENVMAT01 = 8, { float (bump mapping matrix) }
  994. D3DTSS_BUMPENVMAT10 = 9, { float (bump mapping matrix) }
  995. D3DTSS_BUMPENVMAT11 = 10, { float (bump mapping matrix) }
  996. D3DTSS_TEXCOORDINDEX = 11, { identifies which set of texture coordinates index this texture }
  997. D3DTSS_BUMPENVLSCALE = 22, { float scale for bump map luminance }
  998. D3DTSS_BUMPENVLOFFSET = 23, { float offset for bump map luminance }
  999. D3DTSS_TEXTURETRANSFORMFLAGS = 24, { D3DTEXTURETRANSFORMFLAGS controls texture transform }
  1000. D3DTSS_COLORARG0 = 26, { D3DTA_* third arg for triadic ops }
  1001. D3DTSS_ALPHAARG0 = 27, { D3DTA_* third arg for triadic ops }
  1002. D3DTSS_RESULTARG = 28, { D3DTA_* arg for result (CURRENT or TEMP) }
  1003. D3DTSS_CONSTANT = 32 { Per-stage constant D3DTA_CONSTANT }
  1004. );
  1005. {$EXTERNALSYM _D3DTEXTURESTAGESTATETYPE}
  1006. D3DTEXTURESTAGESTATETYPE = _D3DTEXTURESTAGESTATETYPE;
  1007. {$EXTERNALSYM D3DTEXTURESTAGESTATETYPE}
  1008. TD3DTextureStageStateType = _D3DTEXTURESTAGESTATETYPE;
  1009. {$ENDIF}
  1010. type
  1011. (*
  1012. * State enumerants for per-sampler texture processing.
  1013. *)
  1014. _D3DSAMPLERSTATETYPE = (
  1015. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  1016. D3DSAMP_invalid_0 {= 0},
  1017. D3DSAMP_ADDRESSU {= 1}, { D3DTEXTUREADDRESS for U coordinate }
  1018. D3DSAMP_ADDRESSV {= 2}, { D3DTEXTUREADDRESS for V coordinate }
  1019. D3DSAMP_ADDRESSW {= 3}, { D3DTEXTUREADDRESS for W coordinate }
  1020. D3DSAMP_BORDERCOLOR {= 4}, { D3DCOLOR }
  1021. D3DSAMP_MAGFILTER {= 5}, { D3DTEXTUREFILTER filter to use for magnification }
  1022. D3DSAMP_MINFILTER {= 6}, { D3DTEXTUREFILTER filter to use for minification }
  1023. D3DSAMP_MIPFILTER {= 7}, { D3DTEXTUREFILTER filter to use between mipmaps during minification }
  1024. D3DSAMP_MIPMAPLODBIAS {= 8}, { float Mipmap LOD bias }
  1025. D3DSAMP_MAXMIPLEVEL {= 9}, { DWORD 0..(n-1) LOD index of largest map to use (0 == largest) }
  1026. D3DSAMP_MAXANISOTROPY {= 10}, { DWORD maximum anisotropy }
  1027. D3DSAMP_SRGBTEXTURE {= 11}, { Default = 0 (which means Gamma 1.0,
  1028. no correction required.) else correct for
  1029. Gamma = 2.2 }
  1030. D3DSAMP_ELEMENTINDEX {= 12}, { When multi-element texture is assigned to sampler, this
  1031. indicates which element index to use. Default = 0. }
  1032. D3DSAMP_DMAPOFFSET {= 13} { Offset in vertices in the pre-sampled displacement map.
  1033. Only valid for D3DDMAPSAMPLER sampler }
  1034. {$ELSE}
  1035. D3DSAMP_ADDRESSU = 1, { D3DTEXTUREADDRESS for U coordinate }
  1036. D3DSAMP_ADDRESSV = 2, { D3DTEXTUREADDRESS for V coordinate }
  1037. D3DSAMP_ADDRESSW = 3, { D3DTEXTUREADDRESS for W coordinate }
  1038. D3DSAMP_BORDERCOLOR = 4, { D3DCOLOR }
  1039. D3DSAMP_MAGFILTER = 5, { D3DTEXTUREFILTER filter to use for magnification }
  1040. D3DSAMP_MINFILTER = 6, { D3DTEXTUREFILTER filter to use for minification }
  1041. D3DSAMP_MIPFILTER = 7, { D3DTEXTUREFILTER filter to use between mipmaps during minification }
  1042. D3DSAMP_MIPMAPLODBIAS = 8, { float Mipmap LOD bias }
  1043. D3DSAMP_MAXMIPLEVEL = 9, { DWORD 0..(n-1) LOD index of largest map to use (0 == largest) }
  1044. D3DSAMP_MAXANISOTROPY = 10, { DWORD maximum anisotropy }
  1045. D3DSAMP_SRGBTEXTURE = 11, { Default = 0 (which means Gamma 1.0,
  1046. no correction required.) else correct for
  1047. Gamma = 2.2 }
  1048. D3DSAMP_ELEMENTINDEX = 12, { When multi-element texture is assigned to sampler, this
  1049. indicates which element index to use. Default = 0. }
  1050. D3DSAMP_DMAPOFFSET = 13 { Offset in vertices in the pre-sampled displacement map.
  1051. Only valid for D3DDMAPSAMPLER sampler }
  1052. {$ENDIF}
  1053. );
  1054. {$EXTERNALSYM _D3DSAMPLERSTATETYPE}
  1055. D3DSAMPLERSTATETYPE = _D3DSAMPLERSTATETYPE;
  1056. {$EXTERNALSYM D3DSAMPLERSTATETYPE}
  1057. TD3DSamplerStateType = _D3DSAMPLERSTATETYPE;
  1058. const
  1059. { Special sampler which is used in the tesselator }
  1060. D3DDMAPSAMPLER = 256;
  1061. {$EXTERNALSYM D3DDMAPSAMPLER}
  1062. // Samplers used in vertex shaders
  1063. D3DVERTEXTEXTURESAMPLER0 = (D3DDMAPSAMPLER+1);
  1064. {$EXTERNALSYM D3DVERTEXTEXTURESAMPLER0}
  1065. D3DVERTEXTEXTURESAMPLER1 = (D3DDMAPSAMPLER+2);
  1066. {$EXTERNALSYM D3DVERTEXTEXTURESAMPLER1}
  1067. D3DVERTEXTEXTURESAMPLER2 = (D3DDMAPSAMPLER+3);
  1068. {$EXTERNALSYM D3DVERTEXTEXTURESAMPLER2}
  1069. D3DVERTEXTEXTURESAMPLER3 = (D3DDMAPSAMPLER+4);
  1070. {$EXTERNALSYM D3DVERTEXTEXTURESAMPLER3}
  1071. // Values, used with D3DTSS_TEXCOORDINDEX, to specify that the vertex data(position
  1072. // and normal in the camera space) should be taken as texture coordinates
  1073. // Low 16 bits are used to specify texture coordinate index, to take the WRAP mode from
  1074. //
  1075. D3DTSS_TCI_PASSTHRU = $00000000;
  1076. {$EXTERNALSYM D3DTSS_TCI_PASSTHRU}
  1077. D3DTSS_TCI_CAMERASPACENORMAL = $00010000;
  1078. {$EXTERNALSYM D3DTSS_TCI_CAMERASPACENORMAL}
  1079. D3DTSS_TCI_CAMERASPACEPOSITION = $00020000;
  1080. {$EXTERNALSYM D3DTSS_TCI_CAMERASPACEPOSITION}
  1081. D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR = $00030000;
  1082. {$EXTERNALSYM D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR}
  1083. D3DTSS_TCI_SPHEREMAP = $00040000;
  1084. {$EXTERNALSYM D3DTSS_TCI_SPHEREMAP}
  1085. (*
  1086. * Enumerations for COLOROP and ALPHAOP texture blending operations set in
  1087. * texture processing stage controls in D3DTSS.
  1088. *)
  1089. type
  1090. _D3DTEXTUREOP = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1091. {$EXTERNALSYM _D3DTEXTUREOP}
  1092. D3DTEXTUREOP = _D3DTEXTUREOP;
  1093. {$EXTERNALSYM D3DTEXTUREOP}
  1094. TD3DTextureOp = _D3DTEXTUREOP;
  1095. const
  1096. // Control
  1097. D3DTOP_DISABLE = 1; // disables stage
  1098. {$EXTERNALSYM D3DTOP_DISABLE}
  1099. D3DTOP_SELECTARG1 = 2; // the default
  1100. {$EXTERNALSYM D3DTOP_SELECTARG1}
  1101. D3DTOP_SELECTARG2 = 3;
  1102. {$EXTERNALSYM D3DTOP_SELECTARG2}
  1103. // Modulate
  1104. D3DTOP_MODULATE = 4; // multiply args together
  1105. {$EXTERNALSYM D3DTOP_MODULATE}
  1106. D3DTOP_MODULATE2X = 5; // multiply and 1 bit
  1107. {$EXTERNALSYM D3DTOP_MODULATE2X}
  1108. D3DTOP_MODULATE4X = 6; // multiply and 2 bits
  1109. {$EXTERNALSYM D3DTOP_MODULATE4X}
  1110. // Add
  1111. D3DTOP_ADD = 7; // add arguments together
  1112. {$EXTERNALSYM D3DTOP_ADD}
  1113. D3DTOP_ADDSIGNED = 8; // add with -0.5 bias
  1114. {$EXTERNALSYM D3DTOP_ADDSIGNED}
  1115. D3DTOP_ADDSIGNED2X = 9; // as above but left 1 bit
  1116. {$EXTERNALSYM D3DTOP_ADDSIGNED2X}
  1117. D3DTOP_SUBTRACT = 10; // Arg1 - Arg2, with no saturation
  1118. {$EXTERNALSYM D3DTOP_SUBTRACT}
  1119. D3DTOP_ADDSMOOTH = 11; // add 2 args, subtract product
  1120. // Arg1 + Arg2 - Arg1*Arg2
  1121. // = Arg1 + (1-Arg1)*Arg2
  1122. {$EXTERNALSYM D3DTOP_ADDSMOOTH}
  1123. // Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
  1124. D3DTOP_BLENDDIFFUSEALPHA = 12; // iterated alpha
  1125. {$EXTERNALSYM D3DTOP_BLENDDIFFUSEALPHA}
  1126. D3DTOP_BLENDTEXTUREALPHA = 13; // texture alpha
  1127. {$EXTERNALSYM D3DTOP_BLENDTEXTUREALPHA}
  1128. D3DTOP_BLENDFACTORALPHA = 14; // alpha from D3DRS_TEXTUREFACTOR
  1129. {$EXTERNALSYM D3DTOP_BLENDFACTORALPHA}
  1130. // Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
  1131. D3DTOP_BLENDTEXTUREALPHAPM = 15; // texture alpha
  1132. {$EXTERNALSYM D3DTOP_BLENDTEXTUREALPHAPM}
  1133. D3DTOP_BLENDCURRENTALPHA = 16; // by alpha of current color
  1134. {$EXTERNALSYM D3DTOP_BLENDCURRENTALPHA}
  1135. // Specular mapping
  1136. D3DTOP_PREMODULATE = 17; // modulate with next texture before use
  1137. {$EXTERNALSYM D3DTOP_PREMODULATE}
  1138. D3DTOP_MODULATEALPHA_ADDCOLOR = 18; // Arg1.RGB + Arg1.A*Arg2.RGB
  1139. // COLOROP only
  1140. {$EXTERNALSYM D3DTOP_MODULATEALPHA_ADDCOLOR}
  1141. D3DTOP_MODULATECOLOR_ADDALPHA = 19; // Arg1.RGB*Arg2.RGB + Arg1.A
  1142. // COLOROP only
  1143. {$EXTERNALSYM D3DTOP_MODULATECOLOR_ADDALPHA}
  1144. D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20; // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
  1145. // COLOROP only
  1146. {$EXTERNALSYM D3DTOP_MODULATEINVALPHA_ADDCOLOR}
  1147. D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21; // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
  1148. // COLOROP only
  1149. {$EXTERNALSYM D3DTOP_MODULATEINVCOLOR_ADDALPHA}
  1150. // Bump mapping
  1151. D3DTOP_BUMPENVMAP = 22; // per pixel env map perturbation
  1152. {$EXTERNALSYM D3DTOP_BUMPENVMAP}
  1153. D3DTOP_BUMPENVMAPLUMINANCE = 23; // with luminance channel
  1154. {$EXTERNALSYM D3DTOP_BUMPENVMAPLUMINANCE}
  1155. // This can do either diffuse or specular bump mapping with correct input.
  1156. // Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B)
  1157. // where each component has been scaled and offset to make it signed.
  1158. // The result is replicated into all four (including alpha) channels.
  1159. // This is a valid COLOROP only.
  1160. D3DTOP_DOTPRODUCT3 = 24;
  1161. {$EXTERNALSYM D3DTOP_DOTPRODUCT3}
  1162. // Triadic ops
  1163. D3DTOP_MULTIPLYADD = 25; // Arg0 + Arg1*Arg2
  1164. {$EXTERNALSYM D3DTOP_MULTIPLYADD}
  1165. D3DTOP_LERP = 26; // (Arg0)*Arg1 + (1-Arg0)*Arg2
  1166. {$EXTERNALSYM D3DTOP_LERP}
  1167. (*
  1168. * Values for COLORARG0,1,2, ALPHAARG0,1,2, and RESULTARG texture blending
  1169. * operations set in texture processing stage controls in D3DRENDERSTATE.
  1170. *)
  1171. const
  1172. D3DTA_SELECTMASK = $0000000f; // mask for arg selector
  1173. {$EXTERNALSYM D3DTA_SELECTMASK}
  1174. D3DTA_DIFFUSE = $00000000; // select diffuse color (read only)
  1175. {$EXTERNALSYM D3DTA_DIFFUSE}
  1176. D3DTA_CURRENT = $00000001; // select stage destination register (read/write)
  1177. {$EXTERNALSYM D3DTA_CURRENT}
  1178. D3DTA_TEXTURE = $00000002; // select texture color (read only)
  1179. {$EXTERNALSYM D3DTA_TEXTURE}
  1180. D3DTA_TFACTOR = $00000003; // select D3DRS_TEXTUREFACTOR (read only)
  1181. {$EXTERNALSYM D3DTA_TFACTOR}
  1182. D3DTA_SPECULAR = $00000004; // select specular color (read only)
  1183. {$EXTERNALSYM D3DTA_SPECULAR}
  1184. D3DTA_TEMP = $00000005; // select temporary register color (read/write)
  1185. {$EXTERNALSYM D3DTA_TEMP}
  1186. D3DTA_CONSTANT = $00000006; // select texture stage constant
  1187. {$EXTERNALSYM D3DTA_CONSTANT}
  1188. D3DTA_COMPLEMENT = $00000010; // take 1.0 - x (read modifier)
  1189. {$EXTERNALSYM D3DTA_COMPLEMENT}
  1190. D3DTA_ALPHAREPLICATE = $00000020; // replicate alpha to color components (read modifier)
  1191. {$EXTERNALSYM D3DTA_ALPHAREPLICATE}
  1192. type
  1193. //
  1194. // Values for D3DSAMP_***FILTER texture stage states
  1195. //
  1196. _D3DTEXTUREFILTERTYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1197. {$EXTERNALSYM _D3DTEXTUREFILTERTYPE}
  1198. D3DTEXTUREFILTERTYPE = _D3DTEXTUREFILTERTYPE;
  1199. {$EXTERNALSYM D3DTEXTUREFILTERTYPE}
  1200. TD3DTextureFilterType = _D3DTEXTUREFILTERTYPE;
  1201. const
  1202. D3DTEXF_NONE = 0; // filtering disabled (valid for mip filter only)
  1203. {$EXTERNALSYM D3DTEXF_NONE}
  1204. D3DTEXF_POINT = 1; // nearest
  1205. {$EXTERNALSYM D3DTEXF_POINT}
  1206. D3DTEXF_LINEAR = 2; // linear interpolation
  1207. {$EXTERNALSYM D3DTEXF_LINEAR}
  1208. D3DTEXF_ANISOTROPIC = 3; // anisotropic
  1209. {$EXTERNALSYM D3DTEXF_ANISOTROPIC}
  1210. D3DTEXF_PYRAMIDALQUAD = 6; // 4-sample tent
  1211. {$EXTERNALSYM D3DTEXF_PYRAMIDALQUAD}
  1212. D3DTEXF_GAUSSIANQUAD = 7; // 4-sample gaussian
  1213. {$EXTERNALSYM D3DTEXF_GAUSSIANQUAD}
  1214. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  1215. D3DTEXF_CONVOLUTIONMONO = 8; // Convolution filter for monochrome textures
  1216. {$EXTERNALSYM D3DTEXF_CONVOLUTIONMONO}
  1217. {$ENDIF}
  1218. const
  1219. { Bits for Flags in ProcessVertices call }
  1220. D3DPV_DONOTCOPYDATA = (1 shl 0);
  1221. {$EXTERNALSYM D3DPV_DONOTCOPYDATA}
  1222. //-------------------------------------------------------------------
  1223. // Flexible vertex format bits
  1224. //
  1225. D3DFVF_RESERVED0 = $001;
  1226. {$EXTERNALSYM D3DFVF_RESERVED0}
  1227. D3DFVF_POSITION_MASK = $400E;
  1228. {$EXTERNALSYM D3DFVF_POSITION_MASK}
  1229. D3DFVF_XYZ = $002;
  1230. {$EXTERNALSYM D3DFVF_XYZ}
  1231. D3DFVF_XYZRHW = $004;
  1232. {$EXTERNALSYM D3DFVF_XYZRHW}
  1233. D3DFVF_XYZB1 = $006;
  1234. {$EXTERNALSYM D3DFVF_XYZB1}
  1235. D3DFVF_XYZB2 = $008;
  1236. {$EXTERNALSYM D3DFVF_XYZB2}
  1237. D3DFVF_XYZB3 = $00a;
  1238. {$EXTERNALSYM D3DFVF_XYZB3}
  1239. D3DFVF_XYZB4 = $00c;
  1240. {$EXTERNALSYM D3DFVF_XYZB4}
  1241. D3DFVF_XYZB5 = $00e;
  1242. {$EXTERNALSYM D3DFVF_XYZB5}
  1243. D3DFVF_XYZW = $4002;
  1244. {$EXTERNALSYM D3DFVF_XYZW}
  1245. D3DFVF_NORMAL = $010;
  1246. {$EXTERNALSYM D3DFVF_NORMAL}
  1247. D3DFVF_PSIZE = $020;
  1248. {$EXTERNALSYM D3DFVF_PSIZE}
  1249. D3DFVF_DIFFUSE = $040;
  1250. {$EXTERNALSYM D3DFVF_DIFFUSE}
  1251. D3DFVF_SPECULAR = $080;
  1252. {$EXTERNALSYM D3DFVF_SPECULAR}
  1253. D3DFVF_TEXCOUNT_MASK = $f00;
  1254. {$EXTERNALSYM D3DFVF_TEXCOUNT_MASK}
  1255. D3DFVF_TEXCOUNT_SHIFT = 8;
  1256. {$EXTERNALSYM D3DFVF_TEXCOUNT_SHIFT}
  1257. D3DFVF_TEX0 = $000;
  1258. {$EXTERNALSYM D3DFVF_TEX0}
  1259. D3DFVF_TEX1 = $100;
  1260. {$EXTERNALSYM D3DFVF_TEX1}
  1261. D3DFVF_TEX2 = $200;
  1262. {$EXTERNALSYM D3DFVF_TEX2}
  1263. D3DFVF_TEX3 = $300;
  1264. {$EXTERNALSYM D3DFVF_TEX3}
  1265. D3DFVF_TEX4 = $400;
  1266. {$EXTERNALSYM D3DFVF_TEX4}
  1267. D3DFVF_TEX5 = $500;
  1268. {$EXTERNALSYM D3DFVF_TEX5}
  1269. D3DFVF_TEX6 = $600;
  1270. {$EXTERNALSYM D3DFVF_TEX6}
  1271. D3DFVF_TEX7 = $700;
  1272. {$EXTERNALSYM D3DFVF_TEX7}
  1273. D3DFVF_TEX8 = $800;
  1274. {$EXTERNALSYM D3DFVF_TEX8}
  1275. D3DFVF_LASTBETA_UBYTE4 = $1000;
  1276. {$EXTERNALSYM D3DFVF_LASTBETA_UBYTE4}
  1277. D3DFVF_LASTBETA_D3DCOLOR = $8000;
  1278. {$EXTERNALSYM D3DFVF_LASTBETA_D3DCOLOR}
  1279. D3DFVF_RESERVED2 = $6000; // 2 reserved bits
  1280. {$EXTERNALSYM D3DFVF_RESERVED2}
  1281. //---------------------------------------------------------------------
  1282. // Vertex Shaders
  1283. //
  1284. // Vertex shader declaration
  1285. // Forces TD3DDeclUsage, TD3DDeclMethod, TD3DDeclType be 1 byte enums
  1286. {$MINENUMSIZE 1}
  1287. type
  1288. // Vertex element semantics
  1289. //
  1290. _D3DDECLUSAGE = (
  1291. D3DDECLUSAGE_POSITION, // = 0
  1292. D3DDECLUSAGE_BLENDWEIGHT, // 1
  1293. D3DDECLUSAGE_BLENDINDICES, // 2
  1294. D3DDECLUSAGE_NORMAL, // 3
  1295. D3DDECLUSAGE_PSIZE, // 4
  1296. D3DDECLUSAGE_TEXCOORD, // 5
  1297. D3DDECLUSAGE_TANGENT, // 6
  1298. D3DDECLUSAGE_BINORMAL, // 7
  1299. D3DDECLUSAGE_TESSFACTOR, // 8
  1300. D3DDECLUSAGE_POSITIONT, // 9
  1301. D3DDECLUSAGE_COLOR, // 10
  1302. D3DDECLUSAGE_FOG, // 11
  1303. D3DDECLUSAGE_DEPTH, // 12
  1304. D3DDECLUSAGE_SAMPLE // 13
  1305. );
  1306. {$EXTERNALSYM _D3DDECLUSAGE}
  1307. D3DDECLUSAGE = _D3DDECLUSAGE;
  1308. {$EXTERNALSYM D3DDECLUSAGE}
  1309. TD3DDeclUsage = _D3DDECLUSAGE;
  1310. const
  1311. MAXD3DDECLUSAGE = DWORD(D3DDECLUSAGE_SAMPLE);
  1312. {$EXTERNALSYM MAXD3DDECLUSAGE}
  1313. MAXD3DDECLUSAGEINDEX = 15;
  1314. {$EXTERNALSYM MAXD3DDECLUSAGEINDEX}
  1315. MAXD3DDECLLENGTH = 64; // does not include "end" marker vertex element
  1316. {$EXTERNALSYM MAXD3DDECLLENGTH}
  1317. type
  1318. _D3DDECLMETHOD = (
  1319. D3DDECLMETHOD_DEFAULT, // = 0,
  1320. D3DDECLMETHOD_PARTIALU,
  1321. D3DDECLMETHOD_PARTIALV,
  1322. D3DDECLMETHOD_CROSSUV, // Normal
  1323. D3DDECLMETHOD_UV,
  1324. D3DDECLMETHOD_LOOKUP, // Lookup a displacement map
  1325. D3DDECLMETHOD_LOOKUPPRESAMPLED // Lookup a pre-sampled displacement map
  1326. );
  1327. {$EXTERNALSYM _D3DDECLMETHOD}
  1328. D3DDECLMETHOD = _D3DDECLMETHOD;
  1329. {$EXTERNALSYM D3DDECLMETHOD}
  1330. TD3DDeclMethod = _D3DDECLMETHOD;
  1331. const
  1332. MAXD3DDECLMETHOD = DWORD(D3DDECLMETHOD_LOOKUPPRESAMPLED);
  1333. {$EXTERNALSYM MAXD3DDECLMETHOD}
  1334. type
  1335. // Declarations for _Type fields
  1336. //
  1337. _D3DDECLTYPE = (
  1338. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  1339. D3DDECLTYPE_FLOAT1 {= 0}, // 1D float expanded to (value, 0., 0., 1.)
  1340. D3DDECLTYPE_FLOAT2 {= 1}, // 2D float expanded to (value, value, 0., 1.)
  1341. D3DDECLTYPE_FLOAT3 {= 2}, // 3D float expanded to (value, value, value, 1.)
  1342. D3DDECLTYPE_FLOAT4 {= 3}, // 4D float
  1343. D3DDECLTYPE_D3DCOLOR {= 4}, // 4D packed unsigned bytes mapped to 0. to 1. range
  1344. // Input is in D3DCOLOR format (ARGB) expanded to (R, G, B, A)
  1345. D3DDECLTYPE_UBYTE4 {= 5}, // 4D unsigned byte
  1346. D3DDECLTYPE_SHORT2 {= 6}, // 2D signed short expanded to (value, value, 0., 1.)
  1347. D3DDECLTYPE_SHORT4 {= 7}, // 4D signed short
  1348. // The following types are valid only with vertex shaders >= 2.0
  1349. D3DDECLTYPE_UBYTE4N {= 8}, // Each of 4 bytes is normalized by dividing to 255.0
  1350. D3DDECLTYPE_SHORT2N {= 9}, // 2D signed short normalized (v[0]/32767.0,v[1]/32767.0,0,1)
  1351. D3DDECLTYPE_SHORT4N {= 10}, // 4D signed short normalized (v[0]/32767.0,v[1]/32767.0,v[2]/32767.0,v[3]/32767.0)
  1352. D3DDECLTYPE_USHORT2N {= 11}, // 2D unsigned short normalized (v[0]/65535.0,v[1]/65535.0,0,1)
  1353. D3DDECLTYPE_USHORT4N {= 12}, // 4D unsigned short normalized (v[0]/65535.0,v[1]/65535.0,v[2]/65535.0,v[3]/65535.0)
  1354. D3DDECLTYPE_UDEC3 {= 13}, // 3D unsigned 10 10 10 format expanded to (value, value, value, 1)
  1355. D3DDECLTYPE_DEC3N {= 14}, // 3D signed 10 10 10 format normalized and expanded to (v[0]/511.0, v[1]/511.0, v[2]/511.0, 1)
  1356. D3DDECLTYPE_FLOAT16_2{= 15}, // Two 16-bit floating point values, expanded to (value, value, 0, 1)
  1357. D3DDECLTYPE_FLOAT16_4{= 16}, // Four 16-bit floating point values
  1358. D3DDECLTYPE_UNUSED {= 17} // When the type field in a decl is unused.
  1359. {$ELSE}
  1360. D3DDECLTYPE_FLOAT1 = 0, // 1D float expanded to (value, 0., 0., 1.)
  1361. D3DDECLTYPE_FLOAT2 = 1, // 2D float expanded to (value, value, 0., 1.)
  1362. D3DDECLTYPE_FLOAT3 = 2, // 3D float expanded to (value, value, value, 1.)
  1363. D3DDECLTYPE_FLOAT4 = 3, // 4D float
  1364. D3DDECLTYPE_D3DCOLOR = 4, // 4D packed unsigned bytes mapped to 0. to 1. range
  1365. // Input is in D3DCOLOR format (ARGB) expanded to (R, G, B, A)
  1366. D3DDECLTYPE_UBYTE4 = 5, // 4D unsigned byte
  1367. D3DDECLTYPE_SHORT2 = 6, // 2D signed short expanded to (value, value, 0., 1.)
  1368. D3DDECLTYPE_SHORT4 = 7, // 4D signed short
  1369. // The following types are valid only with vertex shaders >= 2.0
  1370. D3DDECLTYPE_UBYTE4N = 8, // Each of 4 bytes is normalized by dividing to 255.0
  1371. D3DDECLTYPE_SHORT2N = 9, // 2D signed short normalized (v[0]/32767.0,v[1]/32767.0,0,1)
  1372. D3DDECLTYPE_SHORT4N = 10, // 4D signed short normalized (v[0]/32767.0,v[1]/32767.0,v[2]/32767.0,v[3]/32767.0)
  1373. D3DDECLTYPE_USHORT2N = 11, // 2D unsigned short normalized (v[0]/65535.0,v[1]/65535.0,0,1)
  1374. D3DDECLTYPE_USHORT4N = 12, // 4D unsigned short normalized (v[0]/65535.0,v[1]/65535.0,v[2]/65535.0,v[3]/65535.0)
  1375. D3DDECLTYPE_UDEC3 = 13, // 3D unsigned 10 10 10 format expanded to (value, value, value, 1)
  1376. D3DDECLTYPE_DEC3N = 14, // 3D signed 10 10 10 format normalized and expanded to (v[0]/511.0, v[1]/511.0, v[2]/511.0, 1)
  1377. D3DDECLTYPE_FLOAT16_2 = 15, // Two 16-bit floating point values, expanded to (value, value, 0, 1)
  1378. D3DDECLTYPE_FLOAT16_4 = 16, // Four 16-bit floating point values
  1379. D3DDECLTYPE_UNUSED = 17 // When the type field in a decl is unused.
  1380. {$ENDIF}
  1381. );
  1382. {$EXTERNALSYM _D3DDECLTYPE}
  1383. D3DDECLTYPE = _D3DDECLTYPE;
  1384. {$EXTERNALSYM D3DDECLTYPE}
  1385. TD3DDeclType = _D3DDECLTYPE;
  1386. // Restores enums to be 4 byte in size
  1387. {$MINENUMSIZE 4}
  1388. const
  1389. MAXD3DDECLTYPE = DWORD(D3DDECLTYPE_UNUSED);
  1390. {$EXTERNALSYM MAXD3DDECLTYPE}
  1391. type
  1392. PD3DVertexElement9 = ^TD3DVertexElement9;
  1393. _D3DVERTEXELEMENT9 = record
  1394. Stream: Word; // Stream index
  1395. Offset: Word; // Offset in the stream in bytes
  1396. _Type: TD3DDeclType{Byte}; // Data type
  1397. Method: TD3DDeclMethod{Byte}; // Processing method
  1398. Usage: TD3DDeclUsage{Byte}; // Semantics
  1399. UsageIndex: Byte; // Semantic index
  1400. end;
  1401. {$EXTERNALSYM _D3DVERTEXELEMENT9}
  1402. D3DVERTEXELEMENT9 = _D3DVERTEXELEMENT9;
  1403. {$EXTERNALSYM D3DVERTEXELEMENT9}
  1404. TD3DVertexElement9 = _D3DVERTEXELEMENT9;
  1405. // This is used to initialize the last vertex element in a vertex declaration
  1406. // array
  1407. //
  1408. const
  1409. D3DDECL_END: TD3DVertexElement9 = (Stream : $FF;
  1410. Offset : 0;
  1411. _Type : D3DDECLTYPE_UNUSED;
  1412. Method : TD3DDeclMethod(0);
  1413. Usage : TD3DDeclUsage(0);
  1414. UsageIndex : 0);
  1415. {$EXTERNALSYM D3DDECL_END}
  1416. // Maximum supported number of texture coordinate sets
  1417. const
  1418. D3DDP_MAXTEXCOORD = 8;
  1419. {$EXTERNALSYM D3DDP_MAXTEXCOORD}
  1420. //---------------------------------------------------------------------
  1421. // Values for IDirect3DDevice9::SetStreamSourceFreq's Setting parameter
  1422. //---------------------------------------------------------------------
  1423. D3DSTREAMSOURCE_INDEXEDDATA = LongWord(1 shl 30);
  1424. {$EXTERNALSYM D3DSTREAMSOURCE_INDEXEDDATA}
  1425. D3DSTREAMSOURCE_INSTANCEDATA = LongWord(2 shl 30);
  1426. {$EXTERNALSYM D3DSTREAMSOURCE_INSTANCEDATA}
  1427. //---------------------------------------------------------------------
  1428. //
  1429. // The internal format of Pixel Shader (PS) & Vertex Shader (VS)
  1430. // Instruction Tokens is defined in the Direct3D Device Driver Kit
  1431. //
  1432. //---------------------------------------------------------------------
  1433. //
  1434. // Instruction Token Bit Definitions
  1435. //
  1436. D3DSI_OPCODE_MASK = $0000FFFF;
  1437. {$EXTERNALSYM D3DSI_OPCODE_MASK}
  1438. D3DSI_INSTLENGTH_MASK = $0F000000;
  1439. {$EXTERNALSYM D3DSI_INSTLENGTH_MASK}
  1440. D3DSI_INSTLENGTH_SHIFT = 24;
  1441. {$EXTERNALSYM D3DSI_INSTLENGTH_SHIFT}
  1442. type
  1443. _D3DSHADER_INSTRUCTION_OPCODE_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1444. {$EXTERNALSYM _D3DSHADER_INSTRUCTION_OPCODE_TYPE}
  1445. D3DSHADER_INSTRUCTION_OPCODE_TYPE = _D3DSHADER_INSTRUCTION_OPCODE_TYPE;
  1446. {$EXTERNALSYM D3DSHADER_INSTRUCTION_OPCODE_TYPE}
  1447. TD3DShaderInstructionOpcodeType = _D3DSHADER_INSTRUCTION_OPCODE_TYPE;
  1448. const
  1449. D3DSIO_NOP = 0;
  1450. {$EXTERNALSYM D3DSIO_NOP}
  1451. D3DSIO_MOV = 1;
  1452. {$EXTERNALSYM D3DSIO_MOV}
  1453. D3DSIO_ADD = 2;
  1454. {$EXTERNALSYM D3DSIO_ADD}
  1455. D3DSIO_SUB = 3;
  1456. {$EXTERNALSYM D3DSIO_SUB}
  1457. D3DSIO_MAD = 4;
  1458. {$EXTERNALSYM D3DSIO_MAD}
  1459. D3DSIO_MUL = 5;
  1460. {$EXTERNALSYM D3DSIO_MUL}
  1461. D3DSIO_RCP = 6;
  1462. {$EXTERNALSYM D3DSIO_RCP}
  1463. D3DSIO_RSQ = 7;
  1464. {$EXTERNALSYM D3DSIO_RSQ}
  1465. D3DSIO_DP3 = 8;
  1466. {$EXTERNALSYM D3DSIO_DP3}
  1467. D3DSIO_DP4 = 9;
  1468. {$EXTERNALSYM D3DSIO_DP4}
  1469. D3DSIO_MIN = 10;
  1470. {$EXTERNALSYM D3DSIO_MIN}
  1471. D3DSIO_MAX = 11;
  1472. {$EXTERNALSYM D3DSIO_MAX}
  1473. D3DSIO_SLT = 12;
  1474. {$EXTERNALSYM D3DSIO_SLT}
  1475. D3DSIO_SGE = 13;
  1476. {$EXTERNALSYM D3DSIO_SGE}
  1477. D3DSIO_EXP = 14;
  1478. {$EXTERNALSYM D3DSIO_EXP}
  1479. D3DSIO_LOG = 15;
  1480. {$EXTERNALSYM D3DSIO_LOG}
  1481. D3DSIO_LIT = 16;
  1482. {$EXTERNALSYM D3DSIO_LIT}
  1483. D3DSIO_DST = 17;
  1484. {$EXTERNALSYM D3DSIO_DST}
  1485. D3DSIO_LRP = 18;
  1486. {$EXTERNALSYM D3DSIO_LRP}
  1487. D3DSIO_FRC = 19;
  1488. {$EXTERNALSYM D3DSIO_FRC}
  1489. D3DSIO_M4x4 = 20;
  1490. {$EXTERNALSYM D3DSIO_M4x4}
  1491. D3DSIO_M4x3 = 21;
  1492. {$EXTERNALSYM D3DSIO_M4x3}
  1493. D3DSIO_M3x4 = 22;
  1494. {$EXTERNALSYM D3DSIO_M3x4}
  1495. D3DSIO_M3x3 = 23;
  1496. {$EXTERNALSYM D3DSIO_M3x3}
  1497. D3DSIO_M3x2 = 24;
  1498. {$EXTERNALSYM D3DSIO_M3x2}
  1499. D3DSIO_CALL = 25;
  1500. {$EXTERNALSYM D3DSIO_CALL}
  1501. D3DSIO_CALLNZ = 26;
  1502. {$EXTERNALSYM D3DSIO_CALLNZ}
  1503. D3DSIO_LOOP = 27;
  1504. {$EXTERNALSYM D3DSIO_LOOP}
  1505. D3DSIO_RET = 28;
  1506. {$EXTERNALSYM D3DSIO_RET}
  1507. D3DSIO_ENDLOOP = 29;
  1508. {$EXTERNALSYM D3DSIO_ENDLOOP}
  1509. D3DSIO_LABEL = 30;
  1510. {$EXTERNALSYM D3DSIO_LABEL}
  1511. D3DSIO_DCL = 31;
  1512. {$EXTERNALSYM D3DSIO_DCL}
  1513. D3DSIO_POW = 32;
  1514. {$EXTERNALSYM D3DSIO_POW}
  1515. D3DSIO_CRS = 33;
  1516. {$EXTERNALSYM D3DSIO_CRS}
  1517. D3DSIO_SGN = 34;
  1518. {$EXTERNALSYM D3DSIO_SGN}
  1519. D3DSIO_ABS = 35;
  1520. {$EXTERNALSYM D3DSIO_ABS}
  1521. D3DSIO_NRM = 36;
  1522. {$EXTERNALSYM D3DSIO_NRM}
  1523. D3DSIO_SINCOS = 37;
  1524. {$EXTERNALSYM D3DSIO_SINCOS}
  1525. D3DSIO_REP = 38;
  1526. {$EXTERNALSYM D3DSIO_REP}
  1527. D3DSIO_ENDREP = 39;
  1528. {$EXTERNALSYM D3DSIO_ENDREP}
  1529. D3DSIO_IF = 40;
  1530. {$EXTERNALSYM D3DSIO_IF}
  1531. D3DSIO_IFC = 41;
  1532. {$EXTERNALSYM D3DSIO_IFC}
  1533. D3DSIO_ELSE = 42;
  1534. {$EXTERNALSYM D3DSIO_ELSE}
  1535. D3DSIO_ENDIF = 43;
  1536. {$EXTERNALSYM D3DSIO_ENDIF}
  1537. D3DSIO_BREAK = 44;
  1538. {$EXTERNALSYM D3DSIO_BREAK}
  1539. D3DSIO_BREAKC = 45;
  1540. {$EXTERNALSYM D3DSIO_BREAKC}
  1541. D3DSIO_MOVA = 46;
  1542. {$EXTERNALSYM D3DSIO_MOVA}
  1543. D3DSIO_DEFB = 47;
  1544. {$EXTERNALSYM D3DSIO_DEFB}
  1545. D3DSIO_DEFI = 48;
  1546. {$EXTERNALSYM D3DSIO_DEFI}
  1547. D3DSIO_TEXCOORD = 64;
  1548. {$EXTERNALSYM D3DSIO_TEXCOORD}
  1549. D3DSIO_TEXKILL = 65;
  1550. {$EXTERNALSYM D3DSIO_TEXKILL}
  1551. D3DSIO_TEX = 66;
  1552. {$EXTERNALSYM D3DSIO_TEX}
  1553. D3DSIO_TEXBEM = 67;
  1554. {$EXTERNALSYM D3DSIO_TEXBEM}
  1555. D3DSIO_TEXBEML = 68;
  1556. {$EXTERNALSYM D3DSIO_TEXBEML}
  1557. D3DSIO_TEXREG2AR = 69;
  1558. {$EXTERNALSYM D3DSIO_TEXREG2AR}
  1559. D3DSIO_TEXREG2GB = 70;
  1560. {$EXTERNALSYM D3DSIO_TEXREG2GB}
  1561. D3DSIO_TEXM3x2PAD = 71;
  1562. {$EXTERNALSYM D3DSIO_TEXM3x2PAD}
  1563. D3DSIO_TEXM3x2TEX = 72;
  1564. {$EXTERNALSYM D3DSIO_TEXM3x2TEX}
  1565. D3DSIO_TEXM3x3PAD = 73;
  1566. {$EXTERNALSYM D3DSIO_TEXM3x3PAD}
  1567. D3DSIO_TEXM3x3TEX = 74;
  1568. {$EXTERNALSYM D3DSIO_TEXM3x3TEX}
  1569. D3DSIO_RESERVED0 = 75;
  1570. {$EXTERNALSYM D3DSIO_RESERVED0}
  1571. D3DSIO_TEXM3x3SPEC = 76;
  1572. {$EXTERNALSYM D3DSIO_TEXM3x3SPEC}
  1573. D3DSIO_TEXM3x3VSPEC = 77;
  1574. {$EXTERNALSYM D3DSIO_TEXM3x3VSPEC}
  1575. D3DSIO_EXPP = 78;
  1576. {$EXTERNALSYM D3DSIO_EXPP}
  1577. D3DSIO_LOGP = 79;
  1578. {$EXTERNALSYM D3DSIO_LOGP}
  1579. D3DSIO_CND = 80;
  1580. {$EXTERNALSYM D3DSIO_CND}
  1581. D3DSIO_DEF = 81;
  1582. {$EXTERNALSYM D3DSIO_DEF}
  1583. D3DSIO_TEXREG2RGB = 82;
  1584. {$EXTERNALSYM D3DSIO_TEXREG2RGB}
  1585. D3DSIO_TEXDP3TEX = 83;
  1586. {$EXTERNALSYM D3DSIO_TEXDP3TEX}
  1587. D3DSIO_TEXM3x2DEPTH = 84;
  1588. {$EXTERNALSYM D3DSIO_TEXM3x2DEPTH}
  1589. D3DSIO_TEXDP3 = 85;
  1590. {$EXTERNALSYM D3DSIO_TEXDP3}
  1591. D3DSIO_TEXM3x3 = 86;
  1592. {$EXTERNALSYM D3DSIO_TEXM3x3}
  1593. D3DSIO_TEXDEPTH = 87;
  1594. {$EXTERNALSYM D3DSIO_TEXDEPTH}
  1595. D3DSIO_CMP = 88;
  1596. {$EXTERNALSYM D3DSIO_CMP}
  1597. D3DSIO_BEM = 89;
  1598. {$EXTERNALSYM D3DSIO_BEM}
  1599. D3DSIO_DP2ADD = 90;
  1600. {$EXTERNALSYM D3DSIO_DP2ADD}
  1601. D3DSIO_DSX = 91;
  1602. {$EXTERNALSYM D3DSIO_DSX}
  1603. D3DSIO_DSY = 92;
  1604. {$EXTERNALSYM D3DSIO_DSY}
  1605. D3DSIO_TEXLDD = 93;
  1606. {$EXTERNALSYM D3DSIO_TEXLDD}
  1607. D3DSIO_SETP = 94;
  1608. {$EXTERNALSYM D3DSIO_SETP}
  1609. D3DSIO_TEXLDL = 95;
  1610. {$EXTERNALSYM D3DSIO_TEXLDL}
  1611. D3DSIO_BREAKP = 96;
  1612. {$EXTERNALSYM D3DSIO_BREAKP}
  1613. D3DSIO_PHASE = $FFFD;
  1614. {$EXTERNALSYM D3DSIO_PHASE}
  1615. D3DSIO_COMMENT = $FFFE;
  1616. {$EXTERNALSYM D3DSIO_COMMENT}
  1617. D3DSIO_END = $FFFF;
  1618. {$EXTERNALSYM D3DSIO_END}
  1619. //---------------------------------------------------------------------
  1620. // Use these constants with D3DSIO_SINCOS macro as SRC2, SRC3
  1621. //
  1622. //#define D3DSINCOSCONST1 -1.5500992e-006f, -2.1701389e-005f, 0.0026041667f, 0.00026041668f
  1623. //#define D3DSINCOSCONST2 -0.020833334f, -0.12500000f, 1.0f, 0.50000000f
  1624. //---------------------------------------------------------------------
  1625. // Co-Issue Instruction Modifier - if set then this instruction is to be
  1626. // issued in parallel with the previous instruction(s) for which this bit
  1627. // is not set.
  1628. //
  1629. D3DSI_COISSUE = $40000000;
  1630. {$EXTERNALSYM D3DSI_COISSUE}
  1631. //---------------------------------------------------------------------
  1632. // Opcode specific controls
  1633. D3DSP_OPCODESPECIFICCONTROL_MASK = $00ff0000;
  1634. {$EXTERNALSYM D3DSP_OPCODESPECIFICCONTROL_MASK}
  1635. D3DSP_OPCODESPECIFICCONTROL_SHIFT = 16;
  1636. {$EXTERNALSYM D3DSP_OPCODESPECIFICCONTROL_SHIFT}
  1637. // ps_2_0 texld controls
  1638. D3DSI_TEXLD_PROJECT = ($01 shl D3DSP_OPCODESPECIFICCONTROL_SHIFT);
  1639. {$EXTERNALSYM D3DSI_TEXLD_PROJECT}
  1640. D3DSI_TEXLD_BIAS = ($02 shl D3DSP_OPCODESPECIFICCONTROL_SHIFT);
  1641. {$EXTERNALSYM D3DSI_TEXLD_BIAS}
  1642. type
  1643. // Comparison for dynamic conditional instruction opcodes (i.e. if, breakc)
  1644. {$MINENUMSIZE 1} // Forces TD3DShaderComparison be 1 byte enum
  1645. _D3DSHADER_COMPARISON = (
  1646. // < = >
  1647. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  1648. D3DSPC_RESERVED0{= 0}, // 0 0 0
  1649. D3DSPC_GT {= 1}, // 0 0 1
  1650. D3DSPC_EQ {= 2}, // 0 1 0
  1651. D3DSPC_GE {= 3}, // 0 1 1
  1652. D3DSPC_LT {= 4}, // 1 0 0
  1653. D3DSPC_NE {= 5}, // 1 0 1
  1654. D3DSPC_LE {= 6}, // 1 1 0
  1655. D3DSPC_RESERVED1{= 7} // 1 1 1
  1656. {$ELSE}
  1657. D3DSPC_RESERVED0= 0, // 0 0 0
  1658. D3DSPC_GT = 1, // 0 0 1
  1659. D3DSPC_EQ = 2, // 0 1 0
  1660. D3DSPC_GE = 3, // 0 1 1
  1661. D3DSPC_LT = 4, // 1 0 0
  1662. D3DSPC_NE = 5, // 1 0 1
  1663. D3DSPC_LE = 6, // 1 1 0
  1664. D3DSPC_RESERVED1= 7 // 1 1 1
  1665. {$ENDIF}
  1666. );
  1667. {$EXTERNALSYM _D3DSHADER_COMPARISON}
  1668. D3DSHADER_COMPARISON = _D3DSHADER_COMPARISON;
  1669. {$EXTERNALSYM D3DSHADER_COMPARISON}
  1670. TD3DShaderComparison = _D3DSHADER_COMPARISON;
  1671. {$MINENUMSIZE 4} // Restores enums to be 4 byte in size
  1672. const
  1673. // Comparison is part of instruction opcode token:
  1674. D3DSHADER_COMPARISON_SHIFT = D3DSP_OPCODESPECIFICCONTROL_SHIFT;
  1675. {$EXTERNALSYM D3DSHADER_COMPARISON_SHIFT}
  1676. D3DSHADER_COMPARISON_MASK = ($7 shl D3DSHADER_COMPARISON_SHIFT);
  1677. {$EXTERNALSYM D3DSHADER_COMPARISON_MASK}
  1678. //---------------------------------------------------------------------
  1679. // Predication flags on instruction token
  1680. D3DSHADER_INSTRUCTION_PREDICATED = ($1 shl 28);
  1681. {$EXTERNALSYM D3DSHADER_INSTRUCTION_PREDICATED}
  1682. //---------------------------------------------------------------------
  1683. // DCL Info Token Controls
  1684. // For dcl info tokens requiring a semantic (usage + index)
  1685. D3DSP_DCL_USAGE_SHIFT = 0;
  1686. {$EXTERNALSYM D3DSP_DCL_USAGE_SHIFT}
  1687. D3DSP_DCL_USAGE_MASK = $0000000f;
  1688. {$EXTERNALSYM D3DSP_DCL_USAGE_MASK}
  1689. D3DSP_DCL_USAGEINDEX_SHIFT = 16;
  1690. {$EXTERNALSYM D3DSP_DCL_USAGEINDEX_SHIFT}
  1691. D3DSP_DCL_USAGEINDEX_MASK = $000f0000;
  1692. {$EXTERNALSYM D3DSP_DCL_USAGEINDEX_MASK}
  1693. // DCL pixel shader sampler info token.
  1694. D3DSP_TEXTURETYPE_SHIFT = 27;
  1695. {$EXTERNALSYM D3DSP_TEXTURETYPE_SHIFT}
  1696. D3DSP_TEXTURETYPE_MASK = $78000000;
  1697. {$EXTERNALSYM D3DSP_TEXTURETYPE_MASK}
  1698. {$IFNDEF SUPPORTS_EXPL_ENUMS_except_BCB6}
  1699. type
  1700. _D3DSAMPLER_TEXTURE_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1701. {$EXTERNALSYM _D3DSAMPLER_TEXTURE_TYPE}
  1702. D3DSAMPLER_TEXTURE_TYPE = _D3DSAMPLER_TEXTURE_TYPE;
  1703. {$EXTERNALSYM D3DSAMPLER_TEXTURE_TYPE}
  1704. TD3DSamplerTextureType = _D3DSAMPLER_TEXTURE_TYPE;
  1705. const
  1706. D3DSTT_UNKNOWN = 0 shl D3DSP_TEXTURETYPE_SHIFT; // uninitialized value
  1707. {$EXTERNALSYM D3DSTT_UNKNOWN}
  1708. D3DSTT_2D = 2 shl D3DSP_TEXTURETYPE_SHIFT; // dcl_2d s# (for declaring a 2-D texture)
  1709. {$EXTERNALSYM D3DSTT_2D}
  1710. D3DSTT_CUBE = 3 shl D3DSP_TEXTURETYPE_SHIFT; // dcl_cube s# (for declaring a cube texture)
  1711. {$EXTERNALSYM D3DSTT_CUBE}
  1712. D3DSTT_VOLUME = 4 shl D3DSP_TEXTURETYPE_SHIFT; // dcl_volume s# (for declaring a volume texture)
  1713. {$EXTERNALSYM D3DSTT_VOLUME}
  1714. D3DSTT_FORCE_DWORD = $7fffffff; // force 32-bit size enum
  1715. {$EXTERNALSYM D3DSTT_FORCE_DWORD}
  1716. {$ELSE}
  1717. type
  1718. _D3DSAMPLER_TEXTURE_TYPE = (
  1719. D3DSTT_UNKNOWN = 0 shl D3DSP_TEXTURETYPE_SHIFT, // uninitialized value
  1720. D3DSTT_2D = 2 shl D3DSP_TEXTURETYPE_SHIFT, // dcl_2d s# (for declaring a 2-D texture)
  1721. D3DSTT_CUBE = 3 shl D3DSP_TEXTURETYPE_SHIFT, // dcl_cube s# (for declaring a cube texture)
  1722. D3DSTT_VOLUME = 4 shl D3DSP_TEXTURETYPE_SHIFT, // dcl_volume s# (for declaring a volume texture)
  1723. D3DSTT_FORCE_DWORD = $7fffffff // force 32-bit size enum
  1724. );
  1725. {$EXTERNALSYM _D3DSAMPLER_TEXTURE_TYPE}
  1726. D3DSAMPLER_TEXTURE_TYPE = _D3DSAMPLER_TEXTURE_TYPE;
  1727. {$EXTERNALSYM D3DSAMPLER_TEXTURE_TYPE}
  1728. TD3DSamplerTextureType = _D3DSAMPLER_TEXTURE_TYPE;
  1729. {$ENDIF}
  1730. const
  1731. //---------------------------------------------------------------------
  1732. // Parameter Token Bit Definitions
  1733. //
  1734. D3DSP_REGNUM_MASK = $000007FF;
  1735. {$EXTERNALSYM D3DSP_REGNUM_MASK}
  1736. // destination parameter write mask
  1737. D3DSP_WRITEMASK_0 = $00010000; // Component 0 (X;Red)
  1738. {$EXTERNALSYM D3DSP_WRITEMASK_0}
  1739. D3DSP_WRITEMASK_1 = $00020000; // Component 1 (Y;Green)
  1740. {$EXTERNALSYM D3DSP_WRITEMASK_1}
  1741. D3DSP_WRITEMASK_2 = $00040000; // Component 2 (Z;Blue)
  1742. {$EXTERNALSYM D3DSP_WRITEMASK_2}
  1743. D3DSP_WRITEMASK_3 = $00080000; // Component 3 (W;Alpha)
  1744. {$EXTERNALSYM D3DSP_WRITEMASK_3}
  1745. D3DSP_WRITEMASK_ALL = $000F0000; // All Components
  1746. {$EXTERNALSYM D3DSP_WRITEMASK_ALL}
  1747. // destination parameter modifiers
  1748. D3DSP_DSTMOD_SHIFT = 20;
  1749. {$EXTERNALSYM D3DSP_DSTMOD_SHIFT}
  1750. D3DSP_DSTMOD_MASK = $00F00000;
  1751. {$EXTERNALSYM D3DSP_DSTMOD_MASK}
  1752. // Bit masks for destination parameter modifiers
  1753. D3DSPDM_NONE = (0 shl D3DSP_DSTMOD_SHIFT); // nop
  1754. {$EXTERNALSYM D3DSPDM_NONE}
  1755. D3DSPDM_SATURATE = (1 shl D3DSP_DSTMOD_SHIFT); // clamp to 0. to 1. range
  1756. {$EXTERNALSYM D3DSPDM_SATURATE}
  1757. D3DSPDM_PARTIALPRECISION = (2 shl D3DSP_DSTMOD_SHIFT); // Partial precision hint
  1758. {$EXTERNALSYM D3DSPDM_PARTIALPRECISION}
  1759. D3DSPDM_MSAMPCENTROID = (4 shl D3DSP_DSTMOD_SHIFT); // Relevant to multisampling only:
  1760. {$EXTERNALSYM D3DSPDM_MSAMPCENTROID}
  1761. // When the pixel center is not covered, sample
  1762. // attribute or compute gradients/LOD
  1763. // using multisample "centroid" location.
  1764. // "Centroid" is some location within the covered
  1765. // region of the pixel.
  1766. // destination parameter
  1767. D3DSP_DSTSHIFT_SHIFT = 24;
  1768. {$EXTERNALSYM D3DSP_DSTSHIFT_SHIFT}
  1769. D3DSP_DSTSHIFT_MASK = $0F000000;
  1770. {$EXTERNALSYM D3DSP_DSTSHIFT_MASK}
  1771. // destination/source parameter register type
  1772. D3DSP_REGTYPE_SHIFT = 28;
  1773. {$EXTERNALSYM D3DSP_REGTYPE_SHIFT}
  1774. D3DSP_REGTYPE_SHIFT2 = 8;
  1775. {$EXTERNALSYM D3DSP_REGTYPE_SHIFT2}
  1776. D3DSP_REGTYPE_MASK = $70000000;
  1777. {$EXTERNALSYM D3DSP_REGTYPE_MASK}
  1778. D3DSP_REGTYPE_MASK2 = $00001800;
  1779. {$EXTERNALSYM D3DSP_REGTYPE_MASK2}
  1780. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  1781. const
  1782. D3DSPR_TEMP = 0; // Temporary Register File
  1783. {$EXTERNALSYM D3DSPR_TEMP}
  1784. D3DSPR_INPUT = 1; // Input Register File
  1785. {$EXTERNALSYM D3DSPR_INPUT}
  1786. D3DSPR_CONST = 2; // Constant Register File
  1787. {$EXTERNALSYM D3DSPR_CONST}
  1788. D3DSPR_ADDR = 3; // Address Register (VS)
  1789. {$EXTERNALSYM D3DSPR_ADDR}
  1790. D3DSPR_TEXTURE = 3; // Texture Register File (PS)
  1791. {$EXTERNALSYM D3DSPR_TEXTURE}
  1792. D3DSPR_RASTOUT = 4; // Rasterizer Register File
  1793. {$EXTERNALSYM D3DSPR_RASTOUT}
  1794. D3DSPR_ATTROUT = 5; // Attribute Output Register File
  1795. {$EXTERNALSYM D3DSPR_ATTROUT}
  1796. D3DSPR_TEXCRDOUT = 6; // Texture Coordinate Output Register File
  1797. {$EXTERNALSYM D3DSPR_TEXCRDOUT}
  1798. D3DSPR_OUTPUT = 6; // Output register file for VS3.0+
  1799. {$EXTERNALSYM D3DSPR_OUTPUT}
  1800. D3DSPR_CONSTINT = 7; // Constant Integer Vector Register File
  1801. {$EXTERNALSYM D3DSPR_CONSTINT}
  1802. D3DSPR_COLOROUT = 8; // Color Output Register File
  1803. {$EXTERNALSYM D3DSPR_COLOROUT}
  1804. D3DSPR_DEPTHOUT = 9; // Depth Output Register File
  1805. {$EXTERNALSYM D3DSPR_DEPTHOUT}
  1806. D3DSPR_SAMPLER = 10; // Sampler State Register File
  1807. {$EXTERNALSYM D3DSPR_SAMPLER}
  1808. D3DSPR_CONST2 = 11; // Constant Register File 2048 - 4095
  1809. {$EXTERNALSYM D3DSPR_CONST2}
  1810. D3DSPR_CONST3 = 12; // Constant Register File 4096 - 6143
  1811. {$EXTERNALSYM D3DSPR_CONST3}
  1812. D3DSPR_CONST4 = 13; // Constant Register File 6144 - 8191
  1813. {$EXTERNALSYM D3DSPR_CONST4}
  1814. D3DSPR_CONSTBOOL = 14; // Constant Boolean register file
  1815. {$EXTERNALSYM D3DSPR_CONSTBOOL}
  1816. D3DSPR_LOOP = 15; // Loop counter register file
  1817. {$EXTERNALSYM D3DSPR_LOOP}
  1818. D3DSPR_TEMPFLOAT16 = 16; // 16-bit float temp register file
  1819. {$EXTERNALSYM D3DSPR_TEMPFLOAT16}
  1820. D3DSPR_MISCTYPE = 17; // Miscellaneous (single) registers.
  1821. {$EXTERNALSYM D3DSPR_MISCTYPE}
  1822. D3DSPR_LABEL = 18; // Label
  1823. {$EXTERNALSYM D3DSPR_LABEL}
  1824. D3DSPR_PREDICATE = 19; // Predicate register
  1825. {$EXTERNALSYM D3DSPR_PREDICATE}
  1826. type
  1827. _D3DSHADER_PARAM_REGISTER_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1828. {$ELSE}
  1829. type
  1830. _D3DSHADER_PARAM_REGISTER_TYPE = (
  1831. D3DSPR_TEMP = 0, // Temporary Register File
  1832. D3DSPR_INPUT = 1, // Input Register File
  1833. D3DSPR_CONST = 2, // Constant Register File
  1834. D3DSPR_ADDR = 3, // Address Register (VS)
  1835. D3DSPR_TEXTURE = 3, // Texture Register File (PS)
  1836. D3DSPR_RASTOUT = 4, // Rasterizer Register File
  1837. D3DSPR_ATTROUT = 5, // Attribute Output Register File
  1838. D3DSPR_TEXCRDOUT = 6, // Texture Coordinate Output Register File
  1839. D3DSPR_OUTPUT = 6, // Output register file for VS3.0+
  1840. D3DSPR_CONSTINT = 7, // Constant Integer Vector Register File
  1841. D3DSPR_COLOROUT = 8, // Color Output Register File
  1842. D3DSPR_DEPTHOUT = 9, // Depth Output Register File
  1843. D3DSPR_SAMPLER = 10, // Sampler State Register File
  1844. D3DSPR_CONST2 = 11, // Constant Register File 2048 - 4095
  1845. D3DSPR_CONST3 = 12, // Constant Register File 4096 - 6143
  1846. D3DSPR_CONST4 = 13, // Constant Register File 6144 - 8191
  1847. D3DSPR_CONSTBOOL = 14, // Constant Boolean register file
  1848. D3DSPR_LOOP = 15, // Loop counter register file
  1849. D3DSPR_TEMPFLOAT16 = 16, // 16-bit float temp register file
  1850. D3DSPR_MISCTYPE = 17, // Miscellaneous (single) registers.
  1851. D3DSPR_LABEL = 18, // Label
  1852. D3DSPR_PREDICATE = 19 // Predicate register
  1853. );
  1854. {$ENDIF}
  1855. {$EXTERNALSYM _D3DSHADER_PARAM_REGISTER_TYPE}
  1856. D3DSHADER_PARAM_REGISTER_TYPE = _D3DSHADER_PARAM_REGISTER_TYPE;
  1857. {$EXTERNALSYM D3DSHADER_PARAM_REGISTER_TYPE}
  1858. TD3DShaderParamRegisterType = _D3DSHADER_PARAM_REGISTER_TYPE;
  1859. // The miscellaneous register file (D3DSPR_MISCTYPES)
  1860. // contains register types for which there is only ever one
  1861. // register (i.e. the register # is not needed).
  1862. // Rather than use up additional register types for such
  1863. // registers, they are defined
  1864. // as particular offsets into the misc. register file:
  1865. {$MINENUMSIZE 1} // Forces TD3DShaderMiscTypeOffsets be 1 byte enum
  1866. _D3DSHADER_MISCTYPE_OFFSETS = (
  1867. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  1868. D3DSMO_POSITION {= 0}, // Input position x,y,z,rhw (PS)
  1869. D3DSMO_FACE {= 1} // Floating point primitive area (PS)
  1870. {$ELSE}
  1871. D3DSMO_POSITION = 0, // Input position x,y,z,rhw (PS)
  1872. D3DSMO_FACE = 1 // Floating point primitive area (PS)
  1873. {$ENDIF}
  1874. );
  1875. {$EXTERNALSYM _D3DSHADER_MISCTYPE_OFFSETS}
  1876. D3DSHADER_MISCTYPE_OFFSETS = _D3DSHADER_MISCTYPE_OFFSETS;
  1877. {$EXTERNALSYM D3DSHADER_MISCTYPE_OFFSETS}
  1878. TD3DShaderMiscTypeOffsets = _D3DSHADER_MISCTYPE_OFFSETS;
  1879. {$MINENUMSIZE 4} // Restores enums to be 4 byte in size
  1880. // Register offsets in the Rasterizer Register File
  1881. //
  1882. _D3DVS_RASTOUT_OFFSETS = (
  1883. D3DSRO_POSITION, // = 0,
  1884. D3DSRO_FOG,
  1885. D3DSRO_POINT_SIZE
  1886. );
  1887. {$EXTERNALSYM _D3DVS_RASTOUT_OFFSETS}
  1888. D3DVS_RASTOUT_OFFSETS = _D3DVS_RASTOUT_OFFSETS;
  1889. {$EXTERNALSYM D3DVS_RASTOUT_OFFSETS}
  1890. TD3DVSRastoutOffsets = _D3DVS_RASTOUT_OFFSETS;
  1891. // Source operand addressing modes
  1892. const
  1893. D3DVS_ADDRESSMODE_SHIFT = 13;
  1894. {$EXTERNALSYM D3DVS_ADDRESSMODE_SHIFT}
  1895. D3DVS_ADDRESSMODE_MASK = 1 shl D3DVS_ADDRESSMODE_SHIFT;
  1896. {$EXTERNALSYM D3DVS_ADDRESSMODE_MASK}
  1897. type
  1898. _D3DVS_ADDRESSMODE_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1899. {$EXTERNALSYM _D3DVS_ADDRESSMODE_TYPE}
  1900. D3DVS_ADDRESSMODE_TYPE = _D3DVS_ADDRESSMODE_TYPE;
  1901. {$EXTERNALSYM D3DVS_ADDRESSMODE_TYPE}
  1902. TD3DVSAddressModeType = _D3DVS_ADDRESSMODE_TYPE;
  1903. const
  1904. D3DVS_ADDRMODE_ABSOLUTE = 0 shl D3DVS_ADDRESSMODE_SHIFT;
  1905. {$EXTERNALSYM D3DVS_ADDRMODE_ABSOLUTE}
  1906. D3DVS_ADDRMODE_RELATIVE = 1 shl D3DVS_ADDRESSMODE_SHIFT;
  1907. {$EXTERNALSYM D3DVS_ADDRMODE_RELATIVE}
  1908. D3DVS_ADDRMODE_FORCE_DWORD = $7fffffff; // force 32-bit size enum
  1909. {$EXTERNALSYM D3DVS_ADDRMODE_FORCE_DWORD}
  1910. const
  1911. D3DSHADER_ADDRESSMODE_SHIFT = 13;
  1912. {$EXTERNALSYM D3DSHADER_ADDRESSMODE_SHIFT}
  1913. D3DSHADER_ADDRESSMODE_MASK = (1 shl D3DSHADER_ADDRESSMODE_SHIFT);
  1914. {$EXTERNALSYM D3DSHADER_ADDRESSMODE_MASK}
  1915. type
  1916. _D3DSHADER_ADDRESSMODE_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1917. {$EXTERNALSYM _D3DSHADER_ADDRESSMODE_TYPE}
  1918. D3DSHADER_ADDRESSMODE_TYPE = _D3DSHADER_ADDRESSMODE_TYPE;
  1919. {$EXTERNALSYM D3DSHADER_ADDRESSMODE_TYPE}
  1920. TD3DShaderAddressModeType = _D3DSHADER_ADDRESSMODE_TYPE;
  1921. const
  1922. D3DSHADER_ADDRMODE_ABSOLUTE = (0 shl D3DSHADER_ADDRESSMODE_SHIFT);
  1923. {$EXTERNALSYM D3DSHADER_ADDRMODE_ABSOLUTE}
  1924. D3DSHADER_ADDRMODE_RELATIVE = (1 shl D3DSHADER_ADDRESSMODE_SHIFT);
  1925. {$EXTERNALSYM D3DSHADER_ADDRMODE_RELATIVE}
  1926. D3DSHADER_ADDRMODE_FORCE_DWORD = $7fffffff; // force 32-bit size enum
  1927. {$EXTERNALSYM D3DSHADER_ADDRMODE_FORCE_DWORD}
  1928. // Source operand swizzle definitions
  1929. //
  1930. D3DVS_SWIZZLE_SHIFT = 16;
  1931. {$EXTERNALSYM D3DVS_SWIZZLE_SHIFT}
  1932. D3DVS_SWIZZLE_MASK = $00FF0000;
  1933. {$EXTERNALSYM D3DVS_SWIZZLE_MASK}
  1934. // The following bits define where to take component X from:
  1935. D3DVS_X_X = 0 shl D3DVS_SWIZZLE_SHIFT;
  1936. {$EXTERNALSYM D3DVS_X_X}
  1937. D3DVS_X_Y = 1 shl D3DVS_SWIZZLE_SHIFT;
  1938. {$EXTERNALSYM D3DVS_X_Y}
  1939. D3DVS_X_Z = 2 shl D3DVS_SWIZZLE_SHIFT;
  1940. {$EXTERNALSYM D3DVS_X_Z}
  1941. D3DVS_X_W = 3 shl D3DVS_SWIZZLE_SHIFT;
  1942. {$EXTERNALSYM D3DVS_X_W}
  1943. // The following bits define where to take component Y from:
  1944. D3DVS_Y_X = 0 shl (D3DVS_SWIZZLE_SHIFT + 2);
  1945. {$EXTERNALSYM D3DVS_Y_X}
  1946. D3DVS_Y_Y = 1 shl (D3DVS_SWIZZLE_SHIFT + 2);
  1947. {$EXTERNALSYM D3DVS_Y_Y}
  1948. D3DVS_Y_Z = 2 shl (D3DVS_SWIZZLE_SHIFT + 2);
  1949. {$EXTERNALSYM D3DVS_Y_Z}
  1950. D3DVS_Y_W = 3 shl (D3DVS_SWIZZLE_SHIFT + 2);
  1951. {$EXTERNALSYM D3DVS_Y_W}
  1952. // The following bits define where to take component Z from:
  1953. D3DVS_Z_X = 0 shl (D3DVS_SWIZZLE_SHIFT + 4);
  1954. {$EXTERNALSYM D3DVS_Z_X}
  1955. D3DVS_Z_Y = 1 shl (D3DVS_SWIZZLE_SHIFT + 4);
  1956. {$EXTERNALSYM D3DVS_Z_Y}
  1957. D3DVS_Z_Z = 2 shl (D3DVS_SWIZZLE_SHIFT + 4);
  1958. {$EXTERNALSYM D3DVS_Z_Z}
  1959. D3DVS_Z_W = 3 shl (D3DVS_SWIZZLE_SHIFT + 4);
  1960. {$EXTERNALSYM D3DVS_Z_W}
  1961. // The following bits define where to take component W from:
  1962. D3DVS_W_X = 0 shl (D3DVS_SWIZZLE_SHIFT + 6);
  1963. {$EXTERNALSYM D3DVS_W_X}
  1964. D3DVS_W_Y = 1 shl (D3DVS_SWIZZLE_SHIFT + 6);
  1965. {$EXTERNALSYM D3DVS_W_Y}
  1966. D3DVS_W_Z = 2 shl (D3DVS_SWIZZLE_SHIFT + 6);
  1967. {$EXTERNALSYM D3DVS_W_Z}
  1968. D3DVS_W_W = 3 shl (D3DVS_SWIZZLE_SHIFT + 6);
  1969. {$EXTERNALSYM D3DVS_W_W}
  1970. // Value when there is no swizzle (X is taken from X, Y is taken from Y,
  1971. // Z is taken from Z, W is taken from W
  1972. //
  1973. D3DVS_NOSWIZZLE = D3DVS_X_X or D3DVS_Y_Y or D3DVS_Z_Z or D3DVS_W_W;
  1974. {$EXTERNALSYM D3DVS_NOSWIZZLE}
  1975. // source parameter swizzle
  1976. D3DSP_SWIZZLE_SHIFT = 16;
  1977. {$EXTERNALSYM D3DSP_SWIZZLE_SHIFT}
  1978. D3DSP_SWIZZLE_MASK = $00FF0000;
  1979. {$EXTERNALSYM D3DSP_SWIZZLE_MASK}
  1980. D3DSP_NOSWIZZLE =
  1981. (0 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
  1982. (1 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
  1983. (2 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
  1984. (3 shl (D3DSP_SWIZZLE_SHIFT + 6));
  1985. {$EXTERNALSYM D3DSP_NOSWIZZLE}
  1986. // pixel-shader swizzle ops
  1987. D3DSP_REPLICATERED =
  1988. (0 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
  1989. (0 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
  1990. (0 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
  1991. (0 shl (D3DSP_SWIZZLE_SHIFT + 6));
  1992. {$EXTERNALSYM D3DSP_REPLICATERED}
  1993. D3DSP_REPLICATEGREEN =
  1994. (1 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
  1995. (1 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
  1996. (1 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
  1997. (1 shl (D3DSP_SWIZZLE_SHIFT + 6));
  1998. {$EXTERNALSYM D3DSP_REPLICATEGREEN}
  1999. D3DSP_REPLICATEBLUE =
  2000. (2 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
  2001. (2 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
  2002. (2 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
  2003. (2 shl (D3DSP_SWIZZLE_SHIFT + 6));
  2004. {$EXTERNALSYM D3DSP_REPLICATEBLUE}
  2005. D3DSP_REPLICATEALPHA =
  2006. (3 shl (D3DSP_SWIZZLE_SHIFT + 0)) or
  2007. (3 shl (D3DSP_SWIZZLE_SHIFT + 2)) or
  2008. (3 shl (D3DSP_SWIZZLE_SHIFT + 4)) or
  2009. (3 shl (D3DSP_SWIZZLE_SHIFT + 6));
  2010. {$EXTERNALSYM D3DSP_REPLICATEALPHA}
  2011. // source parameter modifiers
  2012. D3DSP_SRCMOD_SHIFT = 24;
  2013. {$EXTERNALSYM D3DSP_SRCMOD_SHIFT}
  2014. D3DSP_SRCMOD_MASK = $0F000000;
  2015. {$EXTERNALSYM D3DSP_SRCMOD_MASK}
  2016. type
  2017. _D3DSHADER_PARAM_SRCMOD_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  2018. {$EXTERNALSYM _D3DSHADER_PARAM_SRCMOD_TYPE}
  2019. D3DSHADER_PARAM_SRCMOD_TYPE = _D3DSHADER_PARAM_SRCMOD_TYPE;
  2020. {$EXTERNALSYM D3DSHADER_PARAM_SRCMOD_TYPE}
  2021. TD3DShaderParamSRCModType = _D3DSHADER_PARAM_SRCMOD_TYPE;
  2022. const
  2023. D3DSPSM_NONE = 0 shl D3DSP_SRCMOD_SHIFT; // nop
  2024. {$EXTERNALSYM D3DSPSM_NONE}
  2025. D3DSPSM_NEG = 1 shl D3DSP_SRCMOD_SHIFT; // negate
  2026. {$EXTERNALSYM D3DSPSM_NEG}
  2027. D3DSPSM_BIAS = 2 shl D3DSP_SRCMOD_SHIFT; // bias
  2028. {$EXTERNALSYM D3DSPSM_BIAS}
  2029. D3DSPSM_BIASNEG = 3 shl D3DSP_SRCMOD_SHIFT; // bias and negate
  2030. {$EXTERNALSYM D3DSPSM_BIASNEG}
  2031. D3DSPSM_SIGN = 4 shl D3DSP_SRCMOD_SHIFT; // sign
  2032. {$EXTERNALSYM D3DSPSM_SIGN}
  2033. D3DSPSM_SIGNNEG = 5 shl D3DSP_SRCMOD_SHIFT; // sign and negate
  2034. {$EXTERNALSYM D3DSPSM_SIGNNEG}
  2035. D3DSPSM_COMP = 6 shl D3DSP_SRCMOD_SHIFT; // complement
  2036. {$EXTERNALSYM D3DSPSM_COMP}
  2037. D3DSPSM_X2 = 7 shl D3DSP_SRCMOD_SHIFT; // *2
  2038. {$EXTERNALSYM D3DSPSM_X2}
  2039. D3DSPSM_X2NEG = 8 shl D3DSP_SRCMOD_SHIFT; // *2 and negate
  2040. {$EXTERNALSYM D3DSPSM_X2NEG}
  2041. D3DSPSM_DZ = 9 shl D3DSP_SRCMOD_SHIFT; // divide through by z component
  2042. {$EXTERNALSYM D3DSPSM_DZ}
  2043. D3DSPSM_DW = 10 shl D3DSP_SRCMOD_SHIFT; // divide through by w component
  2044. {$EXTERNALSYM D3DSPSM_DW}
  2045. D3DSPSM_ABS = 11 shl D3DSP_SRCMOD_SHIFT; // abs()
  2046. {$EXTERNALSYM D3DSPSM_ABS}
  2047. D3DSPSM_ABSNEG = 12 shl D3DSP_SRCMOD_SHIFT; // -abs()
  2048. {$EXTERNALSYM D3DSPSM_ABSNEG}
  2049. D3DSPSM_NOT = 13 shl D3DSP_SRCMOD_SHIFT; // for predicate register: "!p0"
  2050. {$EXTERNALSYM D3DSPSM_NOT}
  2051. D3DSPSM_FORCE_DWORD = $7fffffff; // force 32-bit size enum
  2052. {$EXTERNALSYM D3DSPSM_FORCE_DWORD}
  2053. // pixel shader version token
  2054. //#define D3DPS_VERSION(_Major,_Minor) (0xFFFF0000|((_Major)<<8)|(_Minor))
  2055. function D3DPS_VERSION(_Major, _Minor: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2056. {$EXTERNALSYM D3DPS_VERSION}
  2057. // vertex shader version token
  2058. //#define D3DVS_VERSION(_Major,_Minor) (0xFFFE0000|((_Major)<<8)|(_Minor))
  2059. function D3DVS_VERSION(_Major, _Minor: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2060. {$EXTERNALSYM D3DVS_VERSION}
  2061. // extract major/minor from version cap
  2062. //#define D3DSHADER_VERSION_MAJOR(_Version) (((_Version)>>8)&0xFF)
  2063. function D3DSHADER_VERSION_MAJOR(_Version: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2064. {$EXTERNALSYM D3DSHADER_VERSION_MAJOR}
  2065. //#define D3DSHADER_VERSION_MINOR(_Version) (((_Version)>>0)&0xFF)
  2066. function D3DSHADER_VERSION_MINOR(_Version: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2067. {$EXTERNALSYM D3DSHADER_VERSION_MINOR}
  2068. const
  2069. // destination/source parameter register type
  2070. D3DSI_COMMENTSIZE_SHIFT = 16;
  2071. {$EXTERNALSYM D3DSI_COMMENTSIZE_SHIFT}
  2072. D3DSI_COMMENTSIZE_MASK = $7FFF0000;
  2073. {$EXTERNALSYM D3DSI_COMMENTSIZE_MASK}
  2074. //#define D3DSHADER_COMMENT(_DWordSize) \
  2075. // ((((_DWordSize)<<D3DSI_COMMENTSIZE_SHIFT)&D3DSI_COMMENTSIZE_MASK)|D3DSIO_COMMENT)
  2076. function D3DSHADER_COMMENT(_DWordSize: DWord) : DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2077. {$EXTERNALSYM D3DSHADER_COMMENT}
  2078. const
  2079. // pixel/vertex shader end token
  2080. D3DPS_END = $0000FFFF;
  2081. {$EXTERNALSYM D3DPS_END}
  2082. D3DVS_END = $0000FFFF;
  2083. {$EXTERNALSYM D3DVS_END}
  2084. //---------------------------------------------------------------------
  2085. type
  2086. // High order surfaces
  2087. //
  2088. _D3DBASISTYPE = (
  2089. D3DBASIS_BEZIER {= 0},
  2090. D3DBASIS_BSPLINE {= 1},
  2091. D3DBASIS_CATMULL_ROM {= 2} { In D3D8 this used to be D3DBASIS_INTERPOLATE }
  2092. );
  2093. {$EXTERNALSYM _D3DBASISTYPE}
  2094. D3DBASISTYPE = _D3DBASISTYPE;
  2095. {$EXTERNALSYM D3DBASISTYPE}
  2096. TD3DBasisType = _D3DBASISTYPE;
  2097. _D3DDEGREETYPE = (
  2098. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  2099. D3DDEGREE_invalid_0 {= 0},
  2100. D3DDEGREE_LINEAR {= 1},
  2101. D3DDEGREE_QUADRATIC {= 2},
  2102. D3DDEGREE_CUBIC {= 3},
  2103. D3DDEGREE_invalid_4 {= 4},
  2104. D3DDEGREE_QUINTIC {= 5}
  2105. {$ELSE}
  2106. D3DDEGREE_LINEAR = 1,
  2107. D3DDEGREE_QUADRATIC = 2,
  2108. D3DDEGREE_CUBIC = 3,
  2109. D3DDEGREE_QUINTIC = 5
  2110. {$ENDIF}
  2111. );
  2112. {$EXTERNALSYM _D3DDEGREETYPE}
  2113. D3DDEGREETYPE = _D3DDEGREETYPE;
  2114. {$EXTERNALSYM D3DDEGREETYPE}
  2115. TD3DDegreeType = _D3DDEGREETYPE;
  2116. _D3DPATCHEDGESTYLE = (
  2117. D3DPATCHEDGE_DISCRETE {= 0},
  2118. D3DPATCHEDGE_CONTINUOUS {= 1}
  2119. );
  2120. {$EXTERNALSYM _D3DPATCHEDGESTYLE}
  2121. D3DPATCHEDGESTYLE = _D3DPATCHEDGESTYLE;
  2122. {$EXTERNALSYM D3DPATCHEDGESTYLE}
  2123. TD3DPatchEdgeStyle = _D3DPATCHEDGESTYLE;
  2124. _D3DSTATEBLOCKTYPE = (
  2125. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  2126. D3DSBT_INVALID_0,
  2127. D3DSBT_ALL {= 1}, // capture all state
  2128. D3DSBT_PIXELSTATE {= 2}, // capture pixel state
  2129. D3DSBT_VERTEXSTATE {= 3} // capture vertex state
  2130. {$ELSE}
  2131. D3DSBT_ALL = 1, // capture all state
  2132. D3DSBT_PIXELSTATE = 2, // capture pixel state
  2133. D3DSBT_VERTEXSTATE = 3 // capture vertex state
  2134. {$ENDIF}
  2135. );
  2136. {$EXTERNALSYM _D3DSTATEBLOCKTYPE}
  2137. D3DSTATEBLOCKTYPE = _D3DSTATEBLOCKTYPE;
  2138. {$EXTERNALSYM D3DSTATEBLOCKTYPE}
  2139. TD3DStateBlockType = _D3DSTATEBLOCKTYPE;
  2140. type
  2141. // The D3DVERTEXBLENDFLAGS type is used with D3DRS_VERTEXBLEND state.
  2142. //
  2143. _D3DVERTEXBLENDFLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  2144. {$EXTERNALSYM _D3DVERTEXBLENDFLAGS}
  2145. D3DVERTEXBLENDFLAGS = _D3DVERTEXBLENDFLAGS;
  2146. {$EXTERNALSYM D3DVERTEXBLENDFLAGS}
  2147. TD3DVertexBlendFlags = _D3DVERTEXBLENDFLAGS;
  2148. const
  2149. D3DVBF_DISABLE = 0; // Disable vertex blending
  2150. {$EXTERNALSYM D3DVBF_DISABLE}
  2151. D3DVBF_1WEIGHTS = 1; // 2 matrix blending
  2152. {$EXTERNALSYM D3DVBF_1WEIGHTS}
  2153. D3DVBF_2WEIGHTS = 2; // 3 matrix blending
  2154. {$EXTERNALSYM D3DVBF_2WEIGHTS}
  2155. D3DVBF_3WEIGHTS = 3; // 4 matrix blending
  2156. {$EXTERNALSYM D3DVBF_3WEIGHTS}
  2157. D3DVBF_TWEENING = 255; // blending using D3DRS_TWEENFACTOR
  2158. {$EXTERNALSYM D3DVBF_TWEENING}
  2159. D3DVBF_0WEIGHTS = 256; // one matrix is used with weight 1.0
  2160. {$EXTERNALSYM D3DVBF_0WEIGHTS}
  2161. D3DVBF_FORCE_DWORD = $7fffffff; // force 32-bit size enum
  2162. {$EXTERNALSYM D3DVBF_FORCE_DWORD}
  2163. type
  2164. _D3DTEXTURETRANSFORMFLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  2165. {$EXTERNALSYM _D3DTEXTURETRANSFORMFLAGS}
  2166. D3DTEXTURETRANSFORMFLAGS = _D3DTEXTURETRANSFORMFLAGS;
  2167. {$EXTERNALSYM D3DTEXTURETRANSFORMFLAGS}
  2168. TD3DTextureTransformFlags = _D3DTEXTURETRANSFORMFLAGS;
  2169. const
  2170. D3DTTFF_DISABLE = 0; // texture coordinates are passed directly
  2171. {$EXTERNALSYM D3DTTFF_DISABLE}
  2172. D3DTTFF_COUNT1 = 1; // rasterizer should expect 1-D texture coords
  2173. {$EXTERNALSYM D3DTTFF_COUNT1}
  2174. D3DTTFF_COUNT2 = 2; // rasterizer should expect 2-D texture coords
  2175. {$EXTERNALSYM D3DTTFF_COUNT2}
  2176. D3DTTFF_COUNT3 = 3; // rasterizer should expect 3-D texture coords
  2177. {$EXTERNALSYM D3DTTFF_COUNT3}
  2178. D3DTTFF_COUNT4 = 4; // rasterizer should expect 4-D texture coords
  2179. {$EXTERNALSYM D3DTTFF_COUNT4}
  2180. D3DTTFF_PROJECTED = 256; // texcoords to be divided by COUNTth element
  2181. {$EXTERNALSYM D3DTTFF_PROJECTED}
  2182. D3DTTFF_FORCE_DWORD = $7fffffff;
  2183. {$EXTERNALSYM D3DTTFF_FORCE_DWORD}
  2184. const
  2185. // Macros to set texture coordinate format bits in the FVF id
  2186. D3DFVF_TEXTUREFORMAT2 = 0; // Two floating point values
  2187. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT2}
  2188. D3DFVF_TEXTUREFORMAT1 = 3; // One floating point value
  2189. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT1}
  2190. D3DFVF_TEXTUREFORMAT3 = 1; // Three floating point values
  2191. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT3}
  2192. D3DFVF_TEXTUREFORMAT4 = 2; // Four floating point values
  2193. {$EXTERNALSYM D3DFVF_TEXTUREFORMAT4}
  2194. //#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
  2195. function D3DFVF_TEXCOORDSIZE3(CoordIndex: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2196. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE3}
  2197. //#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
  2198. function D3DFVF_TEXCOORDSIZE2(CoordIndex: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2199. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE2}
  2200. //#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
  2201. function D3DFVF_TEXCOORDSIZE4(CoordIndex: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2202. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE4}
  2203. //#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
  2204. function D3DFVF_TEXCOORDSIZE1(CoordIndex: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2205. {$EXTERNALSYM D3DFVF_TEXCOORDSIZE1}
  2206. //---------------------------------------------------------------------
  2207. type
  2208. { Direct3D9 Device types }
  2209. _D3DDEVTYPE = (
  2210. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  2211. D3DDEVTYPE_INVALID_0,
  2212. D3DDEVTYPE_HAL {= 1},
  2213. D3DDEVTYPE_REF {= 2},
  2214. D3DDEVTYPE_SW {= 3},
  2215. D3DDEVTYPE_NULLREF {= 4}
  2216. {$ELSE}
  2217. D3DDEVTYPE_HAL = 1,
  2218. D3DDEVTYPE_REF = 2,
  2219. D3DDEVTYPE_SW = 3,
  2220. D3DDEVTYPE_NULLREF = 4
  2221. {$ENDIF}
  2222. );
  2223. {$EXTERNALSYM _D3DDEVTYPE}
  2224. D3DDEVTYPE = _D3DDEVTYPE;
  2225. {$EXTERNALSYM D3DDEVTYPE}
  2226. TD3DDevType = _D3DDEVTYPE;
  2227. { Multi-Sample buffer types }
  2228. _D3DMULTISAMPLE_TYPE = (
  2229. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  2230. D3DMULTISAMPLE_NONE {= 0},
  2231. D3DMULTISAMPLE_NONMASKABLE {= 1},
  2232. D3DMULTISAMPLE_2_SAMPLES {= 2},
  2233. D3DMULTISAMPLE_3_SAMPLES {= 3},
  2234. D3DMULTISAMPLE_4_SAMPLES {= 4},
  2235. D3DMULTISAMPLE_5_SAMPLES {= 5},
  2236. D3DMULTISAMPLE_6_SAMPLES {= 6},
  2237. D3DMULTISAMPLE_7_SAMPLES {= 7},
  2238. D3DMULTISAMPLE_8_SAMPLES {= 8},
  2239. D3DMULTISAMPLE_9_SAMPLES {= 9},
  2240. D3DMULTISAMPLE_10_SAMPLES {= 10},
  2241. D3DMULTISAMPLE_11_SAMPLES {= 11},
  2242. D3DMULTISAMPLE_12_SAMPLES {= 12},
  2243. D3DMULTISAMPLE_13_SAMPLES {= 13},
  2244. D3DMULTISAMPLE_14_SAMPLES {= 14},
  2245. D3DMULTISAMPLE_15_SAMPLES {= 15},
  2246. D3DMULTISAMPLE_16_SAMPLES {= 16}
  2247. {$ELSE}
  2248. D3DMULTISAMPLE_NONE = 0,
  2249. D3DMULTISAMPLE_NONMASKABLE = 1,
  2250. D3DMULTISAMPLE_2_SAMPLES = 2,
  2251. D3DMULTISAMPLE_3_SAMPLES = 3,
  2252. D3DMULTISAMPLE_4_SAMPLES = 4,
  2253. D3DMULTISAMPLE_5_SAMPLES = 5,
  2254. D3DMULTISAMPLE_6_SAMPLES = 6,
  2255. D3DMULTISAMPLE_7_SAMPLES = 7,
  2256. D3DMULTISAMPLE_8_SAMPLES = 8,
  2257. D3DMULTISAMPLE_9_SAMPLES = 9,
  2258. D3DMULTISAMPLE_10_SAMPLES = 10,
  2259. D3DMULTISAMPLE_11_SAMPLES = 11,
  2260. D3DMULTISAMPLE_12_SAMPLES = 12,
  2261. D3DMULTISAMPLE_13_SAMPLES = 13,
  2262. D3DMULTISAMPLE_14_SAMPLES = 14,
  2263. D3DMULTISAMPLE_15_SAMPLES = 15,
  2264. D3DMULTISAMPLE_16_SAMPLES = 16
  2265. {$ENDIF}
  2266. );
  2267. {$EXTERNALSYM _D3DMULTISAMPLE_TYPE}
  2268. D3DMULTISAMPLE_TYPE = _D3DMULTISAMPLE_TYPE;
  2269. {$EXTERNALSYM D3DMULTISAMPLE_TYPE}
  2270. TD3DMultiSampleType = _D3DMULTISAMPLE_TYPE;
  2271. (* Formats
  2272. * Most of these names have the following convention:
  2273. * A = Alpha
  2274. * R = Red
  2275. * G = Green
  2276. * B = Blue
  2277. * X = Unused Bits
  2278. * P = Palette
  2279. * L = Luminance
  2280. * U = dU coordinate for BumpMap
  2281. * V = dV coordinate for BumpMap
  2282. * S = Stencil
  2283. * D = Depth (e.g. Z or W buffer)
  2284. * C = Computed from other channels (typically on certain read operations)
  2285. *
  2286. * Further, the order of the pieces are from MSB first; hence
  2287. * D3DFMT_A8L8 indicates that the high byte of this two byte
  2288. * format is alpha.
  2289. *
  2290. * D3DFMT_D16_LOCKABLE indicates:
  2291. * - An integer 16-bit value.
  2292. * - An app-lockable surface.
  2293. *
  2294. * D3DFMT_D32F_LOCKABLE indicates:
  2295. * - An IEEE 754 floating-point value.
  2296. * - An app-lockable surface.
  2297. *
  2298. * All Depth/Stencil formats except D3DFMT_D16_LOCKABLE and D3DFMT_D32F_LOCKABLE indicate:
  2299. * - no particular bit ordering per pixel, and
  2300. * - are not app lockable, and
  2301. * - the driver is allowed to consume more than the indicated
  2302. * number of bits per Depth channel (but not Stencil channel).
  2303. *)
  2304. // #define MAKEFOURCC(ch0, ch1, ch2, ch3) \
  2305. // ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
  2306. // ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
  2307. function MAKEFOURCC(ch0, ch1, ch2, ch3: AnsiChar): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  2308. {$EXTERNALSYM MAKEFOURCC}
  2309. {$IFNDEF SUPPORTS_EXPL_ENUMS_except_BCB6}
  2310. const
  2311. D3DFMT_UNKNOWN = 0;
  2312. {$EXTERNALSYM D3DFMT_UNKNOWN}
  2313. D3DFMT_R8G8B8 = 20;
  2314. {$EXTERNALSYM D3DFMT_R8G8B8}
  2315. D3DFMT_A8R8G8B8 = 21;
  2316. {$EXTERNALSYM D3DFMT_A8R8G8B8}
  2317. D3DFMT_X8R8G8B8 = 22;
  2318. {$EXTERNALSYM D3DFMT_X8R8G8B8}
  2319. D3DFMT_R5G6B5 = 23;
  2320. {$EXTERNALSYM D3DFMT_R5G6B5}
  2321. D3DFMT_X1R5G5B5 = 24;
  2322. {$EXTERNALSYM D3DFMT_X1R5G5B5}
  2323. D3DFMT_A1R5G5B5 = 25;
  2324. {$EXTERNALSYM D3DFMT_A1R5G5B5}
  2325. D3DFMT_A4R4G4B4 = 26;
  2326. {$EXTERNALSYM D3DFMT_A4R4G4B4}
  2327. D3DFMT_R3G3B2 = 27;
  2328. {$EXTERNALSYM D3DFMT_R3G3B2}
  2329. D3DFMT_A8 = 28;
  2330. {$EXTERNALSYM D3DFMT_A8}
  2331. D3DFMT_A8R3G3B2 = 29;
  2332. {$EXTERNALSYM D3DFMT_A8R3G3B2}
  2333. D3DFMT_X4R4G4B4 = 30;
  2334. {$EXTERNALSYM D3DFMT_X4R4G4B4}
  2335. D3DFMT_A2B10G10R10 = 31;
  2336. {$EXTERNALSYM D3DFMT_A2B10G10R10}
  2337. D3DFMT_A8B8G8R8 = 32;
  2338. {$EXTERNALSYM D3DFMT_A8B8G8R8}
  2339. D3DFMT_X8B8G8R8 = 33;
  2340. {$EXTERNALSYM D3DFMT_X8B8G8R8}
  2341. D3DFMT_G16R16 = 34;
  2342. {$EXTERNALSYM D3DFMT_G16R16}
  2343. D3DFMT_A2R10G10B10 = 35;
  2344. {$EXTERNALSYM D3DFMT_A2R10G10B10}
  2345. D3DFMT_A16B16G16R16 = 36;
  2346. {$EXTERNALSYM D3DFMT_A16B16G16R16}
  2347. D3DFMT_A8P8 = 40;
  2348. {$EXTERNALSYM D3DFMT_A8P8}
  2349. D3DFMT_P8 = 41;
  2350. {$EXTERNALSYM D3DFMT_P8}
  2351. D3DFMT_L8 = 50;
  2352. {$EXTERNALSYM D3DFMT_L8}
  2353. D3DFMT_A8L8 = 51;
  2354. {$EXTERNALSYM D3DFMT_A8L8}
  2355. D3DFMT_A4L4 = 52;
  2356. {$EXTERNALSYM D3DFMT_A4L4}
  2357. D3DFMT_V8U8 = 60;
  2358. {$EXTERNALSYM D3DFMT_V8U8}
  2359. D3DFMT_L6V5U5 = 61;
  2360. {$EXTERNALSYM D3DFMT_L6V5U5}
  2361. D3DFMT_X8L8V8U8 = 62;
  2362. {$EXTERNALSYM D3DFMT_X8L8V8U8}
  2363. D3DFMT_Q8W8V8U8 = 63;
  2364. {$EXTERNALSYM D3DFMT_Q8W8V8U8}
  2365. D3DFMT_V16U16 = 64;
  2366. {$EXTERNALSYM D3DFMT_V16U16}
  2367. D3DFMT_A2W10V10U10 = 67;
  2368. {$EXTERNALSYM D3DFMT_A2W10V10U10}
  2369. // D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y');
  2370. D3DFMT_UYVY = Byte('U') or (Byte('Y') shl 8) or (Byte('V') shl 16) or (Byte('Y') shl 24);
  2371. {$EXTERNALSYM D3DFMT_UYVY}
  2372. // D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
  2373. D3DFMT_R8G8_B8G8 = Byte('R') or (Byte('G') shl 8) or (Byte('B') shl 16) or (Byte('G') shl 24);
  2374. {$EXTERNALSYM D3DFMT_R8G8_B8G8}
  2375. // D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
  2376. D3DFMT_YUY2 = Byte('Y') or (Byte('U') shl 8) or (Byte('Y') shl 16) or (Byte('2') shl 24);
  2377. {$EXTERNALSYM D3DFMT_YUY2}
  2378. // D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
  2379. D3DFMT_G8R8_G8B8 = Byte('G') or (Byte('R') shl 8) or (Byte('G') shl 16) or (Byte('B') shl 24);
  2380. {$EXTERNALSYM D3DFMT_G8R8_G8B8}
  2381. // D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
  2382. D3DFMT_DXT1 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('1') shl 24);
  2383. {$EXTERNALSYM D3DFMT_DXT1}
  2384. // D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
  2385. D3DFMT_DXT2 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('2') shl 24);
  2386. {$EXTERNALSYM D3DFMT_DXT2}
  2387. // D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
  2388. D3DFMT_DXT3 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('3') shl 24);
  2389. {$EXTERNALSYM D3DFMT_DXT3}
  2390. // D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
  2391. D3DFMT_DXT4 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('4') shl 24);
  2392. {$EXTERNALSYM D3DFMT_DXT4}
  2393. // D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
  2394. D3DFMT_DXT5 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('5') shl 24);
  2395. {$EXTERNALSYM D3DFMT_DXT5}
  2396. D3DFMT_D16_LOCKABLE = 70;
  2397. {$EXTERNALSYM D3DFMT_D16_LOCKABLE}
  2398. D3DFMT_D32 = 71;
  2399. {$EXTERNALSYM D3DFMT_D32}
  2400. D3DFMT_D15S1 = 73;
  2401. {$EXTERNALSYM D3DFMT_D15S1}
  2402. D3DFMT_D24S8 = 75;
  2403. {$EXTERNALSYM D3DFMT_D24S8}
  2404. D3DFMT_D24X8 = 77;
  2405. {$EXTERNALSYM D3DFMT_D24X8}
  2406. D3DFMT_D24X4S4 = 79;
  2407. {$EXTERNALSYM D3DFMT_D24X4S4}
  2408. D3DFMT_D16 = 80;
  2409. {$EXTERNALSYM D3DFMT_D16}
  2410. D3DFMT_D32F_LOCKABLE = 82;
  2411. {$EXTERNALSYM D3DFMT_D32F_LOCKABLE}
  2412. D3DFMT_D24FS8 = 83;
  2413. {$EXTERNALSYM D3DFMT_D24FS8}
  2414. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  2415. (* Z-Stencil formats valid for CPU access *)
  2416. D3DFMT_D32_LOCKABLE = 84;
  2417. {$EXTERNALSYM D3DFMT_D32_LOCKABLE}
  2418. D3DFMT_S8_LOCKABLE = 85;
  2419. {$EXTERNALSYM D3DFMT_S8_LOCKABLE}
  2420. {$ENDIF}
  2421. D3DFMT_L16 = 81;
  2422. {$EXTERNALSYM D3DFMT_L16}
  2423. D3DFMT_VERTEXDATA =100;
  2424. {$EXTERNALSYM D3DFMT_VERTEXDATA}
  2425. D3DFMT_INDEX16 =101;
  2426. {$EXTERNALSYM D3DFMT_INDEX16}
  2427. D3DFMT_INDEX32 =102;
  2428. {$EXTERNALSYM D3DFMT_INDEX32}
  2429. D3DFMT_Q16W16V16U16 =110;
  2430. {$EXTERNALSYM D3DFMT_Q16W16V16U16}
  2431. // D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
  2432. D3DFMT_MULTI2_ARGB8 = Byte('M') or (Byte('E') shl 8) or (Byte('T') shl 16) or (Byte('1') shl 24);
  2433. {$EXTERNALSYM D3DFMT_MULTI2_ARGB8}
  2434. // Floating point surface formats
  2435. // s10e5 formats (16-bits per channel)
  2436. D3DFMT_R16F = 111;
  2437. {$EXTERNALSYM D3DFMT_R16F}
  2438. D3DFMT_G16R16F = 112;
  2439. {$EXTERNALSYM D3DFMT_G16R16F}
  2440. D3DFMT_A16B16G16R16F = 113;
  2441. {$EXTERNALSYM D3DFMT_A16B16G16R16F}
  2442. // IEEE s23e8 formats (32-bits per channel)
  2443. D3DFMT_R32F = 114;
  2444. {$EXTERNALSYM D3DFMT_R32F}
  2445. D3DFMT_G32R32F = 115;
  2446. {$EXTERNALSYM D3DFMT_G32R32F}
  2447. D3DFMT_A32B32G32R32F = 116;
  2448. {$EXTERNALSYM D3DFMT_A32B32G32R32F}
  2449. D3DFMT_CxV8U8 = 117;
  2450. {$EXTERNALSYM D3DFMT_CxV8U8}
  2451. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  2452. // Monochrome 1 bit per pixel format
  2453. D3DFMT_A1 = 118;
  2454. {$EXTERNALSYM D3DFMT_A1}
  2455. // Binary format indicating that the data has no inherent type
  2456. D3DFMT_BINARYBUFFER = 199;
  2457. {$EXTERNALSYM D3DFMT_BINARYBUFFER}
  2458. {$ENDIF}
  2459. // ATI - 3Dc/ATI2N texture format
  2460. // D3DFMT_ATI2 = MAKEFOURCC('A', 'T', 'I', '2'),
  2461. D3DFMT_ATI2 = Byte('A') or (Byte('T') shl 8) or (Byte('I') shl 16) or (Byte('2') shl 24);
  2462. //{$EXTERNALSYM D3DFMT_ATI2} //Clootie: - this is not defined in original SDK headers
  2463. D3DFMT_FORCE_DWORD = $7fffffff;
  2464. {$EXTERNALSYM D3DFMT_FORCE_DWORD}
  2465. type
  2466. _D3DFORMAT = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  2467. {$ELSE}
  2468. type
  2469. _D3DFORMAT = (
  2470. D3DFMT_UNKNOWN = 0,
  2471. D3DFMT_R8G8B8 = 20,
  2472. D3DFMT_A8R8G8B8 = 21,
  2473. D3DFMT_X8R8G8B8 = 22,
  2474. D3DFMT_R5G6B5 = 23,
  2475. D3DFMT_X1R5G5B5 = 24,
  2476. D3DFMT_A1R5G5B5 = 25,
  2477. D3DFMT_A4R4G4B4 = 26,
  2478. D3DFMT_R3G3B2 = 27,
  2479. D3DFMT_A8 = 28,
  2480. D3DFMT_A8R3G3B2 = 29,
  2481. D3DFMT_X4R4G4B4 = 30,
  2482. D3DFMT_A2B10G10R10 = 31,
  2483. D3DFMT_A8B8G8R8 = 32,
  2484. D3DFMT_X8B8G8R8 = 33,
  2485. D3DFMT_G16R16 = 34,
  2486. D3DFMT_A2R10G10B10 = 35,
  2487. D3DFMT_A16B16G16R16 = 36,
  2488. D3DFMT_A8P8 = 40,
  2489. D3DFMT_P8 = 41,
  2490. D3DFMT_L8 = 50,
  2491. D3DFMT_A8L8 = 51,
  2492. D3DFMT_A4L4 = 52,
  2493. D3DFMT_V8U8 = 60,
  2494. D3DFMT_L6V5U5 = 61,
  2495. D3DFMT_X8L8V8U8 = 62,
  2496. D3DFMT_Q8W8V8U8 = 63,
  2497. D3DFMT_V16U16 = 64,
  2498. D3DFMT_A2W10V10U10 = 67,
  2499. D3DFMT_A8X8V8U8 = 68,
  2500. D3DFMT_L8X8V8U8 = 69,
  2501. // D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
  2502. D3DFMT_UYVY = Byte('U') or (Byte('Y') shl 8) or (Byte('V') shl 16) or (Byte('Y') shl 24),
  2503. // D3DFMT_RGBG = MAKEFOURCC('R', 'G', 'B', 'G'),
  2504. D3DFMT_RGBG = Byte('R') or (Byte('G') shl 8) or (Byte('B') shl 16) or (Byte('G') shl 24),
  2505. // D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
  2506. D3DFMT_YUY2 = Byte('Y') or (Byte('U') shl 8) or (Byte('Y') shl 16) or (Byte('2') shl 24),
  2507. // D3DFMT_GRGB = MAKEFOURCC('G', 'R', 'G', 'B'),
  2508. D3DFMT_GRGB = Byte('G') or (Byte('R') shl 8) or (Byte('G') shl 16) or (Byte('B') shl 24),
  2509. // D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
  2510. D3DFMT_DXT1 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('1') shl 24),
  2511. // D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
  2512. D3DFMT_DXT2 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('2') shl 24),
  2513. // D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
  2514. D3DFMT_DXT3 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('3') shl 24),
  2515. // D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
  2516. D3DFMT_DXT4 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('4') shl 24),
  2517. // D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
  2518. D3DFMT_DXT5 = Byte('D') or (Byte('X') shl 8) or (Byte('T') shl 16) or (Byte('5') shl 24),
  2519. D3DFMT_D16_LOCKABLE = 70,
  2520. D3DFMT_D32 = 71,
  2521. D3DFMT_D15S1 = 73,
  2522. D3DFMT_D24S8 = 75,
  2523. D3DFMT_D24X8 = 77,
  2524. D3DFMT_D24X4S4 = 79,
  2525. D3DFMT_D16 = 80,
  2526. D3DFMT_D32F_LOCKABLE = 82,
  2527. D3DFMT_D24FS8 = 83,
  2528. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  2529. (* Z-Stencil formats valid for CPU access *)
  2530. D3DFMT_D32_LOCKABLE = 84,
  2531. D3DFMT_S8_LOCKABLE = 85,
  2532. {$ENDIF}
  2533. D3DFMT_L16 = 81,
  2534. D3DFMT_VERTEXDATA =100,
  2535. D3DFMT_INDEX16 =101,
  2536. D3DFMT_INDEX32 =102,
  2537. D3DFMT_Q16W16V16U16 =110,
  2538. // D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
  2539. D3DFMT_MULTI2_ARGB8 = Byte('M') or (Byte('E') shl 8) or (Byte('T') shl 16) or (Byte('1') shl 24),
  2540. // Floating point surface formats
  2541. // s10e5 formats (16-bits per channel)
  2542. D3DFMT_R16F = 111,
  2543. D3DFMT_G16R16F = 112,
  2544. D3DFMT_A16B16G16R16F = 113,
  2545. // IEEE s23e8 formats (32-bits per channel)
  2546. D3DFMT_R32F = 114,
  2547. D3DFMT_G32R32F = 115,
  2548. D3DFMT_A32B32G32R32F = 116,
  2549. D3DFMT_CxV8U8 = 117,
  2550. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  2551. // Monochrome 1 bit per pixel format
  2552. D3DFMT_A1 = 118,
  2553. // Binary format indicating that the data has no inherent type
  2554. D3DFMT_BINARYBUFFER = 199,
  2555. {$ENDIF}
  2556. D3DFMT_FORCE_DWORD = $7fffffff
  2557. );
  2558. {$ENDIF}
  2559. {$EXTERNALSYM _D3DFORMAT}
  2560. D3DFORMAT = _D3DFORMAT;
  2561. {$EXTERNALSYM D3DFORMAT}
  2562. PD3DFormat = ^TD3DFormat;
  2563. TD3DFormat = _D3DFORMAT;
  2564. { Display Modes }
  2565. PD3DDisplayMode = ^TD3DDisplayMode;
  2566. _D3DDISPLAYMODE = record
  2567. Width: LongWord;
  2568. Height: LongWord;
  2569. RefreshRate: LongWord;
  2570. Format: TD3DFormat;
  2571. end {_D3DDISPLAYMODE};
  2572. {$EXTERNALSYM _D3DDISPLAYMODE}
  2573. D3DDISPLAYMODE = _D3DDISPLAYMODE;
  2574. {$EXTERNALSYM D3DDISPLAYMODE}
  2575. TD3DDisplayMode = _D3DDISPLAYMODE;
  2576. { Creation Parameters }
  2577. PD3DDeviceCreationParameters = ^TD3DDeviceCreationParameters;
  2578. _D3DDEVICE_CREATION_PARAMETERS = record
  2579. AdapterOrdinal: LongWord;
  2580. DeviceType: TD3DDevType;
  2581. hFocusWindow: HWND;
  2582. BehaviorFlags: LongInt;
  2583. end {_D3DDEVICE_CREATION_PARAMETERS};
  2584. {$EXTERNALSYM _D3DDEVICE_CREATION_PARAMETERS}
  2585. D3DDEVICE_CREATION_PARAMETERS = _D3DDEVICE_CREATION_PARAMETERS;
  2586. {$EXTERNALSYM D3DDEVICE_CREATION_PARAMETERS}
  2587. TD3DDeviceCreationParameters = _D3DDEVICE_CREATION_PARAMETERS;
  2588. { SwapEffects }
  2589. _D3DSWAPEFFECT = (
  2590. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  2591. D3DSWAPEFFECT_INVALID_0 {= 0},
  2592. D3DSWAPEFFECT_DISCARD {= 1},
  2593. D3DSWAPEFFECT_FLIP {= 2},
  2594. D3DSWAPEFFECT_COPY {= 3}
  2595. {$ELSE}
  2596. D3DSWAPEFFECT_DISCARD = 1,
  2597. D3DSWAPEFFECT_FLIP = 2,
  2598. D3DSWAPEFFECT_COPY = 3
  2599. {$ENDIF}
  2600. );
  2601. {$EXTERNALSYM _D3DSWAPEFFECT}
  2602. D3DSWAPEFFECT = _D3DSWAPEFFECT;
  2603. {$EXTERNALSYM D3DSWAPEFFECT}
  2604. TD3DSwapEffect = _D3DSWAPEFFECT;
  2605. { Pool types }
  2606. _D3DPOOL = (
  2607. D3DPOOL_DEFAULT {= 0},
  2608. D3DPOOL_MANAGED {= 1},
  2609. D3DPOOL_SYSTEMMEM {= 2},
  2610. D3DPOOL_SCRATCH {= 3}
  2611. );
  2612. {$EXTERNALSYM _D3DPOOL}
  2613. D3DPOOL = _D3DPOOL;
  2614. {$EXTERNALSYM D3DPOOL}
  2615. TD3DPool = _D3DPOOL;
  2616. const
  2617. { RefreshRate pre-defines }
  2618. D3DPRESENT_RATE_DEFAULT = $00000000;
  2619. {$EXTERNALSYM D3DPRESENT_RATE_DEFAULT}
  2620. type
  2621. { Resize Optional Parameters }
  2622. PD3DPresentParameters = ^TD3DPresentParameters;
  2623. _D3DPRESENT_PARAMETERS_ = record
  2624. BackBufferWidth: LongWord;
  2625. BackBufferHeight: LongWord;
  2626. BackBufferFormat: TD3DFormat;
  2627. BackBufferCount: LongWord;
  2628. MultiSampleType: TD3DMultiSampleType;
  2629. MultiSampleQuality: DWORD;
  2630. SwapEffect: TD3DSwapEffect;
  2631. hDeviceWindow: HWND;
  2632. Windowed: Bool;
  2633. EnableAutoDepthStencil: Bool;
  2634. AutoDepthStencilFormat: TD3DFormat;
  2635. Flags: LongInt;
  2636. { FullScreen_RefreshRateInHz must be zero for Windowed mode }
  2637. FullScreen_RefreshRateInHz: LongWord;
  2638. PresentationInterval: LongWord;
  2639. end {_D3DPRESENT_PARAMETERS_};
  2640. {$EXTERNALSYM _D3DPRESENT_PARAMETERS_}
  2641. D3DPRESENT_PARAMETERS = _D3DPRESENT_PARAMETERS_;
  2642. {$EXTERNALSYM D3DPRESENT_PARAMETERS}
  2643. TD3DPresentParameters = _D3DPRESENT_PARAMETERS_;
  2644. // Values for D3DPRESENT_PARAMETERS.Flags
  2645. const
  2646. D3DPRESENTFLAG_LOCKABLE_BACKBUFFER = $00000001;
  2647. {$EXTERNALSYM D3DPRESENTFLAG_LOCKABLE_BACKBUFFER}
  2648. D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL = $00000002;
  2649. {$EXTERNALSYM D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL}
  2650. D3DPRESENTFLAG_DEVICECLIP = $00000004;
  2651. {$EXTERNALSYM D3DPRESENTFLAG_DEVICECLIP}
  2652. D3DPRESENTFLAG_VIDEO = $00000010;
  2653. {$EXTERNALSYM D3DPRESENTFLAG_VIDEO}
  2654. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  2655. D3DPRESENTFLAG_NOAUTOROTATE = $00000020;
  2656. {$EXTERNALSYM D3DPRESENTFLAG_NOAUTOROTATE}
  2657. D3DPRESENTFLAG_UNPRUNEDMODE = $00000040;
  2658. {$EXTERNALSYM D3DPRESENTFLAG_UNPRUNEDMODE}
  2659. {$ENDIF}
  2660. { Gamma Ramp: Same as DX7 }
  2661. type
  2662. PD3DGammaRamp = ^TD3DGammaRamp;
  2663. _D3DGAMMARAMP = record
  2664. red : array [0..255] of Word;
  2665. green : array [0..255] of Word;
  2666. blue : array [0..255] of Word;
  2667. end;
  2668. {$EXTERNALSYM _D3DGAMMARAMP}
  2669. D3DGAMMARAMP = _D3DGAMMARAMP;
  2670. {$EXTERNALSYM D3DGAMMARAMP}
  2671. TD3DGammaRamp = _D3DGAMMARAMP;
  2672. { Back buffer types }
  2673. _D3DBACKBUFFER_TYPE = (
  2674. D3DBACKBUFFER_TYPE_MONO {= 0},
  2675. D3DBACKBUFFER_TYPE_LEFT {= 1},
  2676. D3DBACKBUFFER_TYPE_RIGHT {= 2}
  2677. );
  2678. {$EXTERNALSYM _D3DBACKBUFFER_TYPE}
  2679. D3DBACKBUFFER_TYPE = _D3DBACKBUFFER_TYPE;
  2680. {$EXTERNALSYM D3DBACKBUFFER_TYPE}
  2681. TD3DBackbufferType = _D3DBACKBUFFER_TYPE;
  2682. { Types }
  2683. _D3DRESOURCETYPE = (
  2684. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  2685. D3DRTYPE_INVALID_0 {= 0},
  2686. D3DRTYPE_SURFACE {= 1},
  2687. D3DRTYPE_VOLUME {= 2},
  2688. D3DRTYPE_TEXTURE {= 3},
  2689. D3DRTYPE_VOLUMETEXTURE {= 4},
  2690. D3DRTYPE_CUBETEXTURE {= 5},
  2691. D3DRTYPE_VERTEXBUFFER {= 6},
  2692. D3DRTYPE_INDEXBUFFER {= 7} //if this changes, change _D3DDEVINFO_RESOURCEMANAGER definition
  2693. {$ELSE}
  2694. D3DRTYPE_SURFACE = 1,
  2695. D3DRTYPE_VOLUME = 2,
  2696. D3DRTYPE_TEXTURE = 3,
  2697. D3DRTYPE_VOLUMETEXTURE = 4,
  2698. D3DRTYPE_CUBETEXTURE = 5,
  2699. D3DRTYPE_VERTEXBUFFER = 6,
  2700. D3DRTYPE_INDEXBUFFER = 7 //if this changes, change _D3DDEVINFO_RESOURCEMANAGER definition
  2701. {$ENDIF}
  2702. );
  2703. {$EXTERNALSYM _D3DRESOURCETYPE}
  2704. D3DRESOURCETYPE = _D3DRESOURCETYPE;
  2705. {$EXTERNALSYM D3DRESOURCETYPE}
  2706. TD3DResourceType = _D3DRESOURCETYPE;
  2707. const
  2708. { Usages }
  2709. D3DUSAGE_RENDERTARGET = $00000001;
  2710. {$EXTERNALSYM D3DUSAGE_RENDERTARGET}
  2711. D3DUSAGE_DEPTHSTENCIL = $00000002;
  2712. {$EXTERNALSYM D3DUSAGE_DEPTHSTENCIL}
  2713. D3DUSAGE_DYNAMIC = $00000200;
  2714. {$EXTERNALSYM D3DUSAGE_DYNAMIC}
  2715. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  2716. D3DUSAGE_NONSECURE = $00800000;
  2717. {$EXTERNALSYM D3DUSAGE_NONSECURE}
  2718. {$ENDIF}
  2719. // When passed to CheckDeviceFormat, D3DUSAGE_AUTOGENMIPMAP may return
  2720. // D3DOK_NOAUTOGEN if the device doesn't support autogeneration for that format.
  2721. // D3DOK_NOAUTOGEN is a success code, not a failure code... the SUCCEEDED and FAILED macros
  2722. // will return true and false respectively for this code.
  2723. D3DUSAGE_AUTOGENMIPMAP = $00000400;
  2724. {$EXTERNALSYM D3DUSAGE_AUTOGENMIPMAP}
  2725. D3DUSAGE_DMAP = $00004000;
  2726. {$EXTERNALSYM D3DUSAGE_DMAP}
  2727. // The following usages are valid only for querying CheckDeviceFormat
  2728. D3DUSAGE_QUERY_LEGACYBUMPMAP = $00008000;
  2729. {$EXTERNALSYM D3DUSAGE_QUERY_LEGACYBUMPMAP}
  2730. D3DUSAGE_QUERY_SRGBREAD = $00010000;
  2731. {$EXTERNALSYM D3DUSAGE_QUERY_SRGBREAD}
  2732. D3DUSAGE_QUERY_FILTER = $00020000;
  2733. {$EXTERNALSYM D3DUSAGE_QUERY_FILTER}
  2734. D3DUSAGE_QUERY_SRGBWRITE = $00040000;
  2735. {$EXTERNALSYM D3DUSAGE_QUERY_SRGBWRITE}
  2736. D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING = $00080000;
  2737. {$EXTERNALSYM D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING}
  2738. D3DUSAGE_QUERY_VERTEXTEXTURE = $00100000;
  2739. {$EXTERNALSYM D3DUSAGE_QUERY_VERTEXTEXTURE}
  2740. D3DUSAGE_QUERY_WRAPANDMIP = $00200000;
  2741. {$EXTERNALSYM D3DUSAGE_QUERY_WRAPANDMIP}
  2742. { Usages for Vertex/Index buffers }
  2743. D3DUSAGE_WRITEONLY = $00000008;
  2744. {$EXTERNALSYM D3DUSAGE_WRITEONLY}
  2745. D3DUSAGE_SOFTWAREPROCESSING = $00000010;
  2746. {$EXTERNALSYM D3DUSAGE_SOFTWAREPROCESSING}
  2747. D3DUSAGE_DONOTCLIP = $00000020;
  2748. {$EXTERNALSYM D3DUSAGE_DONOTCLIP}
  2749. D3DUSAGE_POINTS = $00000040;
  2750. {$EXTERNALSYM D3DUSAGE_POINTS}
  2751. D3DUSAGE_RTPATCHES = $00000080;
  2752. {$EXTERNALSYM D3DUSAGE_RTPATCHES}
  2753. D3DUSAGE_NPATCHES = $00000100;
  2754. {$EXTERNALSYM D3DUSAGE_NPATCHES}
  2755. type
  2756. { CubeMap Face identifiers }
  2757. _D3DCUBEMAP_FACES = (
  2758. D3DCUBEMAP_FACE_POSITIVE_X {= 0},
  2759. D3DCUBEMAP_FACE_NEGATIVE_X {= 1},
  2760. D3DCUBEMAP_FACE_POSITIVE_Y {= 2},
  2761. D3DCUBEMAP_FACE_NEGATIVE_Y {= 3},
  2762. D3DCUBEMAP_FACE_POSITIVE_Z {= 4},
  2763. D3DCUBEMAP_FACE_NEGATIVE_Z {= 5}
  2764. );
  2765. {$EXTERNALSYM _D3DCUBEMAP_FACES}
  2766. D3DCUBEMAP_FACES = _D3DCUBEMAP_FACES;
  2767. {$EXTERNALSYM D3DCUBEMAP_FACES}
  2768. TD3DCubemapFaces = _D3DCUBEMAP_FACES;
  2769. const
  2770. { Lock flags }
  2771. D3DLOCK_READONLY = $00000010;
  2772. {$EXTERNALSYM D3DLOCK_READONLY}
  2773. D3DLOCK_DISCARD = $00002000;
  2774. {$EXTERNALSYM D3DLOCK_DISCARD}
  2775. D3DLOCK_NOOVERWRITE = $00001000;
  2776. {$EXTERNALSYM D3DLOCK_NOOVERWRITE}
  2777. D3DLOCK_NOSYSLOCK = $00000800;
  2778. {$EXTERNALSYM D3DLOCK_NOSYSLOCK}
  2779. D3DLOCK_DONOTWAIT = $00004000;
  2780. {$EXTERNALSYM D3DLOCK_DONOTWAIT}
  2781. D3DLOCK_NO_DIRTY_UPDATE = $00008000;
  2782. {$EXTERNALSYM D3DLOCK_NO_DIRTY_UPDATE}
  2783. type
  2784. { Vertex Buffer Description }
  2785. PD3DVertexBufferDesc = ^TD3DVertexBufferDesc;
  2786. _D3DVERTEXBUFFER_DESC = record
  2787. Format : TD3DFormat;
  2788. _Type : TD3DResourceType;
  2789. Usage : DWord;
  2790. Pool : TD3DPool;
  2791. Size : LongWord;
  2792. FVF : DWord;
  2793. end;
  2794. {$EXTERNALSYM _D3DVERTEXBUFFER_DESC}
  2795. D3DVERTEXBUFFER_DESC = _D3DVERTEXBUFFER_DESC;
  2796. {$EXTERNALSYM D3DVERTEXBUFFER_DESC}
  2797. TD3DVertexBufferDesc = _D3DVERTEXBUFFER_DESC;
  2798. { Index Buffer Description }
  2799. PD3DIndexBufferDesc = ^TD3DIndexBufferDesc;
  2800. _D3DINDEXBUFFER_DESC = record
  2801. Format : TD3DFormat;
  2802. _Type : TD3DResourceType;
  2803. Usage : DWord;
  2804. Pool : TD3DPool;
  2805. Size : LongWord;
  2806. end {_D3DINDEXBUFFER_DESC};
  2807. {$EXTERNALSYM _D3DINDEXBUFFER_DESC}
  2808. D3DINDEXBUFFER_DESC = _D3DINDEXBUFFER_DESC;
  2809. {$EXTERNALSYM D3DINDEXBUFFER_DESC}
  2810. TD3DIndexBufferDesc = _D3DINDEXBUFFER_DESC;
  2811. { Surface Description }
  2812. PD3DSurfaceDesc = ^TD3DSurfaceDesc;
  2813. _D3DSURFACE_DESC = record
  2814. Format : TD3DFormat;
  2815. _Type : TD3DResourceType;
  2816. Usage : DWord;
  2817. Pool : TD3DPool;
  2818. MultiSampleType: TD3DMultiSampleType;
  2819. MultiSampleQuality: DWORD;
  2820. Width : LongWord;
  2821. Height : LongWord;
  2822. end {_D3DSURFACE_DESC};
  2823. {$EXTERNALSYM _D3DSURFACE_DESC}
  2824. D3DSURFACE_DESC = _D3DSURFACE_DESC;
  2825. {$EXTERNALSYM D3DSURFACE_DESC}
  2826. TD3DSurfaceDesc = _D3DSURFACE_DESC;
  2827. PD3DVolumeDesc = ^TD3DVolumeDesc;
  2828. _D3DVOLUME_DESC = record
  2829. Format : TD3DFormat;
  2830. _Type : TD3DResourceType;
  2831. Usage : DWord;
  2832. Pool : TD3DPool;
  2833. Width : LongWord;
  2834. Height : LongWord;
  2835. Depth : LongWord;
  2836. end {_D3DVOLUME_DESC};
  2837. {$EXTERNALSYM _D3DVOLUME_DESC}
  2838. D3DVOLUME_DESC = _D3DVOLUME_DESC;
  2839. {$EXTERNALSYM D3DVOLUME_DESC}
  2840. TD3DVolumeDesc = _D3DVOLUME_DESC;
  2841. { Structure for LockRect }
  2842. PD3DLockedRect = ^TD3DLockedRect;
  2843. _D3DLOCKED_RECT = record
  2844. Pitch: Integer;
  2845. pBits: Pointer; // void*
  2846. end {_D3DLOCKED_RECT};
  2847. {$EXTERNALSYM _D3DLOCKED_RECT}
  2848. D3DLOCKED_RECT = _D3DLOCKED_RECT;
  2849. {$EXTERNALSYM D3DLOCKED_RECT}
  2850. TD3DLockedRect = _D3DLOCKED_RECT;
  2851. { Structures for LockBox }
  2852. PD3DBox = ^TD3DBox;
  2853. _D3DBOX = record
  2854. Left : LongWord;
  2855. Top : LongWord;
  2856. Right : LongWord;
  2857. Bottom : LongWord;
  2858. Front : LongWord;
  2859. Back : LongWord;
  2860. end {_D3DBOX};
  2861. {$EXTERNALSYM _D3DBOX}
  2862. D3DBOX = _D3DBOX;
  2863. {$EXTERNALSYM D3DBOX}
  2864. TD3DBox = _D3DBOX;
  2865. PD3DLockedBox = ^TD3DLockedBox;
  2866. _D3DLOCKED_BOX = record
  2867. RowPitch : Integer;
  2868. SlicePitch : Integer;
  2869. pBits : Pointer; // void*
  2870. end {_D3DLOCKED_BOX};
  2871. {$EXTERNALSYM _D3DLOCKED_BOX}
  2872. D3DLOCKED_BOX = _D3DLOCKED_BOX;
  2873. {$EXTERNALSYM D3DLOCKED_BOX}
  2874. TD3DLockedBox = _D3DLOCKED_BOX;
  2875. { Structures for LockRange }
  2876. PD3DRange = ^TD3DRange;
  2877. _D3DRANGE = record
  2878. Offset : LongWord;
  2879. Size : LongWord;
  2880. end {_D3DRANGE};
  2881. {$EXTERNALSYM _D3DRANGE}
  2882. D3DRANGE = _D3DRANGE;
  2883. {$EXTERNALSYM D3DRANGE}
  2884. TD3DRange = _D3DRANGE;
  2885. { Structures for high order primitives }
  2886. PD3DRectPatchInfo = ^TD3DRectPatchInfo;
  2887. _D3DRECTPATCH_INFO = record
  2888. StartVertexOffsetWidth : LongWord;
  2889. StartVertexOffsetHeight : LongWord;
  2890. Width : LongWord;
  2891. Height : LongWord;
  2892. Stride : LongWord;
  2893. Basis : TD3DBasisType;
  2894. Degree : TD3DDegreeType;
  2895. end;
  2896. {$EXTERNALSYM _D3DRECTPATCH_INFO}
  2897. D3DRECTPATCH_INFO = _D3DRECTPATCH_INFO;
  2898. {$EXTERNALSYM D3DRECTPATCH_INFO}
  2899. TD3DRectPatchInfo = _D3DRECTPATCH_INFO;
  2900. PD3DTriPatchInfo = ^TD3DTriPatchInfo;
  2901. _D3DTRIPATCH_INFO = record
  2902. StartVertexOffset : LongWord;
  2903. NumVertices : LongWord;
  2904. Basis : TD3DBasisType;
  2905. Degree : TD3DDegreeType;
  2906. end;
  2907. {$EXTERNALSYM _D3DTRIPATCH_INFO}
  2908. D3DTRIPATCH_INFO = _D3DTRIPATCH_INFO;
  2909. {$EXTERNALSYM D3DTRIPATCH_INFO}
  2910. TD3DTriPatchInfo = _D3DTRIPATCH_INFO;
  2911. const
  2912. { Adapter Identifier }
  2913. MAX_DEVICE_IDENTIFIER_STRING = 512;
  2914. {$EXTERNALSYM MAX_DEVICE_IDENTIFIER_STRING}
  2915. type
  2916. PD3DAdapterIdentifier9 = ^TD3DAdapterIdentifier9;
  2917. _D3DADAPTER_IDENTIFIER9 = record
  2918. Driver : array [0..MAX_DEVICE_IDENTIFIER_STRING-1] of AnsiChar;
  2919. Description : array [0..MAX_DEVICE_IDENTIFIER_STRING-1] of AnsiChar;
  2920. DeviceName : array [0..31] of AnsiChar; { Device name for GDI (ex. \\.\DISPLAY1) }
  2921. {$IFDEF WIN32}
  2922. DriverVersion : Int64; { Defined for 32 bit components }
  2923. {$ELSE}
  2924. DriverVersionLowPart : DWord; { Defined for 16 bit driver components }
  2925. DriverVersionHighPart : DWord;
  2926. {$ENDIF}
  2927. VendorId : DWord;
  2928. DeviceId : DWord;
  2929. SubSysId : DWord;
  2930. Revision : DWord;
  2931. DeviceIdentifier : TGUID;
  2932. WHQLLevel : DWord;
  2933. end;
  2934. {$EXTERNALSYM _D3DADAPTER_IDENTIFIER9}
  2935. D3DADAPTER_IDENTIFIER9 = _D3DADAPTER_IDENTIFIER9;
  2936. {$EXTERNALSYM D3DADAPTER_IDENTIFIER9}
  2937. TD3DAdapterIdentifier9 = _D3DADAPTER_IDENTIFIER9;
  2938. { Raster Status structure returned by GetRasterStatus }
  2939. PD3DRasterStatus = ^TD3DRasterStatus;
  2940. _D3DRASTER_STATUS = record
  2941. InVBlank : Bool;
  2942. ScanLine : LongWord;
  2943. end;
  2944. {$EXTERNALSYM _D3DRASTER_STATUS}
  2945. D3DRASTER_STATUS = _D3DRASTER_STATUS;
  2946. {$EXTERNALSYM D3DRASTER_STATUS}
  2947. TD3DRasterStatus = _D3DRASTER_STATUS;
  2948. { Debug monitor tokens (DEBUG only)
  2949. Note that if D3DRS_DEBUGMONITORTOKEN is set, the call is treated as
  2950. passing a token to the debug monitor. For example, if, after passing
  2951. D3DDMT_ENABLE/DISABLE to D3DRS_DEBUGMONITORTOKEN other token values
  2952. are passed in, the enabled/disabled state of the debug
  2953. monitor will still persist.
  2954. The debug monitor defaults to enabled.
  2955. Calling GetRenderState on D3DRS_DEBUGMONITORTOKEN is not of any use.
  2956. }
  2957. _D3DDEBUGMONITORTOKENS = DWord;
  2958. {$EXTERNALSYM _D3DDEBUGMONITORTOKENS}
  2959. D3DDEBUGMONITORTOKENS = _D3DDEBUGMONITORTOKENS;
  2960. {$EXTERNALSYM D3DDEBUGMONITORTOKENS}
  2961. TD3DDebugMonitorTokens = _D3DDEBUGMONITORTOKENS;
  2962. const
  2963. D3DDMT_ENABLE = 0; // enable debug monitor
  2964. {$EXTERNALSYM D3DDMT_ENABLE}
  2965. D3DDMT_DISABLE = 1; // disable debug monitor
  2966. {$EXTERNALSYM D3DDMT_DISABLE}
  2967. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  2968. const
  2969. // Async feedback
  2970. D3DQUERYTYPE_VCACHE = 4; { D3DISSUE_END }
  2971. {$EXTERNALSYM D3DQUERYTYPE_VCACHE}
  2972. D3DQUERYTYPE_RESOURCEMANAGER = 5; { D3DISSUE_END }
  2973. {$EXTERNALSYM D3DQUERYTYPE_RESOURCEMANAGER}
  2974. D3DQUERYTYPE_VERTEXSTATS = 6; { D3DISSUE_END }
  2975. {$EXTERNALSYM D3DQUERYTYPE_VERTEXSTATS}
  2976. D3DQUERYTYPE_EVENT = 8; { D3DISSUE_END }
  2977. {$EXTERNALSYM D3DQUERYTYPE_EVENT}
  2978. D3DQUERYTYPE_OCCLUSION = 9; { D3DISSUE_BEGIN, D3DISSUE_END }
  2979. {$EXTERNALSYM D3DQUERYTYPE_OCCLUSION}
  2980. D3DQUERYTYPE_TIMESTAMP = 10; { D3DISSUE_END }
  2981. {$EXTERNALSYM D3DQUERYTYPE_TIMESTAMP}
  2982. D3DQUERYTYPE_TIMESTAMPDISJOINT = 11; { D3DISSUE_BEGIN, D3DISSUE_END }
  2983. {$EXTERNALSYM D3DQUERYTYPE_TIMESTAMPDISJOINT}
  2984. D3DQUERYTYPE_TIMESTAMPFREQ = 12; { D3DISSUE_END }
  2985. {$EXTERNALSYM D3DQUERYTYPE_TIMESTAMPFREQ}
  2986. D3DQUERYTYPE_PIPELINETIMINGS = 13; { D3DISSUE_BEGIN, D3DISSUE_END }
  2987. {$EXTERNALSYM D3DQUERYTYPE_PIPELINETIMINGS}
  2988. D3DQUERYTYPE_INTERFACETIMINGS = 14; { D3DISSUE_BEGIN, D3DISSUE_END }
  2989. {$EXTERNALSYM D3DQUERYTYPE_INTERFACETIMINGS}
  2990. D3DQUERYTYPE_VERTEXTIMINGS = 15; { D3DISSUE_BEGIN, D3DISSUE_END }
  2991. {$EXTERNALSYM D3DQUERYTYPE_VERTEXTIMINGS}
  2992. D3DQUERYTYPE_PIXELTIMINGS = 16; { D3DISSUE_BEGIN, D3DISSUE_END }
  2993. {$EXTERNALSYM D3DQUERYTYPE_PIXELTIMINGS}
  2994. D3DQUERYTYPE_BANDWIDTHTIMINGS = 17; { D3DISSUE_BEGIN, D3DISSUE_END }
  2995. {$EXTERNALSYM D3DQUERYTYPE_BANDWIDTHTIMINGS}
  2996. D3DQUERYTYPE_CACHEUTILIZATION = 18; { D3DISSUE_BEGIN, D3DISSUE_END }
  2997. {$EXTERNALSYM D3DQUERYTYPE_CACHEUTILIZATION}
  2998. type
  2999. _D3DQUERYTYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  3000. {$ELSE}
  3001. type
  3002. // Async feedback
  3003. {$MINENUMSIZE 1} // Forces TD3DQueryType be 1 byte enum
  3004. _D3DQUERYTYPE = (
  3005. D3DQUERYTYPE_VCACHE = 4, { D3DISSUE_END }
  3006. D3DQUERYTYPE_RESOURCEMANAGER = 5, { D3DISSUE_END }
  3007. D3DQUERYTYPE_VERTEXSTATS = 6, { D3DISSUE_END }
  3008. D3DQUERYTYPE_EVENT = 8, { D3DISSUE_END }
  3009. D3DQUERYTYPE_OCCLUSION = 9, { D3DISSUE_BEGIN, D3DISSUE_END }
  3010. D3DQUERYTYPE_TIMESTAMP = 10, { D3DISSUE_END }
  3011. D3DQUERYTYPE_TIMESTAMPDISJOINT = 11, { D3DISSUE_BEGIN, D3DISSUE_END }
  3012. D3DQUERYTYPE_TIMESTAMPFREQ = 12, { D3DISSUE_END }
  3013. D3DQUERYTYPE_PIPELINETIMINGS = 13, { D3DISSUE_BEGIN, D3DISSUE_END }
  3014. D3DQUERYTYPE_INTERFACETIMINGS = 14, { D3DISSUE_BEGIN, D3DISSUE_END }
  3015. D3DQUERYTYPE_VERTEXTIMINGS = 15, { D3DISSUE_BEGIN, D3DISSUE_END }
  3016. D3DQUERYTYPE_PIXELTIMINGS = 16, { D3DISSUE_BEGIN, D3DISSUE_END }
  3017. D3DQUERYTYPE_BANDWIDTHTIMINGS = 17, { D3DISSUE_BEGIN, D3DISSUE_END }
  3018. D3DQUERYTYPE_CACHEUTILIZATION = 18 { D3DISSUE_BEGIN, D3DISSUE_END }
  3019. );
  3020. {$MINENUMSIZE 4} // Restores enums to be 4 byte in size
  3021. {$ENDIF}
  3022. {$EXTERNALSYM _D3DQUERYTYPE}
  3023. D3DQUERYTYPE = _D3DQUERYTYPE;
  3024. {$EXTERNALSYM D3DQUERYTYPE}
  3025. TD3DQueryType = _D3DQUERYTYPE;
  3026. const
  3027. // Flags field for Issue
  3028. D3DISSUE_END = (1 shl 0); // Tells the runtime to issue the end of a query, changing it's state to "non-signaled".
  3029. {$EXTERNALSYM D3DISSUE_END}
  3030. D3DISSUE_BEGIN = (1 shl 1); // Tells the runtime to issue the beginng of a query.
  3031. {$EXTERNALSYM D3DISSUE_BEGIN}
  3032. // Flags field for GetData
  3033. D3DGETDATA_FLUSH = (1 shl 0); // Tells the runtime to flush if the query is outstanding.
  3034. {$EXTERNALSYM D3DGETDATA_FLUSH}
  3035. type
  3036. PD3DResourceStats = ^TD3DResourceStats;
  3037. _D3DRESOURCESTATS = record
  3038. // Data collected since last Present()
  3039. bThrashing : BOOL; (* indicates if thrashing *)
  3040. ApproxBytesDownloaded : DWORD; (* Approximate number of bytes downloaded by resource manager *)
  3041. NumEvicts : DWORD; (* number of objects evicted *)
  3042. NumVidCreates : DWORD; (* number of objects created in video memory *)
  3043. LastPri : DWORD; (* priority of last object evicted *)
  3044. NumUsed : DWORD; (* number of objects set to the device *)
  3045. NumUsedInVidMem : DWORD; (* number of objects set to the device, which are already in video memory *)
  3046. // Persistent data
  3047. WorkingSet : DWORD; (* number of objects in video memory *)
  3048. WorkingSetBytes : DWORD; (* number of bytes in video memory *)
  3049. TotalManaged : DWORD; (* total number of managed objects *)
  3050. TotalBytes : DWORD; (* total number of bytes of managed objects *)
  3051. end;
  3052. {$EXTERNALSYM _D3DRESOURCESTATS}
  3053. D3DRESOURCESTATS = _D3DRESOURCESTATS;
  3054. {$EXTERNALSYM D3DRESOURCESTATS}
  3055. TD3DResourceStats = _D3DRESOURCESTATS;
  3056. const
  3057. D3DRTYPECOUNT = (DWORD(D3DRTYPE_INDEXBUFFER) + 1);
  3058. {$EXTERNALSYM D3DRTYPECOUNT}
  3059. type
  3060. PD3DDevInfoResourceManager = ^TD3DDevInfoResourceManager;
  3061. _D3DDEVINFO_RESOURCEMANAGER = record
  3062. //#ifndef WOW64_ENUM_WORKAROUND
  3063. stats: array [0..D3DRTYPECOUNT-1] of TD3DResourceStats;
  3064. //#else
  3065. // stats: array[0..7] of TD3DResourceStats;
  3066. //#endif
  3067. end;
  3068. {$EXTERNALSYM _D3DDEVINFO_RESOURCEMANAGER}
  3069. D3DDEVINFO_RESOURCEMANAGER = _D3DDEVINFO_RESOURCEMANAGER;
  3070. {$EXTERNALSYM D3DDEVINFO_RESOURCEMANAGER}
  3071. TD3DDevInfoResourceManager = _D3DDEVINFO_RESOURCEMANAGER;
  3072. PD3DDevInfoD3DVertexStats = ^TD3DDevInfoD3DVertexStats;
  3073. _D3DDEVINFO_D3DVERTEXSTATS = record
  3074. NumRenderedTriangles : DWORD; (* total number of triangles that are not clipped in this frame *)
  3075. NumExtraClippingTriangles : DWORD; (* Number of new triangles generated by clipping *)
  3076. end;
  3077. {$EXTERNALSYM _D3DDEVINFO_D3DVERTEXSTATS}
  3078. D3DDEVINFO_D3DVERTEXSTATS = _D3DDEVINFO_D3DVERTEXSTATS;
  3079. {$EXTERNALSYM D3DDEVINFO_D3DVERTEXSTATS}
  3080. TD3DDevInfoD3DVertexStats = _D3DDEVINFO_D3DVERTEXSTATS;
  3081. PD3DDevInfoVCache = ^TD3DDevInfoVCache;
  3082. _D3DDEVINFO_VCACHE = record
  3083. Pattern : DWORD; (* bit pattern, return value must be FOUR_CC('C', 'A', 'C', 'H') *)
  3084. OptMethod : DWORD; (* optimization method 0 means longest strips, 1 means vertex cache based *)
  3085. CacheSize : DWORD; (* cache size to optimize for (only required if type is 1) *)
  3086. MagicNumber : DWORD; (* used to determine when to restart strips (only required if type is 1)*)
  3087. end;
  3088. {$EXTERNALSYM _D3DDEVINFO_VCACHE}
  3089. D3DDEVINFO_VCACHE = _D3DDEVINFO_VCACHE;
  3090. {$EXTERNALSYM D3DDEVINFO_VCACHE}
  3091. TD3DDevInfoVCache = _D3DDEVINFO_VCACHE;
  3092. PD3DDevInfoD3D9PipelineTimings = ^TD3DDevInfoD3D9PipelineTimings;
  3093. _D3DDEVINFO_D3D9PIPELINETIMINGS = record
  3094. VertexProcessingTimePercent: Single;
  3095. PixelProcessingTimePercent: Single;
  3096. OtherGPUProcessingTimePercent: Single;
  3097. GPUIdleTimePercent: Single;
  3098. end;
  3099. {$EXTERNALSYM _D3DDEVINFO_D3D9PIPELINETIMINGS}
  3100. D3DDEVINFO_D3D9PIPELINETIMINGS = _D3DDEVINFO_D3D9PIPELINETIMINGS;
  3101. {$EXTERNALSYM D3DDEVINFO_D3D9PIPELINETIMINGS}
  3102. TD3DDevInfoD3D9PipelineTimings = _D3DDEVINFO_D3D9PIPELINETIMINGS;
  3103. PD3DDevInfoD3D9InterfaceTimings = ^TD3DDevInfoD3D9InterfaceTimings;
  3104. _D3DDEVINFO_D3D9INTERFACETIMINGS = record
  3105. WaitingForGPUToUseApplicationResourceTimePercent: Single;
  3106. WaitingForGPUToAcceptMoreCommandsTimePercent: Single;
  3107. WaitingForGPUToStayWithinLatencyTimePercent: Single;
  3108. WaitingForGPUExclusiveResourceTimePercent: Single;
  3109. WaitingForGPUOtherTimePercent: Single;
  3110. end;
  3111. {$EXTERNALSYM _D3DDEVINFO_D3D9INTERFACETIMINGS}
  3112. D3DDEVINFO_D3D9INTERFACETIMINGS = _D3DDEVINFO_D3D9INTERFACETIMINGS;
  3113. {$EXTERNALSYM D3DDEVINFO_D3D9INTERFACETIMINGS}
  3114. TD3DDevInfoD3D9InterfaceTimings = _D3DDEVINFO_D3D9INTERFACETIMINGS;
  3115. PD3DDevInfoD3D9StageTimings = ^TD3DDevInfoD3D9StageTimings;
  3116. _D3DDEVINFO_D3D9STAGETIMINGS = record
  3117. MemoryProcessingPercent: Single;
  3118. ComputationProcessingPercent: Single;
  3119. end;
  3120. {$EXTERNALSYM _D3DDEVINFO_D3D9STAGETIMINGS}
  3121. D3DDEVINFO_D3D9STAGETIMINGS = _D3DDEVINFO_D3D9STAGETIMINGS;
  3122. {$EXTERNALSYM D3DDEVINFO_D3D9STAGETIMINGS}
  3123. TD3DDevInfoD3D9StageTimings = _D3DDEVINFO_D3D9STAGETIMINGS;
  3124. PD3DDevInfoD3D9BandwidthTimings = ^TD3DDevInfoD3D9BandwidthTimings;
  3125. _D3DDEVINFO_D3D9BANDWIDTHTIMINGS = record
  3126. MaxBandwidthUtilized: Single;
  3127. FrontEndUploadMemoryUtilizedPercent: Single;
  3128. VertexRateUtilizedPercent: Single;
  3129. TriangleSetupRateUtilizedPercent: Single;
  3130. FillRateUtilizedPercent: Single;
  3131. end;
  3132. {$EXTERNALSYM _D3DDEVINFO_D3D9BANDWIDTHTIMINGS}
  3133. D3DDEVINFO_D3D9BANDWIDTHTIMINGS = _D3DDEVINFO_D3D9BANDWIDTHTIMINGS;
  3134. {$EXTERNALSYM D3DDEVINFO_D3D9BANDWIDTHTIMINGS}
  3135. TD3DDevInfoD3D9BandwidthTimings = _D3DDEVINFO_D3D9BANDWIDTHTIMINGS;
  3136. PD3DDevInfoD3D9CacheUtilization = ^TD3DDevInfoD3D9CacheUtilization;
  3137. _D3DDEVINFO_D3D9CACHEUTILIZATION = record
  3138. TextureCacheHitRate: Single; // Percentage of cache hits
  3139. PostTransformVertexCacheHitRate: Single;
  3140. end;
  3141. {$EXTERNALSYM _D3DDEVINFO_D3D9CACHEUTILIZATION}
  3142. D3DDEVINFO_D3D9CACHEUTILIZATION = _D3DDEVINFO_D3D9CACHEUTILIZATION;
  3143. {$EXTERNALSYM D3DDEVINFO_D3D9CACHEUTILIZATION}
  3144. TD3DDevInfoD3D9CacheUtilization = _D3DDEVINFO_D3D9CACHEUTILIZATION;
  3145. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  3146. PD3DComposeRectsOp = ^TD3DComposeRectsOp;
  3147. _D3DCOMPOSERECTSOP =
  3148. (
  3149. D3DCOMPOSERECTS_INVALID_0,
  3150. D3DCOMPOSERECTS_COPY {= 1},
  3151. D3DCOMPOSERECTS_OR {= 2},
  3152. D3DCOMPOSERECTS_AND {= 3},
  3153. D3DCOMPOSERECTS_NEG {= 4}
  3154. );
  3155. {$EXTERNALSYM _D3DCOMPOSERECTSOP}
  3156. D3DCOMPOSERECTSOP = _D3DCOMPOSERECTSOP;
  3157. {$EXTERNALSYM D3DCOMPOSERECTSOP}
  3158. TD3DComposeRectsOp = _D3DCOMPOSERECTSOP;
  3159. PD3DComposeRectDesc = ^TD3DComposeRectDesc;
  3160. _D3DCOMPOSERECTDESC = record
  3161. X, Y: Word; // Top-left coordinates of a rect in the source surface
  3162. Width, Height: Word; // Dimensions of the rect
  3163. end;
  3164. {$EXTERNALSYM _D3DCOMPOSERECTDESC}
  3165. D3DCOMPOSERECTDESC = _D3DCOMPOSERECTDESC;
  3166. {$EXTERNALSYM D3DCOMPOSERECTDESC}
  3167. TD3DComposeRectDesc = _D3DCOMPOSERECTDESC;
  3168. PD3DComposeRectDestination = ^TD3DComposeRectDestination;
  3169. _D3DCOMPOSERECTDESTINATION = record
  3170. SrcRectIndex: Word; // Index of D3DCOMPOSERECTDESC
  3171. Reserved: Word; // For alignment
  3172. X, Y: Smallint; // Top-left coordinates of the rect in the destination surface
  3173. end;
  3174. {$EXTERNALSYM _D3DCOMPOSERECTDESTINATION}
  3175. D3DCOMPOSERECTDESTINATION = _D3DCOMPOSERECTDESTINATION;
  3176. {$EXTERNALSYM D3DCOMPOSERECTDESTINATION}
  3177. TD3DComposeRectDestination = _D3DCOMPOSERECTDESTINATION;
  3178. const
  3179. D3DCOMPOSERECTS_MAXNUMRECTS = $FFFF;
  3180. {$EXTERNALSYM D3DCOMPOSERECTS_MAXNUMRECTS}
  3181. D3DCONVOLUTIONMONO_MAXWIDTH = 7;
  3182. {$EXTERNALSYM D3DCONVOLUTIONMONO_MAXWIDTH}
  3183. D3DCONVOLUTIONMONO_MAXHEIGHT = D3DCONVOLUTIONMONO_MAXWIDTH;
  3184. {$EXTERNALSYM D3DCONVOLUTIONMONO_MAXHEIGHT}
  3185. D3DFMT_A1_SURFACE_MAXWIDTH = 8192;
  3186. {$EXTERNALSYM D3DFMT_A1_SURFACE_MAXWIDTH}
  3187. D3DFMT_A1_SURFACE_MAXHEIGHT = 2048;
  3188. {$EXTERNALSYM D3DFMT_A1_SURFACE_MAXHEIGHT}
  3189. type
  3190. PD3DPresentStats = ^TD3DPresentStats;
  3191. _D3DPRESENTSTATS = record
  3192. PresentCount: LongWord;
  3193. PresentRefreshCount: LongWord;
  3194. SyncRefreshCount: LongWord;
  3195. SyncQPCTime: LARGE_INTEGER;
  3196. SyncGPUTime: LARGE_INTEGER;
  3197. end;
  3198. {$EXTERNALSYM _D3DPRESENTSTATS}
  3199. D3DPRESENTSTATS = _D3DPRESENTSTATS;
  3200. {$EXTERNALSYM D3DPRESENTSTATS}
  3201. TD3DPresentStats = _D3DPRESENTSTATS;
  3202. PD3DScanlineOrdering = ^TD3DScanlineOrdering;
  3203. D3DSCANLINEORDERING = (
  3204. D3DSCANLINEORDERING_INVALID_0,
  3205. D3DSCANLINEORDERING_PROGRESSIVE {= 1},
  3206. D3DSCANLINEORDERING_INTERLACED {= 2}
  3207. );
  3208. {$EXTERNALSYM D3DSCANLINEORDERING}
  3209. TD3DScanlineOrdering = D3DSCANLINEORDERING;
  3210. PD3DDisplayModeEx = ^TD3DDisplayModeEx;
  3211. D3DDISPLAYMODEEX = record
  3212. Size: LongWord;
  3213. Width: LongWord;
  3214. Height: LongWord;
  3215. RefreshRate: LongWord;
  3216. Format: TD3DFormat;
  3217. ScanLineOrdering: TD3DScanlineOrdering;
  3218. end;
  3219. {$EXTERNALSYM D3DDISPLAYMODEEX}
  3220. TD3DDisplayModeEx = D3DDISPLAYMODEEX;
  3221. PD3DDisplayModeFilter = ^TD3DDisplayModeFilter;
  3222. D3DDISPLAYMODEFILTER = record
  3223. Size: LongWord;
  3224. Format: TD3DFormat;
  3225. ScanLineOrdering: TD3DScanlineOrdering;
  3226. end;
  3227. {$EXTERNALSYM D3DDISPLAYMODEFILTER}
  3228. TD3DDisplayModeFilter = D3DDISPLAYMODEFILTER;
  3229. PD3DDisplayRotation = ^TD3DDisplayRotation;
  3230. D3DDISPLAYROTATION =
  3231. (
  3232. {$IFNDEF SUPPORTS_EXPL_ENUMS}
  3233. D3DDISPLAYROTATION_INVALID_0,
  3234. D3DDISPLAYROTATION_IDENTITY {= 1}, // No rotation.
  3235. D3DDISPLAYROTATION_90 {= 2}, // Rotated 90 degrees.
  3236. D3DDISPLAYROTATION_180 {= 3}, // Rotated 180 degrees.
  3237. D3DDISPLAYROTATION_270 {= 4} // Rotated 270 degrees.
  3238. {$ELSE}
  3239. D3DDISPLAYROTATION_IDENTITY = 1, // No rotation.
  3240. D3DDISPLAYROTATION_90 = 2, // Rotated 90 degrees.
  3241. D3DDISPLAYROTATION_180 = 3, // Rotated 180 degrees.
  3242. D3DDISPLAYROTATION_270 = 4 // Rotated 270 degrees.
  3243. {$ENDIF}
  3244. );
  3245. {$EXTERNALSYM D3DDISPLAYROTATION}
  3246. TD3DDisplayRotation = D3DDISPLAYROTATION;
  3247. {$ENDIF}
  3248. (*==========================================================================;
  3249. *
  3250. * Copyright (C) Microsoft Corporation. All Rights Reserved.
  3251. *
  3252. * File: d3d9caps.h
  3253. * Content: Direct3D capabilities include file
  3254. *
  3255. ***************************************************************************)
  3256. type
  3257. PD3DVShaderCaps2_0 = ^TD3DVShaderCaps2_0;
  3258. _D3DVSHADERCAPS2_0 = record
  3259. Caps: DWORD;
  3260. DynamicFlowControlDepth: Integer;
  3261. NumTemps: Integer;
  3262. StaticFlowControlDepth: Integer;
  3263. end;
  3264. {$EXTERNALSYM _D3DVSHADERCAPS2_0}
  3265. D3DVSHADERCAPS2_0 = _D3DVSHADERCAPS2_0;
  3266. {$EXTERNALSYM D3DVSHADERCAPS2_0}
  3267. TD3DVShaderCaps2_0 = _D3DVSHADERCAPS2_0;
  3268. const
  3269. D3DVS20CAPS_PREDICATION = (1 shl 0);
  3270. {$EXTERNALSYM D3DVS20CAPS_PREDICATION}
  3271. D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH = 24;
  3272. {$EXTERNALSYM D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH}
  3273. D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0;
  3274. {$EXTERNALSYM D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH}
  3275. D3DVS20_MAX_NUMTEMPS = 32;
  3276. {$EXTERNALSYM D3DVS20_MAX_NUMTEMPS}
  3277. D3DVS20_MIN_NUMTEMPS = 12;
  3278. {$EXTERNALSYM D3DVS20_MIN_NUMTEMPS}
  3279. D3DVS20_MAX_STATICFLOWCONTROLDEPTH = 4;
  3280. {$EXTERNALSYM D3DVS20_MAX_STATICFLOWCONTROLDEPTH}
  3281. D3DVS20_MIN_STATICFLOWCONTROLDEPTH = 1;
  3282. {$EXTERNALSYM D3DVS20_MIN_STATICFLOWCONTROLDEPTH}
  3283. type
  3284. PD3DPShaderCaps2_0 = ^TD3DPShaderCaps2_0;
  3285. _D3DPSHADERCAPS2_0 = record
  3286. Caps: DWORD;
  3287. DynamicFlowControlDepth: Integer;
  3288. NumTemps: Integer;
  3289. StaticFlowControlDepth: Integer;
  3290. NumInstructionSlots: Integer;
  3291. end;
  3292. {$EXTERNALSYM _D3DPSHADERCAPS2_0}
  3293. D3DPSHADERCAPS2_0 = _D3DPSHADERCAPS2_0;
  3294. {$EXTERNALSYM D3DPSHADERCAPS2_0}
  3295. TD3DPShaderCaps2_0 = _D3DPSHADERCAPS2_0;
  3296. const
  3297. D3DPS20CAPS_ARBITRARYSWIZZLE = (1 shl 0);
  3298. {$EXTERNALSYM D3DPS20CAPS_ARBITRARYSWIZZLE}
  3299. D3DPS20CAPS_GRADIENTINSTRUCTIONS = (1 shl 1);
  3300. {$EXTERNALSYM D3DPS20CAPS_GRADIENTINSTRUCTIONS}
  3301. D3DPS20CAPS_PREDICATION = (1 shl 2);
  3302. {$EXTERNALSYM D3DPS20CAPS_PREDICATION}
  3303. D3DPS20CAPS_NODEPENDENTREADLIMIT = (1 shl 3);
  3304. {$EXTERNALSYM D3DPS20CAPS_NODEPENDENTREADLIMIT}
  3305. D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT = (1 shl 4);
  3306. {$EXTERNALSYM D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT}
  3307. D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH = 24;
  3308. {$EXTERNALSYM D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH}
  3309. D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0;
  3310. {$EXTERNALSYM D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH}
  3311. D3DPS20_MAX_NUMTEMPS = 32;
  3312. {$EXTERNALSYM D3DPS20_MAX_NUMTEMPS}
  3313. D3DPS20_MIN_NUMTEMPS = 12;
  3314. {$EXTERNALSYM D3DPS20_MIN_NUMTEMPS}
  3315. D3DPS20_MAX_STATICFLOWCONTROLDEPTH = 4;
  3316. {$EXTERNALSYM D3DPS20_MAX_STATICFLOWCONTROLDEPTH}
  3317. D3DPS20_MIN_STATICFLOWCONTROLDEPTH = 0;
  3318. {$EXTERNALSYM D3DPS20_MIN_STATICFLOWCONTROLDEPTH}
  3319. D3DPS20_MAX_NUMINSTRUCTIONSLOTS = 512;
  3320. {$EXTERNALSYM D3DPS20_MAX_NUMINSTRUCTIONSLOTS}
  3321. D3DPS20_MIN_NUMINSTRUCTIONSLOTS = 96;
  3322. {$EXTERNALSYM D3DPS20_MIN_NUMINSTRUCTIONSLOTS}
  3323. D3DMIN30SHADERINSTRUCTIONS = 512;
  3324. {$EXTERNALSYM D3DMIN30SHADERINSTRUCTIONS}
  3325. D3DMAX30SHADERINSTRUCTIONS = 32768;
  3326. {$EXTERNALSYM D3DMAX30SHADERINSTRUCTIONS}
  3327. type
  3328. PD3DCaps9 = ^TD3DCaps9;
  3329. _D3DCAPS9 = record
  3330. (* Device Info *)
  3331. DeviceType: TD3DDevType;
  3332. AdapterOrdinal: DWord;
  3333. (* Caps from DX7 Draw *)
  3334. Caps: DWord;
  3335. Caps2: DWord;
  3336. Caps3: DWord;
  3337. PresentationIntervals: DWord;
  3338. (* Cursor Caps *)
  3339. CursorCaps: DWORD;
  3340. (* 3D Device Caps *)
  3341. DevCaps: DWord;
  3342. PrimitiveMiscCaps: DWord;
  3343. RasterCaps: DWord;
  3344. ZCmpCaps: DWord;
  3345. SrcBlendCaps: DWord;
  3346. DestBlendCaps: DWord;
  3347. AlphaCmpCaps: DWord;
  3348. ShadeCaps: DWord;
  3349. TextureCaps: DWord;
  3350. TextureFilterCaps: DWord; // D3DPTFILTERCAPS for IDirect3DTexture9's
  3351. CubeTextureFilterCaps: DWord; // D3DPTFILTERCAPS for IDirect3DCubeTexture9's
  3352. VolumeTextureFilterCaps: DWord; // D3DPTFILTERCAPS for IDirect3DVolumeTexture9's
  3353. TextureAddressCaps: DWord; // D3DPTADDRESSCAPS for IDirect3DTexture9's
  3354. VolumeTextureAddressCaps: DWord; // D3DPTADDRESSCAPS for IDirect3DVolumeTexture9's
  3355. LineCaps: DWord; // D3DLINECAPS
  3356. MaxTextureWidth, MaxTextureHeight: DWord;
  3357. MaxVolumeExtent: DWord;
  3358. MaxTextureRepeat: DWord;
  3359. MaxTextureAspectRatio: DWord;
  3360. MaxAnisotropy: DWord;
  3361. MaxVertexW: Single;
  3362. GuardBandLeft: Single;
  3363. GuardBandTop: Single;
  3364. GuardBandRight: Single;
  3365. GuardBandBottom: Single;
  3366. ExtentsAdjust: Single;
  3367. StencilCaps: DWord;
  3368. FVFCaps: DWord;
  3369. TextureOpCaps: DWord;
  3370. MaxTextureBlendStages: DWord;
  3371. MaxSimultaneousTextures: DWord;
  3372. VertexProcessingCaps: DWord;
  3373. MaxActiveLights: DWord;
  3374. MaxUserClipPlanes: DWord;
  3375. MaxVertexBlendMatrices: DWord;
  3376. MaxVertexBlendMatrixIndex: DWord;
  3377. MaxPointSize: Single;
  3378. MaxPrimitiveCount: DWord; // max number of primitives per DrawPrimitive call
  3379. MaxVertexIndex: DWord;
  3380. MaxStreams: DWord;
  3381. MaxStreamStride: DWord; // max stride for SetStreamSource
  3382. VertexShaderVersion: DWord;
  3383. MaxVertexShaderConst: DWord; // number of vertex shader constant registers
  3384. PixelShaderVersion: DWord;
  3385. PixelShader1xMaxValue: Single; // max value storable in registers of ps.1.x shaders
  3386. // Here are the DX9 specific ones
  3387. DevCaps2: DWORD;
  3388. MaxNpatchTessellationLevel: Single;
  3389. Reserved5: DWORD;
  3390. MasterAdapterOrdinal: LongWord; // ordinal of master adaptor for adapter group
  3391. AdapterOrdinalInGroup: LongWord; // ordinal inside the adapter group
  3392. NumberOfAdaptersInGroup: LongWord; // number of adapters in this adapter group (only if master)
  3393. DeclTypes: DWORD; // Data types, supported in vertex declarations
  3394. NumSimultaneousRTs: DWORD; // Will be at least 1
  3395. StretchRectFilterCaps: DWORD; // Filter caps supported by StretchRect
  3396. VS20Caps: TD3DVShaderCaps2_0;
  3397. PS20Caps: TD3DPShaderCaps2_0;
  3398. VertexTextureFilterCaps: DWORD; // D3DPTFILTERCAPS for IDirect3DTexture9's for texture, used in vertex shaders
  3399. MaxVShaderInstructionsExecuted: DWORD; // maximum number of vertex shader instructions that can be executed
  3400. MaxPShaderInstructionsExecuted: DWORD; // maximum number of pixel shader instructions that can be executed
  3401. MaxVertexShader30InstructionSlots: DWORD;
  3402. MaxPixelShader30InstructionSlots: DWORD;
  3403. end {D3DCAPS9};
  3404. {$EXTERNALSYM _D3DCAPS9}
  3405. D3DCAPS9 = _D3DCAPS9;
  3406. {$EXTERNALSYM D3DCAPS9}
  3407. TD3DCaps9 = _D3DCAPS9;
  3408. //
  3409. // BIT DEFINES FOR D3DCAPS9 DWORD MEMBERS
  3410. //
  3411. const
  3412. //
  3413. // Caps
  3414. //
  3415. D3DCAPS_READ_SCANLINE = $00020000;
  3416. {$EXTERNALSYM D3DCAPS_READ_SCANLINE}
  3417. //
  3418. // Caps2
  3419. //
  3420. D3DCAPS2_FULLSCREENGAMMA = $00020000;
  3421. {$EXTERNALSYM D3DCAPS2_FULLSCREENGAMMA}
  3422. D3DCAPS2_CANCALIBRATEGAMMA = $00100000;
  3423. {$EXTERNALSYM D3DCAPS2_CANCALIBRATEGAMMA}
  3424. D3DCAPS2_RESERVED = $02000000;
  3425. {$EXTERNALSYM D3DCAPS2_RESERVED}
  3426. D3DCAPS2_CANMANAGERESOURCE = $10000000;
  3427. {$EXTERNALSYM D3DCAPS2_CANMANAGERESOURCE}
  3428. D3DCAPS2_DYNAMICTEXTURES = $20000000;
  3429. {$EXTERNALSYM D3DCAPS2_DYNAMICTEXTURES}
  3430. D3DCAPS2_CANAUTOGENMIPMAP = $40000000;
  3431. {$EXTERNALSYM D3DCAPS2_CANAUTOGENMIPMAP}
  3432. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  3433. D3DCAPS2_CANSHARERESOURCE = $80000000;
  3434. {$EXTERNALSYM D3DCAPS2_CANSHARERESOURCE}
  3435. {$ENDIF}
  3436. //
  3437. // Caps3
  3438. //
  3439. D3DCAPS3_RESERVED = $8000001F;
  3440. {$EXTERNALSYM D3DCAPS3_RESERVED}
  3441. // Indicates that the device can respect the ALPHABLENDENABLE render state
  3442. // when fullscreen while using the FLIP or DISCARD swap effect.
  3443. // COPY and COPYVSYNC swap effects work whether or not this flag is set.
  3444. D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD = $00000020;
  3445. {$EXTERNALSYM D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD}
  3446. // Indicates that the device can perform a gamma correction from
  3447. // a windowed back buffer containing linear content to the sRGB desktop.
  3448. D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION = $00000080;
  3449. {$EXTERNALSYM D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION}
  3450. D3DCAPS3_COPY_TO_VIDMEM = $00000100; { Device can acclerate copies from sysmem to local vidmem }
  3451. {$EXTERNALSYM D3DCAPS3_COPY_TO_VIDMEM}
  3452. D3DCAPS3_COPY_TO_SYSTEMMEM = $00000200; { Device can acclerate copies from local vidmem to sysmem }
  3453. {$EXTERNALSYM D3DCAPS3_COPY_TO_SYSTEMMEM}
  3454. //
  3455. // PresentationIntervals
  3456. //
  3457. D3DPRESENT_INTERVAL_DEFAULT = $00000000;
  3458. {$EXTERNALSYM D3DPRESENT_INTERVAL_DEFAULT}
  3459. D3DPRESENT_INTERVAL_ONE = $00000001;
  3460. {$EXTERNALSYM D3DPRESENT_INTERVAL_ONE}
  3461. D3DPRESENT_INTERVAL_TWO = $00000002;
  3462. {$EXTERNALSYM D3DPRESENT_INTERVAL_TWO}
  3463. D3DPRESENT_INTERVAL_THREE = $00000004;
  3464. {$EXTERNALSYM D3DPRESENT_INTERVAL_THREE}
  3465. D3DPRESENT_INTERVAL_FOUR = $00000008;
  3466. {$EXTERNALSYM D3DPRESENT_INTERVAL_FOUR}
  3467. D3DPRESENT_INTERVAL_IMMEDIATE = $80000000;
  3468. {$EXTERNALSYM D3DPRESENT_INTERVAL_IMMEDIATE}
  3469. //
  3470. // CursorCaps
  3471. //
  3472. // Driver supports HW color cursor in at least hi-res modes(height >=400)
  3473. D3DCURSORCAPS_COLOR = $00000001;
  3474. {$EXTERNALSYM D3DCURSORCAPS_COLOR}
  3475. // Driver supports HW cursor also in low-res modes(height < 400)
  3476. D3DCURSORCAPS_LOWRES = $00000002;
  3477. {$EXTERNALSYM D3DCURSORCAPS_LOWRES}
  3478. //
  3479. // DevCaps
  3480. //
  3481. D3DDEVCAPS_EXECUTESYSTEMMEMORY = $00000010; { Device can use execute buffers from system memory }
  3482. {$EXTERNALSYM D3DDEVCAPS_EXECUTESYSTEMMEMORY}
  3483. D3DDEVCAPS_EXECUTEVIDEOMEMORY = $00000020; { Device can use execute buffers from video memory }
  3484. {$EXTERNALSYM D3DDEVCAPS_EXECUTEVIDEOMEMORY}
  3485. D3DDEVCAPS_TLVERTEXSYSTEMMEMORY = $00000040; { Device can use TL buffers from system memory }
  3486. {$EXTERNALSYM D3DDEVCAPS_TLVERTEXSYSTEMMEMORY}
  3487. D3DDEVCAPS_TLVERTEXVIDEOMEMORY = $00000080; { Device can use TL buffers from video memory }
  3488. {$EXTERNALSYM D3DDEVCAPS_TLVERTEXVIDEOMEMORY}
  3489. D3DDEVCAPS_TEXTURESYSTEMMEMORY = $00000100; { Device can texture from system memory }
  3490. {$EXTERNALSYM D3DDEVCAPS_TEXTURESYSTEMMEMORY}
  3491. D3DDEVCAPS_TEXTUREVIDEOMEMORY = $00000200; { Device can texture from device memory }
  3492. {$EXTERNALSYM D3DDEVCAPS_TEXTUREVIDEOMEMORY}
  3493. D3DDEVCAPS_DRAWPRIMTLVERTEX = $00000400; { Device can draw TLVERTEX primitives }
  3494. {$EXTERNALSYM D3DDEVCAPS_DRAWPRIMTLVERTEX}
  3495. D3DDEVCAPS_CANRENDERAFTERFLIP = $00000800; { Device can render without waiting for flip to complete }
  3496. {$EXTERNALSYM D3DDEVCAPS_CANRENDERAFTERFLIP}
  3497. D3DDEVCAPS_TEXTURENONLOCALVIDMEM = $00001000; { Device can texture from nonlocal video memory }
  3498. {$EXTERNALSYM D3DDEVCAPS_TEXTURENONLOCALVIDMEM}
  3499. D3DDEVCAPS_DRAWPRIMITIVES2 = $00002000; { Device can support DrawPrimitives2 }
  3500. {$EXTERNALSYM D3DDEVCAPS_DRAWPRIMITIVES2}
  3501. D3DDEVCAPS_SEPARATETEXTUREMEMORIES = $00004000; { Device is texturing from separate memory pools }
  3502. {$EXTERNALSYM D3DDEVCAPS_SEPARATETEXTUREMEMORIES}
  3503. D3DDEVCAPS_DRAWPRIMITIVES2EX = $00008000; { Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver }
  3504. {$EXTERNALSYM D3DDEVCAPS_DRAWPRIMITIVES2EX}
  3505. D3DDEVCAPS_HWTRANSFORMANDLIGHT = $00010000; { Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also }
  3506. {$EXTERNALSYM D3DDEVCAPS_HWTRANSFORMANDLIGHT}
  3507. D3DDEVCAPS_CANBLTSYSTONONLOCAL = $00020000; { Device supports a Tex Blt from system memory to non-local vidmem }
  3508. {$EXTERNALSYM D3DDEVCAPS_CANBLTSYSTONONLOCAL}
  3509. D3DDEVCAPS_HWRASTERIZATION = $00080000; { Device has HW acceleration for rasterization }
  3510. {$EXTERNALSYM D3DDEVCAPS_HWRASTERIZATION}
  3511. D3DDEVCAPS_PUREDEVICE = $00100000; { Device supports D3DCREATE_PUREDEVICE }
  3512. {$EXTERNALSYM D3DDEVCAPS_PUREDEVICE}
  3513. D3DDEVCAPS_QUINTICRTPATCHES = $00200000; { Device supports quintic Beziers and BSplines }
  3514. {$EXTERNALSYM D3DDEVCAPS_QUINTICRTPATCHES}
  3515. D3DDEVCAPS_RTPATCHES = $00400000; { Device supports Rect and Tri patches }
  3516. {$EXTERNALSYM D3DDEVCAPS_RTPATCHES}
  3517. D3DDEVCAPS_RTPATCHHANDLEZERO = $00800000; { Indicates that RT Patches may be drawn efficiently using handle 0 }
  3518. {$EXTERNALSYM D3DDEVCAPS_RTPATCHHANDLEZERO}
  3519. D3DDEVCAPS_NPATCHES = $01000000; { Device supports N-Patches }
  3520. {$EXTERNALSYM D3DDEVCAPS_NPATCHES}
  3521. //
  3522. // PrimitiveMiscCaps
  3523. //
  3524. D3DPMISCCAPS_MASKZ = $00000002;
  3525. {$EXTERNALSYM D3DPMISCCAPS_MASKZ}
  3526. D3DPMISCCAPS_CULLNONE = $00000010;
  3527. {$EXTERNALSYM D3DPMISCCAPS_CULLNONE}
  3528. D3DPMISCCAPS_CULLCW = $00000020;
  3529. {$EXTERNALSYM D3DPMISCCAPS_CULLCW}
  3530. D3DPMISCCAPS_CULLCCW = $00000040;
  3531. {$EXTERNALSYM D3DPMISCCAPS_CULLCCW}
  3532. D3DPMISCCAPS_COLORWRITEENABLE = $00000080;
  3533. {$EXTERNALSYM D3DPMISCCAPS_COLORWRITEENABLE}
  3534. D3DPMISCCAPS_CLIPPLANESCALEDPOINTS = $00000100; { Device correctly clips scaled points to clip planes }
  3535. {$EXTERNALSYM D3DPMISCCAPS_CLIPPLANESCALEDPOINTS}
  3536. D3DPMISCCAPS_CLIPTLVERTS = $00000200; { device will clip post-transformed vertex primitives }
  3537. {$EXTERNALSYM D3DPMISCCAPS_CLIPTLVERTS}
  3538. D3DPMISCCAPS_TSSARGTEMP = $00000400; { device supports D3DTA_TEMP for temporary register }
  3539. {$EXTERNALSYM D3DPMISCCAPS_TSSARGTEMP}
  3540. D3DPMISCCAPS_BLENDOP = $00000800; { device supports D3DRS_BLENDOP }
  3541. {$EXTERNALSYM D3DPMISCCAPS_BLENDOP}
  3542. D3DPMISCCAPS_NULLREFERENCE = $00001000; { Reference Device that doesnt render }
  3543. {$EXTERNALSYM D3DPMISCCAPS_NULLREFERENCE}
  3544. D3DPMISCCAPS_INDEPENDENTWRITEMASKS = $00004000; { Device supports independent write masks for MET or MRT }
  3545. {$EXTERNALSYM D3DPMISCCAPS_INDEPENDENTWRITEMASKS}
  3546. D3DPMISCCAPS_PERSTAGECONSTANT = $00008000; { Device supports per-stage constants }
  3547. {$EXTERNALSYM D3DPMISCCAPS_PERSTAGECONSTANT}
  3548. D3DPMISCCAPS_FOGANDSPECULARALPHA = $00010000; { Device supports separate fog and specular alpha (many devices
  3549. use the specular alpha channel to store fog factor) }
  3550. {$EXTERNALSYM D3DPMISCCAPS_FOGANDSPECULARALPHA}
  3551. D3DPMISCCAPS_SEPARATEALPHABLEND = $00020000; { Device supports separate blend settings for the alpha channel }
  3552. {$EXTERNALSYM D3DPMISCCAPS_SEPARATEALPHABLEND}
  3553. D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS = $00040000; { Device supports different bit depths for MRT }
  3554. {$EXTERNALSYM D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS}
  3555. D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING = $00080000; { Device supports post-pixel shader operations for MRT }
  3556. {$EXTERNALSYM D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING}
  3557. D3DPMISCCAPS_FOGVERTEXCLAMPED = $00100000; { Device clamps fog blend factor per vertex }
  3558. {$EXTERNALSYM D3DPMISCCAPS_FOGVERTEXCLAMPED}
  3559. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  3560. D3DPMISCCAPS_POSTBLENDSRGBCONVERT = $00200000; { Indicates device can perform conversion to sRGB after blending. }
  3561. {$EXTERNALSYM D3DPMISCCAPS_POSTBLENDSRGBCONVERT}
  3562. {$ENDIF}
  3563. //
  3564. // LineCaps
  3565. //
  3566. D3DLINECAPS_TEXTURE = $00000001;
  3567. {$EXTERNALSYM D3DLINECAPS_TEXTURE}
  3568. D3DLINECAPS_ZTEST = $00000002;
  3569. {$EXTERNALSYM D3DLINECAPS_ZTEST}
  3570. D3DLINECAPS_BLEND = $00000004;
  3571. {$EXTERNALSYM D3DLINECAPS_BLEND}
  3572. D3DLINECAPS_ALPHACMP = $00000008;
  3573. {$EXTERNALSYM D3DLINECAPS_ALPHACMP}
  3574. D3DLINECAPS_FOG = $00000010;
  3575. {$EXTERNALSYM D3DLINECAPS_FOG}
  3576. D3DLINECAPS_ANTIALIAS = $00000020;
  3577. {$EXTERNALSYM D3DLINECAPS_ANTIALIAS}
  3578. //
  3579. // RasterCaps
  3580. //
  3581. D3DPRASTERCAPS_DITHER = $00000001;
  3582. {$EXTERNALSYM D3DPRASTERCAPS_DITHER}
  3583. D3DPRASTERCAPS_ZTEST = $00000010;
  3584. {$EXTERNALSYM D3DPRASTERCAPS_ZTEST}
  3585. D3DPRASTERCAPS_FOGVERTEX = $00000080;
  3586. {$EXTERNALSYM D3DPRASTERCAPS_FOGVERTEX}
  3587. D3DPRASTERCAPS_FOGTABLE = $00000100;
  3588. {$EXTERNALSYM D3DPRASTERCAPS_FOGTABLE}
  3589. D3DPRASTERCAPS_MIPMAPLODBIAS = $00002000;
  3590. {$EXTERNALSYM D3DPRASTERCAPS_MIPMAPLODBIAS}
  3591. D3DPRASTERCAPS_ZBUFFERLESSHSR = $00008000;
  3592. {$EXTERNALSYM D3DPRASTERCAPS_ZBUFFERLESSHSR}
  3593. D3DPRASTERCAPS_FOGRANGE = $00010000;
  3594. {$EXTERNALSYM D3DPRASTERCAPS_FOGRANGE}
  3595. D3DPRASTERCAPS_ANISOTROPY = $00020000;
  3596. {$EXTERNALSYM D3DPRASTERCAPS_ANISOTROPY}
  3597. D3DPRASTERCAPS_WBUFFER = $00040000;
  3598. {$EXTERNALSYM D3DPRASTERCAPS_WBUFFER}
  3599. D3DPRASTERCAPS_WFOG = $00100000;
  3600. {$EXTERNALSYM D3DPRASTERCAPS_WFOG}
  3601. D3DPRASTERCAPS_ZFOG = $00200000;
  3602. {$EXTERNALSYM D3DPRASTERCAPS_ZFOG}
  3603. D3DPRASTERCAPS_COLORPERSPECTIVE = $00400000; { Device iterates colors perspective correct }
  3604. {$EXTERNALSYM D3DPRASTERCAPS_COLORPERSPECTIVE}
  3605. D3DPRASTERCAPS_SCISSORTEST = $01000000;
  3606. {$EXTERNALSYM D3DPRASTERCAPS_SCISSORTEST}
  3607. D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS = $02000000;
  3608. {$EXTERNALSYM D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS}
  3609. D3DPRASTERCAPS_DEPTHBIAS = $04000000;
  3610. {$EXTERNALSYM D3DPRASTERCAPS_DEPTHBIAS}
  3611. D3DPRASTERCAPS_MULTISAMPLE_TOGGLE = $08000000;
  3612. {$EXTERNALSYM D3DPRASTERCAPS_MULTISAMPLE_TOGGLE}
  3613. //
  3614. // ZCmpCaps, AlphaCmpCaps
  3615. //
  3616. D3DPCMPCAPS_NEVER = $00000001;
  3617. {$EXTERNALSYM D3DPCMPCAPS_NEVER}
  3618. D3DPCMPCAPS_LESS = $00000002;
  3619. {$EXTERNALSYM D3DPCMPCAPS_LESS}
  3620. D3DPCMPCAPS_EQUAL = $00000004;
  3621. {$EXTERNALSYM D3DPCMPCAPS_EQUAL}
  3622. D3DPCMPCAPS_LESSEQUAL = $00000008;
  3623. {$EXTERNALSYM D3DPCMPCAPS_LESSEQUAL}
  3624. D3DPCMPCAPS_GREATER = $00000010;
  3625. {$EXTERNALSYM D3DPCMPCAPS_GREATER}
  3626. D3DPCMPCAPS_NOTEQUAL = $00000020;
  3627. {$EXTERNALSYM D3DPCMPCAPS_NOTEQUAL}
  3628. D3DPCMPCAPS_GREATEREQUAL = $00000040;
  3629. {$EXTERNALSYM D3DPCMPCAPS_GREATEREQUAL}
  3630. D3DPCMPCAPS_ALWAYS = $00000080;
  3631. {$EXTERNALSYM D3DPCMPCAPS_ALWAYS}
  3632. //
  3633. // SourceBlendCaps, DestBlendCaps
  3634. //
  3635. D3DPBLENDCAPS_ZERO = $00000001;
  3636. {$EXTERNALSYM D3DPBLENDCAPS_ZERO}
  3637. D3DPBLENDCAPS_ONE = $00000002;
  3638. {$EXTERNALSYM D3DPBLENDCAPS_ONE}
  3639. D3DPBLENDCAPS_SRCCOLOR = $00000004;
  3640. {$EXTERNALSYM D3DPBLENDCAPS_SRCCOLOR}
  3641. D3DPBLENDCAPS_INVSRCCOLOR = $00000008;
  3642. {$EXTERNALSYM D3DPBLENDCAPS_INVSRCCOLOR}
  3643. D3DPBLENDCAPS_SRCALPHA = $00000010;
  3644. {$EXTERNALSYM D3DPBLENDCAPS_SRCALPHA}
  3645. D3DPBLENDCAPS_INVSRCALPHA = $00000020;
  3646. {$EXTERNALSYM D3DPBLENDCAPS_INVSRCALPHA}
  3647. D3DPBLENDCAPS_DESTALPHA = $00000040;
  3648. {$EXTERNALSYM D3DPBLENDCAPS_DESTALPHA}
  3649. D3DPBLENDCAPS_INVDESTALPHA = $00000080;
  3650. {$EXTERNALSYM D3DPBLENDCAPS_INVDESTALPHA}
  3651. D3DPBLENDCAPS_DESTCOLOR = $00000100;
  3652. {$EXTERNALSYM D3DPBLENDCAPS_DESTCOLOR}
  3653. D3DPBLENDCAPS_INVDESTCOLOR = $00000200;
  3654. {$EXTERNALSYM D3DPBLENDCAPS_INVDESTCOLOR}
  3655. D3DPBLENDCAPS_SRCALPHASAT = $00000400;
  3656. {$EXTERNALSYM D3DPBLENDCAPS_SRCALPHASAT}
  3657. D3DPBLENDCAPS_BOTHSRCALPHA = $00000800;
  3658. {$EXTERNALSYM D3DPBLENDCAPS_BOTHSRCALPHA}
  3659. D3DPBLENDCAPS_BOTHINVSRCALPHA = $00001000;
  3660. {$EXTERNALSYM D3DPBLENDCAPS_BOTHINVSRCALPHA}
  3661. D3DPBLENDCAPS_BLENDFACTOR = $00002000; { Supports both D3DBLEND_BLENDFACTOR and D3DBLEND_INVBLENDFACTOR }
  3662. {$EXTERNALSYM D3DPBLENDCAPS_BLENDFACTOR}
  3663. //
  3664. // ShadeCaps
  3665. //
  3666. D3DPSHADECAPS_COLORGOURAUDRGB = $00000008;
  3667. {$EXTERNALSYM D3DPSHADECAPS_COLORGOURAUDRGB}
  3668. D3DPSHADECAPS_SPECULARGOURAUDRGB = $00000200;
  3669. {$EXTERNALSYM D3DPSHADECAPS_SPECULARGOURAUDRGB}
  3670. D3DPSHADECAPS_ALPHAGOURAUDBLEND = $00004000;
  3671. {$EXTERNALSYM D3DPSHADECAPS_ALPHAGOURAUDBLEND}
  3672. D3DPSHADECAPS_FOGGOURAUD = $00080000;
  3673. {$EXTERNALSYM D3DPSHADECAPS_FOGGOURAUD}
  3674. //
  3675. // TextureCaps
  3676. //
  3677. D3DPTEXTURECAPS_PERSPECTIVE = $00000001; { Perspective-correct texturing is supported }
  3678. {$EXTERNALSYM D3DPTEXTURECAPS_PERSPECTIVE}
  3679. D3DPTEXTURECAPS_POW2 = $00000002; { Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. }
  3680. {$EXTERNALSYM D3DPTEXTURECAPS_POW2}
  3681. D3DPTEXTURECAPS_ALPHA = $00000004; { Alpha in texture pixels is supported }
  3682. {$EXTERNALSYM D3DPTEXTURECAPS_ALPHA}
  3683. D3DPTEXTURECAPS_SQUAREONLY = $00000020; { Only square textures are supported }
  3684. {$EXTERNALSYM D3DPTEXTURECAPS_SQUAREONLY}
  3685. D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE = $00000040; { Texture indices are not scaled by the texture size prior to interpolation }
  3686. {$EXTERNALSYM D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE}
  3687. D3DPTEXTURECAPS_ALPHAPALETTE = $00000080; { Device can draw alpha from texture palettes }
  3688. {$EXTERNALSYM D3DPTEXTURECAPS_ALPHAPALETTE}
  3689. // Device can use non-POW2 textures if:
  3690. // 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
  3691. // 2) D3DRS_WRAP(N) is zero for this texture's coordinates
  3692. // 3) mip mapping is not enabled (use magnification filter only)
  3693. D3DPTEXTURECAPS_NONPOW2CONDITIONAL = $00000100;
  3694. {$EXTERNALSYM D3DPTEXTURECAPS_NONPOW2CONDITIONAL}
  3695. D3DPTEXTURECAPS_PROJECTED = $00000400; { Device can do D3DTTFF_PROJECTED }
  3696. {$EXTERNALSYM D3DPTEXTURECAPS_PROJECTED}
  3697. D3DPTEXTURECAPS_CUBEMAP = $00000800; { Device can do cubemap textures }
  3698. {$EXTERNALSYM D3DPTEXTURECAPS_CUBEMAP}
  3699. D3DPTEXTURECAPS_VOLUMEMAP = $00002000; { Device can do volume textures }
  3700. {$EXTERNALSYM D3DPTEXTURECAPS_VOLUMEMAP}
  3701. D3DPTEXTURECAPS_MIPMAP = $00004000; { Device can do mipmapped textures }
  3702. {$EXTERNALSYM D3DPTEXTURECAPS_MIPMAP}
  3703. D3DPTEXTURECAPS_MIPVOLUMEMAP = $00008000; { Device can do mipmapped volume textures }
  3704. {$EXTERNALSYM D3DPTEXTURECAPS_MIPVOLUMEMAP}
  3705. D3DPTEXTURECAPS_MIPCUBEMAP = $00010000; { Device can do mipmapped cube maps }
  3706. {$EXTERNALSYM D3DPTEXTURECAPS_MIPCUBEMAP}
  3707. D3DPTEXTURECAPS_CUBEMAP_POW2 = $00020000; { Device requires that cubemaps be power-of-2 dimension }
  3708. {$EXTERNALSYM D3DPTEXTURECAPS_CUBEMAP_POW2}
  3709. D3DPTEXTURECAPS_VOLUMEMAP_POW2 = $00040000; { Device requires that volume maps be power-of-2 dimension }
  3710. {$EXTERNALSYM D3DPTEXTURECAPS_VOLUMEMAP_POW2}
  3711. D3DPTEXTURECAPS_NOPROJECTEDBUMPENV = $00200000; { Device does not support projected bump env lookup operation
  3712. in programmable and fixed function pixel shaders }
  3713. {$EXTERNALSYM D3DPTEXTURECAPS_NOPROJECTEDBUMPENV}
  3714. //
  3715. // TextureFilterCaps, StretchRectFilterCaps
  3716. //
  3717. D3DPTFILTERCAPS_MINFPOINT = $00000100; { Min Filter }
  3718. {$EXTERNALSYM D3DPTFILTERCAPS_MINFPOINT}
  3719. D3DPTFILTERCAPS_MINFLINEAR = $00000200;
  3720. {$EXTERNALSYM D3DPTFILTERCAPS_MINFLINEAR}
  3721. D3DPTFILTERCAPS_MINFANISOTROPIC = $00000400;
  3722. {$EXTERNALSYM D3DPTFILTERCAPS_MINFANISOTROPIC}
  3723. D3DPTFILTERCAPS_MINFPYRAMIDALQUAD = $00000800;
  3724. {$EXTERNALSYM D3DPTFILTERCAPS_MINFPYRAMIDALQUAD}
  3725. D3DPTFILTERCAPS_MINFGAUSSIANQUAD = $00001000;
  3726. {$EXTERNALSYM D3DPTFILTERCAPS_MINFGAUSSIANQUAD}
  3727. D3DPTFILTERCAPS_MIPFPOINT = $00010000; { Mip Filter }
  3728. {$EXTERNALSYM D3DPTFILTERCAPS_MIPFPOINT}
  3729. D3DPTFILTERCAPS_MIPFLINEAR = $00020000;
  3730. {$EXTERNALSYM D3DPTFILTERCAPS_MIPFLINEAR}
  3731. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  3732. D3DPTFILTERCAPS_CONVOLUTIONMONO = $00040000; { Min and Mag for the convolution mono filter }
  3733. {$EXTERNALSYM D3DPTFILTERCAPS_CONVOLUTIONMONO}
  3734. {$ENDIF}
  3735. D3DPTFILTERCAPS_MAGFPOINT = $01000000; { Mag Filter }
  3736. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFPOINT}
  3737. D3DPTFILTERCAPS_MAGFLINEAR = $02000000;
  3738. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFLINEAR}
  3739. D3DPTFILTERCAPS_MAGFANISOTROPIC = $04000000;
  3740. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFANISOTROPIC}
  3741. D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD = $08000000;
  3742. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD}
  3743. D3DPTFILTERCAPS_MAGFGAUSSIANQUAD = $10000000;
  3744. {$EXTERNALSYM D3DPTFILTERCAPS_MAGFGAUSSIANQUAD}
  3745. //
  3746. // TextureAddressCaps
  3747. //
  3748. D3DPTADDRESSCAPS_WRAP = $00000001;
  3749. {$EXTERNALSYM D3DPTADDRESSCAPS_WRAP}
  3750. D3DPTADDRESSCAPS_MIRROR = $00000002;
  3751. {$EXTERNALSYM D3DPTADDRESSCAPS_MIRROR}
  3752. D3DPTADDRESSCAPS_CLAMP = $00000004;
  3753. {$EXTERNALSYM D3DPTADDRESSCAPS_CLAMP}
  3754. D3DPTADDRESSCAPS_BORDER = $00000008;
  3755. {$EXTERNALSYM D3DPTADDRESSCAPS_BORDER}
  3756. D3DPTADDRESSCAPS_INDEPENDENTUV = $00000010;
  3757. {$EXTERNALSYM D3DPTADDRESSCAPS_INDEPENDENTUV}
  3758. D3DPTADDRESSCAPS_MIRRORONCE = $00000020;
  3759. {$EXTERNALSYM D3DPTADDRESSCAPS_MIRRORONCE}
  3760. //
  3761. // StencilCaps
  3762. //
  3763. D3DSTENCILCAPS_KEEP = $00000001;
  3764. {$EXTERNALSYM D3DSTENCILCAPS_KEEP}
  3765. D3DSTENCILCAPS_ZERO = $00000002;
  3766. {$EXTERNALSYM D3DSTENCILCAPS_ZERO}
  3767. D3DSTENCILCAPS_REPLACE = $00000004;
  3768. {$EXTERNALSYM D3DSTENCILCAPS_REPLACE}
  3769. D3DSTENCILCAPS_INCRSAT = $00000008;
  3770. {$EXTERNALSYM D3DSTENCILCAPS_INCRSAT}
  3771. D3DSTENCILCAPS_DECRSAT = $00000010;
  3772. {$EXTERNALSYM D3DSTENCILCAPS_DECRSAT}
  3773. D3DSTENCILCAPS_INVERT = $00000020;
  3774. {$EXTERNALSYM D3DSTENCILCAPS_INVERT}
  3775. D3DSTENCILCAPS_INCR = $00000040;
  3776. {$EXTERNALSYM D3DSTENCILCAPS_INCR}
  3777. D3DSTENCILCAPS_DECR = $00000080;
  3778. {$EXTERNALSYM D3DSTENCILCAPS_DECR}
  3779. D3DSTENCILCAPS_TWOSIDED = $00000100;
  3780. {$EXTERNALSYM D3DSTENCILCAPS_TWOSIDED}
  3781. //
  3782. // TextureOpCaps
  3783. //
  3784. D3DTEXOPCAPS_DISABLE = $00000001;
  3785. {$EXTERNALSYM D3DTEXOPCAPS_DISABLE}
  3786. D3DTEXOPCAPS_SELECTARG1 = $00000002;
  3787. {$EXTERNALSYM D3DTEXOPCAPS_SELECTARG1}
  3788. D3DTEXOPCAPS_SELECTARG2 = $00000004;
  3789. {$EXTERNALSYM D3DTEXOPCAPS_SELECTARG2}
  3790. D3DTEXOPCAPS_MODULATE = $00000008;
  3791. {$EXTERNALSYM D3DTEXOPCAPS_MODULATE}
  3792. D3DTEXOPCAPS_MODULATE2X = $00000010;
  3793. {$EXTERNALSYM D3DTEXOPCAPS_MODULATE2X}
  3794. D3DTEXOPCAPS_MODULATE4X = $00000020;
  3795. {$EXTERNALSYM D3DTEXOPCAPS_MODULATE4X}
  3796. D3DTEXOPCAPS_ADD = $00000040;
  3797. {$EXTERNALSYM D3DTEXOPCAPS_ADD}
  3798. D3DTEXOPCAPS_ADDSIGNED = $00000080;
  3799. {$EXTERNALSYM D3DTEXOPCAPS_ADDSIGNED}
  3800. D3DTEXOPCAPS_ADDSIGNED2X = $00000100;
  3801. {$EXTERNALSYM D3DTEXOPCAPS_ADDSIGNED2X}
  3802. D3DTEXOPCAPS_SUBTRACT = $00000200;
  3803. {$EXTERNALSYM D3DTEXOPCAPS_SUBTRACT}
  3804. D3DTEXOPCAPS_ADDSMOOTH = $00000400;
  3805. {$EXTERNALSYM D3DTEXOPCAPS_ADDSMOOTH}
  3806. D3DTEXOPCAPS_BLENDDIFFUSEALPHA = $00000800;
  3807. {$EXTERNALSYM D3DTEXOPCAPS_BLENDDIFFUSEALPHA}
  3808. D3DTEXOPCAPS_BLENDTEXTUREALPHA = $00001000;
  3809. {$EXTERNALSYM D3DTEXOPCAPS_BLENDTEXTUREALPHA}
  3810. D3DTEXOPCAPS_BLENDFACTORALPHA = $00002000;
  3811. {$EXTERNALSYM D3DTEXOPCAPS_BLENDFACTORALPHA}
  3812. D3DTEXOPCAPS_BLENDTEXTUREALPHAPM = $00004000;
  3813. {$EXTERNALSYM D3DTEXOPCAPS_BLENDTEXTUREALPHAPM}
  3814. D3DTEXOPCAPS_BLENDCURRENTALPHA = $00008000;
  3815. {$EXTERNALSYM D3DTEXOPCAPS_BLENDCURRENTALPHA}
  3816. D3DTEXOPCAPS_PREMODULATE = $00010000;
  3817. {$EXTERNALSYM D3DTEXOPCAPS_PREMODULATE}
  3818. D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR = $00020000;
  3819. {$EXTERNALSYM D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR}
  3820. D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA = $00040000;
  3821. {$EXTERNALSYM D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA}
  3822. D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR = $00080000;
  3823. {$EXTERNALSYM D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR}
  3824. D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA = $00100000;
  3825. {$EXTERNALSYM D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA}
  3826. D3DTEXOPCAPS_BUMPENVMAP = $00200000;
  3827. {$EXTERNALSYM D3DTEXOPCAPS_BUMPENVMAP}
  3828. D3DTEXOPCAPS_BUMPENVMAPLUMINANCE = $00400000;
  3829. {$EXTERNALSYM D3DTEXOPCAPS_BUMPENVMAPLUMINANCE}
  3830. D3DTEXOPCAPS_DOTPRODUCT3 = $00800000;
  3831. {$EXTERNALSYM D3DTEXOPCAPS_DOTPRODUCT3}
  3832. D3DTEXOPCAPS_MULTIPLYADD = $01000000;
  3833. {$EXTERNALSYM D3DTEXOPCAPS_MULTIPLYADD}
  3834. D3DTEXOPCAPS_LERP = $02000000;
  3835. {$EXTERNALSYM D3DTEXOPCAPS_LERP}
  3836. //
  3837. // FVFCaps
  3838. //
  3839. D3DFVFCAPS_TEXCOORDCOUNTMASK = $0000ffff; { mask for texture coordinate count field }
  3840. {$EXTERNALSYM D3DFVFCAPS_TEXCOORDCOUNTMASK}
  3841. D3DFVFCAPS_DONOTSTRIPELEMENTS = $00080000; { Device prefers that vertex elements not be stripped }
  3842. {$EXTERNALSYM D3DFVFCAPS_DONOTSTRIPELEMENTS}
  3843. D3DFVFCAPS_PSIZE = $00100000; { Device can receive point size }
  3844. {$EXTERNALSYM D3DFVFCAPS_PSIZE}
  3845. //
  3846. // VertexProcessingCaps
  3847. //
  3848. D3DVTXPCAPS_TEXGEN = $00000001; { device can do texgen }
  3849. {$EXTERNALSYM D3DVTXPCAPS_TEXGEN}
  3850. D3DVTXPCAPS_MATERIALSOURCE7 = $00000002; { device can do DX7-level colormaterialsource ops }
  3851. {$EXTERNALSYM D3DVTXPCAPS_MATERIALSOURCE7}
  3852. D3DVTXPCAPS_DIRECTIONALLIGHTS = $00000008; { device can do directional lights }
  3853. {$EXTERNALSYM D3DVTXPCAPS_DIRECTIONALLIGHTS}
  3854. D3DVTXPCAPS_POSITIONALLIGHTS = $00000010; { device can do positional lights (includes point and spot) }
  3855. {$EXTERNALSYM D3DVTXPCAPS_POSITIONALLIGHTS}
  3856. D3DVTXPCAPS_LOCALVIEWER = $00000020; { device can do local viewer }
  3857. {$EXTERNALSYM D3DVTXPCAPS_LOCALVIEWER}
  3858. D3DVTXPCAPS_TWEENING = $00000040; { device can do vertex tweening }
  3859. {$EXTERNALSYM D3DVTXPCAPS_TWEENING}
  3860. D3DVTXPCAPS_TEXGEN_SPHEREMAP = $00000100; { device supports D3DTSS_TCI_SPHEREMAP }
  3861. {$EXTERNALSYM D3DVTXPCAPS_TEXGEN_SPHEREMAP}
  3862. D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER = $00000200; { device does not support TexGen in non-local
  3863. viewer mode }
  3864. {$EXTERNALSYM D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER}
  3865. //
  3866. // DevCaps2
  3867. //
  3868. D3DDEVCAPS2_STREAMOFFSET = $00000001; { Device supports offsets in streams. Must be set by DX9 drivers }
  3869. {$EXTERNALSYM D3DDEVCAPS2_STREAMOFFSET}
  3870. D3DDEVCAPS2_DMAPNPATCH = $00000002; { Device supports displacement maps for N-Patches}
  3871. {$EXTERNALSYM D3DDEVCAPS2_DMAPNPATCH}
  3872. D3DDEVCAPS2_ADAPTIVETESSRTPATCH = $00000004; { Device supports adaptive tesselation of RT-patches}
  3873. {$EXTERNALSYM D3DDEVCAPS2_ADAPTIVETESSRTPATCH}
  3874. D3DDEVCAPS2_ADAPTIVETESSNPATCH = $00000008; { Device supports adaptive tesselation of N-patches}
  3875. {$EXTERNALSYM D3DDEVCAPS2_ADAPTIVETESSNPATCH}
  3876. D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES = $00000010; { Device supports StretchRect calls with a texture as the source}
  3877. {$EXTERNALSYM D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES}
  3878. D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH = $00000020; { Device supports presampled displacement maps for N-Patches }
  3879. {$EXTERNALSYM D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH}
  3880. D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET = $00000040; { Vertex elements in a vertex declaration can share the same stream offset }
  3881. {$EXTERNALSYM D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET}
  3882. //
  3883. // DeclTypes
  3884. //
  3885. D3DDTCAPS_UBYTE4 = $00000001;
  3886. {$EXTERNALSYM D3DDTCAPS_UBYTE4}
  3887. D3DDTCAPS_UBYTE4N = $00000002;
  3888. {$EXTERNALSYM D3DDTCAPS_UBYTE4N}
  3889. D3DDTCAPS_SHORT2N = $00000004;
  3890. {$EXTERNALSYM D3DDTCAPS_SHORT2N}
  3891. D3DDTCAPS_SHORT4N = $00000008;
  3892. {$EXTERNALSYM D3DDTCAPS_SHORT4N}
  3893. D3DDTCAPS_USHORT2N = $00000010;
  3894. {$EXTERNALSYM D3DDTCAPS_USHORT2N}
  3895. D3DDTCAPS_USHORT4N = $00000020;
  3896. {$EXTERNALSYM D3DDTCAPS_USHORT4N}
  3897. D3DDTCAPS_UDEC3 = $00000040;
  3898. {$EXTERNALSYM D3DDTCAPS_UDEC3}
  3899. D3DDTCAPS_DEC3N = $00000080;
  3900. {$EXTERNALSYM D3DDTCAPS_DEC3N}
  3901. D3DDTCAPS_FLOAT16_2 = $00000100;
  3902. {$EXTERNALSYM D3DDTCAPS_FLOAT16_2}
  3903. D3DDTCAPS_FLOAT16_4 = $00000200;
  3904. {$EXTERNALSYM D3DDTCAPS_FLOAT16_4}
  3905. (*==========================================================================;
  3906. *
  3907. * Copyright (C) Microsoft Corporation. All Rights Reserved.
  3908. *
  3909. * File: d3d9.h
  3910. * Content: Direct3D include file
  3911. *
  3912. ****************************************************************************)
  3913. (* This identifier is passed to Direct3DCreate9 in order to ensure that an
  3914. * application was built against the correct header files. This number is
  3915. * incremented whenever a header (or other) change would require applications
  3916. * to be rebuilt. If the version doesn't match, Direct3DCreate9 will fail.
  3917. * (The number itself has no meaning.)*)
  3918. const
  3919. D3D_SDK_VERSION = (32 or $80000000);
  3920. D3D9b_SDK_VERSION = (31 or $80000000);
  3921. {$EXTERNALSYM D3D_SDK_VERSION}
  3922. {$EXTERNALSYM D3D9b_SDK_VERSION}
  3923. type
  3924. HMONITOR = THandle;
  3925. {$EXTERNALSYM HMONITOR}
  3926. (*
  3927. * Direct3D interfaces
  3928. *)
  3929. // forward interfaces declaration
  3930. IDirect3D9 = interface;
  3931. IDirect3DDevice9 = interface;
  3932. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  3933. IDirect3DDevice9Ex = interface;
  3934. {$ENDIF}
  3935. IDirect3DStateBlock9 = interface;
  3936. IDirect3DVertexDeclaration9 = interface;
  3937. IDirect3DVertexShader9 = interface;
  3938. IDirect3DPixelShader9 = interface;
  3939. IDirect3DResource9 = interface;
  3940. IDirect3DBaseTexture9 = interface;
  3941. IDirect3DTexture9 = interface;
  3942. IDirect3DVolumeTexture9 = interface;
  3943. IDirect3DCubeTexture9 = interface;
  3944. IDirect3DVertexBuffer9 = interface;
  3945. IDirect3DIndexBuffer9 = interface;
  3946. IDirect3DSurface9 = interface;
  3947. IDirect3DVolume9 = interface;
  3948. IDirect3DSwapChain9 = interface;
  3949. IDirect3DQuery9 = interface;
  3950. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D9);'}
  3951. {$EXTERNALSYM IDirect3D9}
  3952. IDirect3D9 = interface(IUnknown)
  3953. ['{81BDCBCA-64D4-426d-AE8D-AD0147F4275C}']
  3954. (*** IDirect3D9 methods ***)
  3955. function RegisterSoftwareDevice(pInitializeFunction: Pointer): HResult; stdcall;
  3956. function GetAdapterCount: LongWord; stdcall;
  3957. function GetAdapterIdentifier(Adapter: LongWord; Flags: DWord; out pIdentifier: TD3DAdapterIdentifier9): HResult; stdcall;
  3958. function GetAdapterModeCount(Adapter: LongWord; Format: TD3DFormat): LongWord; stdcall;
  3959. function EnumAdapterModes(Adapter: LongWord; Format: TD3DFormat; Mode: LongWord; out pMode: TD3DDisplayMode): HResult; stdcall;
  3960. function GetAdapterDisplayMode(Adapter: LongWord; out pMode: TD3DDisplayMode): HResult; stdcall;
  3961. function CheckDeviceType(Adapter: LongWord; CheckType: TD3DDevType; AdapterFormat, BackBufferFormat: TD3DFormat; Windowed: BOOL): HResult; stdcall;
  3962. function CheckDeviceFormat(Adapter: LongWord; DeviceType: TD3DDevType; AdapterFormat: TD3DFormat; Usage: DWord; RType: TD3DResourceType; CheckFormat: TD3DFormat): HResult; stdcall;
  3963. function CheckDeviceMultiSampleType(Adapter: LongWord; DeviceType: TD3DDevType; SurfaceFormat: TD3DFormat; Windowed: BOOL; MultiSampleType: TD3DMultiSampleType; pQualityLevels: PDWORD): HResult; stdcall;
  3964. function CheckDepthStencilMatch(Adapter: LongWord; DeviceType: TD3DDevType; AdapterFormat, RenderTargetFormat, DepthStencilFormat: TD3DFormat): HResult; stdcall;
  3965. function CheckDeviceFormatConversion(Adapter: LongWord; DeviceType: TD3DDevType; SourceFormat, TargetFormat: TD3DFormat): HResult; stdcall;
  3966. function GetDeviceCaps(Adapter: LongWord; DeviceType: TD3DDevType; out pCaps: TD3DCaps9): HResult; stdcall;
  3967. function GetAdapterMonitor(Adapter: LongWord): HMONITOR; stdcall;
  3968. function CreateDevice(Adapter: LongWord; DeviceType: TD3DDevType; hFocusWindow: HWND; BehaviorFlags: DWord; pPresentationParameters: PD3DPresentParameters; out ppReturnedDeviceInterface: IDirect3DDevice9): HResult; stdcall;
  3969. end;
  3970. {$EXTERNALSYM IDirect3D9Helper}
  3971. IDirect3D9Helper = class
  3972. (*** helper information ***)
  3973. szVersionString: PWideChar;
  3974. end;
  3975. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  3976. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D9Ex);'}
  3977. {$EXTERNALSYM IDirect3D9Ex}
  3978. IDirect3D9Ex = interface(IDirect3D9)
  3979. ['{02177241-69FC-400C-8FF1-93A44DF6861D}']
  3980. (*** IDirect3D9Ex methods ***)
  3981. function GetAdapterModeCountEx(Adapter: LongWord; const pFilter: PD3DDisplayModeFilter): LongWord; stdcall;
  3982. function EnumAdapterModesEx(Adapter: LongWord; const pFilter: PD3DDisplayModeFilter; Mode: LongWord; pMode: PD3DDisplayModeEx): HResult; stdcall;
  3983. function GetAdapterDisplayModeEx(Adapter: LongWord; pMode: PD3DDisplayModeEx; pRotation: PD3DDisplayRotation): HResult; stdcall;
  3984. function CreateDeviceEx(Adapter: LongWord; DeviceType: TD3DDevType; hFocusWindow: HWND; BehaviorFlags: DWORD; pPresentationParameters: PD3DPresentParameters; pFullscreenDisplayMode: PD3DDisplayModeEx; out ppReturnedDeviceInterface: IDirect3DDevice9Ex): HResult; stdcall;
  3985. function GetAdapterLUID(Adapter: LongWord; pLUID: PLargeInteger{*LUID}): HResult; stdcall;
  3986. end;
  3987. {$ENDIF}
  3988. { SwapChain }
  3989. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice9);'}
  3990. {$EXTERNALSYM IDirect3DDevice9}
  3991. IDirect3DDevice9 = interface(IUnknown)
  3992. ['{D0223B96-BF7A-43fd-92BD-A43B0D82B9EB}']
  3993. (*** IDirect3DDevice9 methods ***)
  3994. function TestCooperativeLevel: HResult; stdcall;
  3995. function GetAvailableTextureMem: LongWord; stdcall;
  3996. function EvictManagedResources: HResult; stdcall;
  3997. function GetDirect3D(out ppD3D9: IDirect3D9): HResult; stdcall;
  3998. function GetDeviceCaps(out pCaps: TD3DCaps9): HResult; stdcall;
  3999. function GetDisplayMode(iSwapChain: LongWord; out pMode: TD3DDisplayMode): HResult; stdcall;
  4000. function GetCreationParameters(out pParameters: TD3DDeviceCreationParameters): HResult; stdcall;
  4001. function SetCursorProperties(XHotSpot, YHotSpot: LongWord; pCursorBitmap: IDirect3DSurface9): HResult; stdcall;
  4002. procedure SetCursorPosition(XScreenSpace, YScreenSpace: LongWord; Flags: DWord); stdcall;
  4003. function ShowCursor(bShow: BOOL): BOOL; stdcall;
  4004. function CreateAdditionalSwapChain(const pPresentationParameters: TD3DPresentParameters; out pSwapChain: IDirect3DSwapChain9): HResult; stdcall;
  4005. function GetSwapChain(iSwapChain: LongWord; out pSwapChain: IDirect3DSwapChain9): HResult; stdcall;
  4006. function GetNumberOfSwapChains: LongWord; stdcall;
  4007. function Reset(const pPresentationParameters: TD3DPresentParameters): HResult; stdcall;
  4008. function Present(pSourceRect, pDestRect: PRect; hDestWindowOverride: HWND; pDirtyRegion: PRgnData): HResult; stdcall;
  4009. function GetBackBuffer(iSwapChain: LongWord; iBackBuffer: LongWord; _Type: TD3DBackBufferType; out ppBackBuffer: IDirect3DSurface9): HResult; stdcall;
  4010. function GetRasterStatus(iSwapChain: LongWord; out pRasterStatus: TD3DRasterStatus): HResult; stdcall;
  4011. function SetDialogBoxMode(bEnableDialogs: BOOL): HResult; stdcall;
  4012. procedure SetGammaRamp(iSwapChain: LongWord; Flags: DWord; const pRamp: TD3DGammaRamp); stdcall;
  4013. procedure GetGammaRamp(iSwapChain: LongWord; out pRamp: TD3DGammaRamp); stdcall;
  4014. function CreateTexture(Width, Height, Levels: LongWord; Usage: DWord; Format: TD3DFormat; Pool: TD3DPool; out ppTexture: IDirect3DTexture9; pSharedHandle: PHandle): HResult; stdcall;
  4015. function CreateVolumeTexture(Width, Height, Depth, Levels: LongWord; Usage: DWord; Format: TD3DFormat; Pool: TD3DPool; out ppVolumeTexture: IDirect3DVolumeTexture9; pSharedHandle: PHandle): HResult; stdcall;
  4016. function CreateCubeTexture(EdgeLength, Levels: LongWord; Usage: DWord; Format: TD3DFormat; Pool: TD3DPool; out ppCubeTexture: IDirect3DCubeTexture9; pSharedHandle: PHandle): HResult; stdcall;
  4017. function CreateVertexBuffer(Length: LongWord; Usage, FVF: DWord; Pool: TD3DPool; out ppVertexBuffer: IDirect3DVertexBuffer9; pSharedHandle: PHandle): HResult; stdcall;
  4018. function CreateIndexBuffer(Length: LongWord; Usage: DWord; Format: TD3DFormat; Pool: TD3DPool; out ppIndexBuffer: IDirect3DIndexBuffer9; pSharedHandle: PHandle): HResult; stdcall;
  4019. function CreateRenderTarget(Width, Height: LongWord; Format: TD3DFormat; MultiSample: TD3DMultiSampleType; MultisampleQuality: DWORD; Lockable: BOOL; out ppSurface: IDirect3DSurface9; pSharedHandle: PHandle): HResult; stdcall;
  4020. function CreateDepthStencilSurface(Width, Height: LongWord; Format: TD3DFormat; MultiSample: TD3DMultiSampleType; MultisampleQuality: DWORD; Discard: BOOL; out ppSurface: IDirect3DSurface9; pSharedHandle: PHandle): HResult; stdcall;
  4021. function UpdateSurface(pSourceSurface: IDirect3DSurface9; pSourceRect: PRect; pDestinationSurface: IDirect3DSurface9; pDestPoint: PPoint): HResult; stdcall;
  4022. function UpdateTexture(pSourceTexture, pDestinationTexture: IDirect3DBaseTexture9): HResult; stdcall;
  4023. function GetRenderTargetData(pRenderTarget, pDestSurface: IDirect3DSurface9): HResult; stdcall;
  4024. function GetFrontBufferData(iSwapChain: LongWord; pDestSurface: IDirect3DSurface9): HResult; stdcall;
  4025. function StretchRect(pSourceSurface: IDirect3DSurface9; pSourceRect: PRect; pDestSurface: IDirect3DSurface9; pDestRect: PRect; Filter: TD3DTextureFilterType): HResult; stdcall;
  4026. function ColorFill(pSurface: IDirect3DSurface9; pRect: PRect; color: TD3DColor): HResult; stdcall;
  4027. function CreateOffscreenPlainSurface(Width, Height: LongWord; Format: TD3DFormat; Pool: TD3DPool; out ppSurface: IDirect3DSurface9; pSharedHandle: PHandle): HResult; stdcall;
  4028. function SetRenderTarget(RenderTargetIndex: DWORD; pRenderTarget: IDirect3DSurface9): HResult; stdcall;
  4029. function GetRenderTarget(RenderTargetIndex: DWORD; out ppRenderTarget: IDirect3DSurface9): HResult; stdcall;
  4030. function SetDepthStencilSurface(pNewZStencil: IDirect3DSurface9): HResult; stdcall;
  4031. function GetDepthStencilSurface(out ppZStencilSurface: IDirect3DSurface9): HResult; stdcall;
  4032. function BeginScene: HResult; stdcall;
  4033. function EndScene: HResult; stdcall;
  4034. function Clear(Count: DWord; pRects: PD3DRect; Flags: DWord; Color: TD3DColor; Z: Single; Stencil: DWord): HResult; stdcall;
  4035. function SetTransform(State: TD3DTransformStateType; const pMatrix: TD3DMatrix): HResult; stdcall;
  4036. function GetTransform(State: TD3DTransformStateType; out pMatrix: TD3DMatrix): HResult; stdcall;
  4037. function MultiplyTransform(State: TD3DTransformStateType; const pMatrix: TD3DMatrix): HResult; stdcall;
  4038. function SetViewport(const pViewport: TD3DViewport9): HResult; stdcall;
  4039. function GetViewport(out pViewport: TD3DViewport9): HResult; stdcall;
  4040. function SetMaterial(const pMaterial: TD3DMaterial9): HResult; stdcall;
  4041. function GetMaterial(out pMaterial: TD3DMaterial9): HResult; stdcall;
  4042. function SetLight(Index: DWord; const pLight: TD3DLight9): HResult; stdcall;
  4043. function GetLight(Index: DWord; out pLight: TD3DLight9): HResult; stdcall;
  4044. function LightEnable(Index: DWord; Enable: BOOL): HResult; stdcall;
  4045. function GetLightEnable(Index: DWord; out pEnable: BOOL): HResult; stdcall;
  4046. function SetClipPlane(Index: DWord; pPlane: PSingle): HResult; stdcall;
  4047. function GetClipPlane(Index: DWord; pPlane: PSingle): HResult; stdcall;
  4048. function SetRenderState(State: TD3DRenderStateType; Value: DWord): HResult; stdcall;
  4049. function GetRenderState(State: TD3DRenderStateType; out pValue: DWord): HResult; stdcall;
  4050. function CreateStateBlock(_Type: TD3DStateBlockType; out ppSB: IDirect3DStateBlock9): HResult; stdcall;
  4051. function BeginStateBlock: HResult; stdcall;
  4052. function EndStateBlock(out ppSB: IDirect3DStateBlock9): HResult; stdcall;
  4053. function SetClipStatus(const pClipStatus: TD3DClipStatus9): HResult; stdcall;
  4054. function GetClipStatus(out pClipStatus: TD3DClipStatus9): HResult; stdcall;
  4055. function GetTexture(Stage: DWord; out ppTexture: IDirect3DBaseTexture9): HResult; stdcall;
  4056. function SetTexture(Stage: DWord; pTexture: IDirect3DBaseTexture9): HResult; stdcall;
  4057. function GetTextureStageState(Stage: DWord; _Type: TD3DTextureStageStateType; out pValue: DWord): HResult; stdcall;
  4058. function SetTextureStageState(Stage: DWord; _Type: TD3DTextureStageStateType; Value: DWord): HResult; stdcall;
  4059. function GetSamplerState(Sampler: DWORD; _Type: TD3DSamplerStateType; out pValue: DWORD): HResult; stdcall;
  4060. function SetSamplerState(Sampler: DWORD; _Type: TD3DSamplerStateType; Value: DWORD): HResult; stdcall;
  4061. function ValidateDevice(out pNumPasses: DWord): HResult; stdcall;
  4062. function SetPaletteEntries(PaletteNumber: LongWord; pEntries: pPaletteEntry): HResult; stdcall;
  4063. function GetPaletteEntries(PaletteNumber: LongWord; pEntries: pPaletteEntry): HResult; stdcall;
  4064. function SetCurrentTexturePalette(PaletteNumber: LongWord): HResult; stdcall;
  4065. function GetCurrentTexturePalette(out PaletteNumber: LongWord): HResult; stdcall;
  4066. function SetScissorRect(pRect: PRect): HResult; stdcall;
  4067. function GetScissorRect(out pRect: TRect): HResult; stdcall;
  4068. function SetSoftwareVertexProcessing(bSoftware: BOOL): HResult; stdcall;
  4069. function GetSoftwareVertexProcessing: BOOL; stdcall;
  4070. function SetNPatchMode(nSegments: Single): HResult; stdcall;
  4071. function GetNPatchMode: Single; stdcall;
  4072. function DrawPrimitive(PrimitiveType: TD3DPrimitiveType; StartVertex, PrimitiveCount: LongWord): HResult; stdcall;
  4073. function DrawIndexedPrimitive(_Type: TD3DPrimitiveType; BaseVertexIndex: Integer; MinVertexIndex, NumVertices, startIndex, primCount: LongWord): HResult; stdcall;
  4074. function DrawPrimitiveUP(PrimitiveType: TD3DPrimitiveType; PrimitiveCount: LongWord; const pVertexStreamZeroData; VertexStreamZeroStride: LongWord): HResult; stdcall;
  4075. function DrawIndexedPrimitiveUP(PrimitiveType: TD3DPrimitiveType; MinVertexIndex, NumVertice, PrimitiveCount: LongWord; const pIndexData; IndexDataFormat: TD3DFormat; const pVertexStreamZeroData; VertexStreamZeroStride: LongWord): HResult; stdcall;
  4076. function ProcessVertices(SrcStartIndex, DestIndex, VertexCount: LongWord; pDestBuffer: IDirect3DVertexBuffer9; pVertexDecl: IDirect3DVertexDeclaration9; Flags: DWord): HResult; stdcall;
  4077. function CreateVertexDeclaration(pVertexElements: PD3DVertexElement9; out ppDecl: IDirect3DVertexDeclaration9): HResult; stdcall;
  4078. function SetVertexDeclaration(pDecl: IDirect3DVertexDeclaration9): HResult; stdcall;
  4079. function GetVertexDeclaration(out ppDecl: IDirect3DVertexDeclaration9): HResult; stdcall;
  4080. function SetFVF(FVF: DWORD): HResult; stdcall;
  4081. function GetFVF(out FVF: DWORD): HResult; stdcall;
  4082. function CreateVertexShader(pFunction: PDWord; out ppShader: IDirect3DVertexShader9): HResult; stdcall;
  4083. function SetVertexShader(pShader: IDirect3DVertexShader9): HResult; stdcall;
  4084. function GetVertexShader(out ppShader: IDirect3DVertexShader9): HResult; stdcall;
  4085. function SetVertexShaderConstantF(StartRegister: LongWord; pConstantData: PSingle; Vector4fCount: LongWord): HResult; stdcall;
  4086. function GetVertexShaderConstantF(StartRegister: LongWord; pConstantData: PSingle; Vector4fCount: LongWord): HResult; stdcall;
  4087. function SetVertexShaderConstantI(StartRegister: LongWord; pConstantData: PInteger; Vector4iCount: LongWord): HResult; stdcall;
  4088. function GetVertexShaderConstantI(StartRegister: LongWord; pConstantData: PInteger; Vector4iCount: LongWord): HResult; stdcall;
  4089. function SetVertexShaderConstantB(StartRegister: LongWord; pConstantData: PBOOL; BoolCount: LongWord): HResult; stdcall;
  4090. function GetVertexShaderConstantB(StartRegister: LongWord; pConstantData: PBOOL; BoolCount: LongWord): HResult; stdcall;
  4091. function SetStreamSource(StreamNumber: LongWord; pStreamData: IDirect3DVertexBuffer9; OffsetInBytes, Stride: LongWord): HResult; stdcall;
  4092. function GetStreamSource(StreamNumber: LongWord; out ppStreamData: IDirect3DVertexBuffer9; out pOffsetInBytes, pStride: LongWord): HResult; stdcall;
  4093. function SetStreamSourceFreq(StreamNumber: LongWord; Setting: LongWord): HResult; stdcall;
  4094. function GetStreamSourceFreq(StreamNumber: LongWord; out Setting: LongWord): HResult; stdcall;
  4095. function SetIndices(pIndexData: IDirect3DIndexBuffer9): HResult; stdcall;
  4096. function GetIndices(out ppIndexData: IDirect3DIndexBuffer9): HResult; stdcall;
  4097. function CreatePixelShader(pFunction: PDWord; out ppShader: IDirect3DPixelShader9): HResult; stdcall;
  4098. function SetPixelShader(pShader: IDirect3DPixelShader9): HResult; stdcall;
  4099. function GetPixelShader(out ppShader: IDirect3DPixelShader9): HResult; stdcall;
  4100. function SetPixelShaderConstantF(StartRegister: LongWord; pConstantData: PSingle; Vector4fCount: LongWord): HResult; stdcall;
  4101. function GetPixelShaderConstantF(StartRegister: LongWord; pConstantData: PSingle; Vector4fCount: LongWord): HResult; stdcall;
  4102. function SetPixelShaderConstantI(StartRegister: LongWord; pConstantData: PInteger; Vector4iCount: LongWord): HResult; stdcall;
  4103. function GetPixelShaderConstantI(StartRegister: LongWord; pConstantData: PInteger; Vector4iCount: LongWord): HResult; stdcall;
  4104. function SetPixelShaderConstantB(StartRegister: LongWord; pConstantData: PBOOL; BoolCount: LongWord): HResult; stdcall;
  4105. function GetPixelShaderConstantB(StartRegister: LongWord; pConstantData: PBOOL; BoolCount: LongWord): HResult; stdcall;
  4106. function DrawRectPatch(Handle: LongWord; pNumSegs: PSingle; pTriPatchInfo: PD3DRectPatchInfo): HResult; stdcall;
  4107. function DrawTriPatch(Handle: LongWord; pNumSegs: PSingle; pTriPatchInfo: PD3DTriPatchInfo): HResult; stdcall;
  4108. function DeletePatch(Handle: LongWord): HResult; stdcall;
  4109. function CreateQuery(_Type: TD3DQueryType; out ppQuery: IDirect3DQuery9): HResult; stdcall;
  4110. end;
  4111. {$EXTERNALSYM IDirect3DDevice9Helper}
  4112. IDirect3DDevice9Helper = class
  4113. (*** helper information ***)
  4114. CreationParameters: TD3DDeviceCreationParameters;
  4115. PresentParameters: TD3DPresentParameters;
  4116. DisplayMode: TD3DDisplayMode;
  4117. Caps: TD3DCaps9;
  4118. AvailableTextureMem: LongWord;
  4119. SwapChains: LongWord;
  4120. Textures: LongWord;
  4121. VertexBuffers: LongWord;
  4122. IndexBuffers: LongWord;
  4123. VertexShaders: LongWord;
  4124. PixelShaders: LongWord;
  4125. Viewport: TD3DViewport9;
  4126. ProjectionMatrix: TD3DMatrix;
  4127. ViewMatrix: TD3DMatrix;
  4128. WorldMatrix: TD3DMatrix;
  4129. TextureMatrices: array[0..7] of TD3DMatrix;
  4130. FVF: DWORD;
  4131. VertexSize: LongWord;
  4132. VertexShaderVersion: DWORD;
  4133. PixelShaderVersion: DWORD;
  4134. SoftwareVertexProcessing: BOOL;
  4135. Material: TD3DMaterial9;
  4136. Lights: array[0..15] of TD3DLight9;
  4137. LightsEnabled: array[0..15] of BOOL;
  4138. GammaRamp: TD3DGammaRamp;
  4139. ScissorRect: TRect;
  4140. DialogBoxMode: BOOL;
  4141. end;
  4142. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4143. PIDirect3DResource9 = ^IDirect3DResource9;
  4144. {$EXTERNALSYM PIDirect3DResource9}
  4145. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice9Ex);'}
  4146. {$EXTERNALSYM IDirect3DDevice9Ex}
  4147. IDirect3DDevice9Ex = interface(IDirect3DDevice9)
  4148. ['{B18B10CE-2649-405a-870F-95F777D4313A}']
  4149. (*** IDirect3DDevice9Ex methods ***)
  4150. function SetConvolutionMonoKernel(Width, Height: LongWord; rows, columns: PSingle): HResult; stdcall;
  4151. function ComposeRects(pSrc, pDst: IDirect3DSurface9; pSrcRectDescs: IDirect3DVertexBuffer9; NumRects: LongWord; pDstRectDescs: IDirect3DVertexBuffer9; Operation: TD3DComposeRectsOp; Xoffset, Yoffset: Integer): HResult; stdcall;
  4152. function PresentEx(const pSourceRect, pDestRect: PRect; hDestWindowOverride: HWND; const pDirtyRegion: PRgnData; dwFlags: DWORD): HResult; stdcall;
  4153. function GetGPUThreadPriority(out pPriority: Integer): HResult; stdcall;
  4154. function SetGPUThreadPriority(Priority: Integer): HResult; stdcall;
  4155. function WaitForVBlank(iSwapChain: LongWord): HResult; stdcall;
  4156. function CheckResourceResidency(pResourceArray: PIDirect3DResource9; NumResources: LongWord): HResult; stdcall;
  4157. function SetMaximumFrameLatency(MaxLatency: LongWord): HResult; stdcall;
  4158. function GetMaximumFrameLatency(out pMaxLatency: LongWord): HResult; stdcall;
  4159. function CheckDeviceState(hDestinationWindow: HWND): HResult; stdcall;
  4160. function CreateRenderTargetEx(Width, Height: LongWord; Format: TD3DFormat; MultiSample: TD3DMultiSampleType; MultisampleQuality: DWORD; Lockable: BOOL; out ppSurface: IDirect3DSurface9; pSharedHandle: PHandle; Usage: DWORD): HResult; stdcall;
  4161. function CreateOffscreenPlainSurfaceEx(Width, Height: LongWord; Format: TD3DFormat; Pool: TD3DPool; out ppSurface: IDirect3DSurface9; pSharedHandle: PHandle; Usage: DWORD): HResult; stdcall;
  4162. function CreateDepthStencilSurfaceEx(Width, Height: LongWord; Format: TD3DFormat; MultiSample: TD3DMultiSampleType; MultisampleQuality: DWORD; Discard: BOOL; out ppSurface: IDirect3DSurface9; pSharedHandle: PHandle; Usage: DWORD): HResult; stdcall;
  4163. function ResetEx(const pPresentationParameters: TD3DPresentParameters; const pFullscreenDisplayMode: TD3DDisplayModeEx): HResult; stdcall;
  4164. function GetDisplayModeEx(iSwapChain: LongWord; pMode: PD3DDisplayModeEx; pRotation: PD3DDisplayRotation): HResult; stdcall;
  4165. end;
  4166. {$ENDIF}
  4167. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DStateBlock9);'}
  4168. {$EXTERNALSYM IDirect3DStateBlock9}
  4169. IDirect3DStateBlock9 = interface(IUnknown)
  4170. ['{B07C4FE5-310D-4ba8-A23C-4F0F206F218B}']
  4171. (*** IDirect3DStateBlock9 methods ***)
  4172. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4173. function Capture: HResult; stdcall;
  4174. function Apply: HResult; stdcall;
  4175. end;
  4176. {$EXTERNALSYM IDirect3DStateBlock9Helper}
  4177. IDirect3DStateBlock9Helper = class
  4178. (*** helper information ***)
  4179. CreationCallStack: PWideChar;
  4180. end;
  4181. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DSwapChain9);'}
  4182. {$EXTERNALSYM IDirect3DSwapChain9}
  4183. IDirect3DSwapChain9 = interface(IUnknown)
  4184. ['{794950F2-ADFC-458a-905E-10A10B0B503B}']
  4185. (*** IDirect3DSwapChain9 methods ***)
  4186. function Present(pSourceRect, pDestRect: PRect; hDestWindowOverride: HWND; pDirtyRegion: PRgnData; dwFlags: DWORD): HResult; stdcall;
  4187. function GetFrontBufferData(pDestSurface: IDirect3DSurface9): HResult; stdcall;
  4188. function GetBackBuffer(iBackBuffer: LongWord; _Type: TD3DBackBufferType; out ppBackBuffer: IDirect3DSurface9): HResult; stdcall;
  4189. function GetRasterStatus(out pRasterStatus: TD3DRasterStatus): HResult; stdcall;
  4190. function GetDisplayMode(out pMode: TD3DDisplayMode): HResult; stdcall;
  4191. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4192. function GetPresentParameters(out pPresentationParameters: TD3DPresentParameters): HResult; stdcall;
  4193. end;
  4194. {$EXTERNALSYM IDirect3DSwapChain9Helper}
  4195. IDirect3DSwapChain9Helper = class
  4196. (*** helper information ***)
  4197. PresentParameters: TD3DPresentParameters;
  4198. DisplayMode: TD3DDisplayMode;
  4199. CreationCallStack: PWideChar;
  4200. end;
  4201. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4202. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DSwapChain9Ex);'}
  4203. {$EXTERNALSYM IDirect3DSwapChain9Ex}
  4204. IDirect3DSwapChain9Ex = interface(IDirect3DSwapChain9)
  4205. ['{91886CAF-1C3D-4d2e-A0AB-3E4C7D8D3303}']
  4206. (*** IDirect3DSwapChain9Ex methods ***)
  4207. function GetLastPresentCount(out pLastPresentCount: LongWord): HResult; stdcall;
  4208. function GetPresentStats(out pPresentationStatistics: TD3DPresentStats): HResult; stdcall;
  4209. function GetDisplayModeEx(pMode: PD3DDisplayModeEx; pRotation: PD3DDisplayRotation): HResult; stdcall;
  4210. end;
  4211. {$ENDIF}
  4212. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DResource9);'}
  4213. {$EXTERNALSYM IDirect3DResource9}
  4214. IDirect3DResource9 = interface(IUnknown)
  4215. ['{05EEC05D-8F7D-4362-B999-D1BAF357C704}']
  4216. (*** IDirect3DResource9 methods ***)
  4217. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4218. function SetPrivateData(const refguid: TGUID; const pData: Pointer; SizeOfData, Flags: DWord): HResult; stdcall;
  4219. function GetPrivateData(const refguid: TGUID; pData: Pointer; out pSizeOfData: DWord): HResult; stdcall;
  4220. function FreePrivateData(const refguid: TGUID): HResult; stdcall;
  4221. function SetPriority(PriorityNew: DWord): DWord; stdcall;
  4222. function GetPriority: DWord; stdcall;
  4223. procedure PreLoad; stdcall;
  4224. function GetType: TD3DResourceType; stdcall;
  4225. end;
  4226. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVertexDeclaration9);'}
  4227. {$EXTERNALSYM IDirect3DVertexDeclaration9}
  4228. IDirect3DVertexDeclaration9 = interface(IUnknown)
  4229. ['{DD13C59C-36FA-4098-A8FB-C7ED39DC8546}']
  4230. (*** IDirect3DVertexDeclaration9 methods ***)
  4231. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4232. function GetDeclaration(pElement: PD3DVertexElement9; out pNumElements: LongWord): HResult; stdcall;
  4233. end;
  4234. {$EXTERNALSYM IDirect3DVertexDeclaration9Helper}
  4235. IDirect3DVertexDeclaration9Helper = class
  4236. (*** helper information ***)
  4237. CreationCallStack: PWideChar;
  4238. end;
  4239. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVertexShader9);'}
  4240. {$EXTERNALSYM IDirect3DVertexShader9}
  4241. IDirect3DVertexShader9 = interface(IUnknown)
  4242. ['{EFC5557E-6265-4613-8A94-43857889EB36}']
  4243. (*** IDirect3DVertexShader9 methods ***)
  4244. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4245. function GetFunction(pData: Pointer; out pSizeOfData: LongWord): HResult; stdcall;
  4246. end;
  4247. {$EXTERNALSYM IDirect3DVertexShader9Helper}
  4248. IDirect3DVertexShader9Helper = class
  4249. (*** helper information ***)
  4250. Version: DWORD;
  4251. CreationCallStack: PWideChar;
  4252. end;
  4253. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DPixelShader9);'}
  4254. {$EXTERNALSYM IDirect3DPixelShader9}
  4255. IDirect3DPixelShader9 = interface(IUnknown)
  4256. ['{6D3BDBDC-5B02-4415-B852-CE5E8BCCB289}']
  4257. (*** IDirect3DPixelShader9 methods ***)
  4258. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4259. function GetFunction(pData: Pointer; out pSizeOfData: LongWord): HResult; stdcall;
  4260. end;
  4261. {$EXTERNALSYM IDirect3DPixelShader9Helper}
  4262. IDirect3DPixelShader9Helper = class
  4263. (*** helper information ***)
  4264. Version: DWORD;
  4265. CreationCallStack: PWideChar;
  4266. end;
  4267. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DBaseTexture9);'}
  4268. {$EXTERNALSYM IDirect3DBaseTexture9}
  4269. IDirect3DBaseTexture9 = interface(IDirect3DResource9)
  4270. ['{580CA87E-1D3C-4d54-991D-B7D3E3C298CE}']
  4271. (*** IDirect3DBaseTexture9 methods ***)
  4272. function SetLOD(LODNew: DWord): DWord; stdcall;
  4273. function GetLOD: DWord; stdcall;
  4274. function GetLevelCount: DWord; stdcall;
  4275. function SetAutoGenFilterType(FilterType: TD3DTextureFilterType): HResult; stdcall;
  4276. function GetAutoGenFilterType: TD3DTextureFilterType; stdcall;
  4277. procedure GenerateMipSubLevels; stdcall;
  4278. end;
  4279. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DTexture9);'}
  4280. {$EXTERNALSYM IDirect3DTexture9}
  4281. IDirect3DTexture9 = interface(IDirect3DBaseTexture9)
  4282. ['{85C31227-3DE5-4f00-9B3A-F11AC38C18B5}']
  4283. (*** IDirect3DTexture9 methods ***)
  4284. function GetLevelDesc(Level: LongWord; out pDesc: TD3DSurfaceDesc): HResult; stdcall;
  4285. function GetSurfaceLevel(Level: LongWord; out ppSurfaceLevel: IDirect3DSurface9): HResult; stdcall;
  4286. function LockRect(Level: LongWord; out pLockedRect: TD3DLockedRect; pRect: PRect; Flags: DWord): HResult; stdcall;
  4287. function UnlockRect(Level: LongWord): HResult; stdcall;
  4288. function AddDirtyRect(pDirtyRect: PRect): HResult; stdcall;
  4289. end;
  4290. {$EXTERNALSYM IDirect3DTexture9Helper}
  4291. IDirect3DTexture9Helper = class
  4292. (*** helper information ***)
  4293. Name: PWideChar;
  4294. Width: LongWord;
  4295. Height: LongWord;
  4296. Levels: LongWord;
  4297. Usage: DWORD;
  4298. Format: TD3DFormat;
  4299. Pool: TD3DPool;
  4300. Priority: DWORD;
  4301. LOD: DWORD;
  4302. FilterType: TD3DTextureFilterType;
  4303. LockCount: LongWord;
  4304. CreationCallStack: PWideChar;
  4305. end;
  4306. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVolumeTexture9);'}
  4307. {$EXTERNALSYM IDirect3DVolumeTexture9}
  4308. IDirect3DVolumeTexture9 = interface(IDirect3DBaseTexture9)
  4309. ['{2518526C-E789-4111-A7B9-47EF328D13E6}']
  4310. (*** IDirect3DVolumeTexture9 methods ***)
  4311. function GetLevelDesc(Level: LongWord; out pDesc: TD3DVolumeDesc): HResult; stdcall;
  4312. function GetVolumeLevel(Level: LongWord; out ppVolumeLevel: IDirect3DVolume9): HResult; stdcall;
  4313. function LockBox(Level: LongWord; out pLockedVolume: TD3DLockedBox; pBox: PD3DBox; Flags: DWord): HResult; stdcall;
  4314. function UnlockBox(Level: LongWord): HResult; stdcall;
  4315. function AddDirtyBox(pDirtyBox: PD3DBox): HResult; stdcall;
  4316. end;
  4317. {$EXTERNALSYM IDirect3DVolumeTexture9Helper}
  4318. IDirect3DVolumeTexture9Helper = class
  4319. (*** helper information ***)
  4320. Name: PWideChar;
  4321. Width: LongWord;
  4322. Height: LongWord;
  4323. Depth: LongWord;
  4324. Levels: LongWord;
  4325. Usage: DWORD;
  4326. Format: TD3DFormat;
  4327. Pool: TD3DPool;
  4328. Priority: DWORD;
  4329. LOD: DWORD;
  4330. FilterType: TD3DTextureFilterType;
  4331. LockCount: LongWord;
  4332. CreationCallStack: PWideChar;
  4333. end;
  4334. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DCubeTexture9);'}
  4335. {$EXTERNALSYM IDirect3DCubeTexture9}
  4336. IDirect3DCubeTexture9 = interface(IDirect3DBaseTexture9)
  4337. ['{FFF32F81-D953-473a-9223-93D652ABA93F}']
  4338. (*** IDirect3DCubeTexture9 methods ***)
  4339. function GetLevelDesc(Level: LongWord; out pDesc: TD3DSurfaceDesc): HResult; stdcall;
  4340. function GetCubeMapSurface(FaceType: TD3DCubeMapFaces; Level: LongWord; out ppCubeMapSurface: IDirect3DSurface9): HResult; stdcall;
  4341. function LockRect(FaceType: TD3DCubeMapFaces; Level: LongWord; out pLockedRect: TD3DLockedRect; pRect: PRect; Flags: DWord): HResult; stdcall;
  4342. function UnlockRect(FaceType: TD3DCubeMapFaces; Level: LongWord): HResult; stdcall;
  4343. function AddDirtyRect(FaceType: TD3DCubeMapFaces; pDirtyRect: PRect): HResult; stdcall;
  4344. end;
  4345. {$EXTERNALSYM IDirect3DCubeTexture9Helper}
  4346. IDirect3DCubeTexture9Helper = class
  4347. (*** helper information ***)
  4348. Name: PWideChar;
  4349. Width: LongWord;
  4350. Height: LongWord;
  4351. Depth: LongWord;
  4352. Levels: LongWord;
  4353. Usage: DWORD;
  4354. Format: TD3DFormat;
  4355. Pool: TD3DPool;
  4356. Priority: DWORD;
  4357. LOD: DWORD;
  4358. FilterType: TD3DTextureFilterType;
  4359. LockCount: LongWord;
  4360. CreationCallStack: PWideChar;
  4361. end;
  4362. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVertexBuffer9);'}
  4363. {$EXTERNALSYM IDirect3DVertexBuffer9}
  4364. IDirect3DVertexBuffer9 = interface(IDirect3DResource9)
  4365. ['{B64BB1B5-FD70-4df6-BF91-19D0A12455E3}']
  4366. (*** IDirect3DVertexBuffer9 methods ***)
  4367. function Lock(OffsetToLock, SizeToLock: LongWord; out ppbData: Pointer; Flags: DWord): HResult; stdcall;
  4368. function Unlock: HResult; stdcall;
  4369. function GetDesc(out pDesc: TD3DVertexBufferDesc): HResult; stdcall;
  4370. end;
  4371. {$EXTERNALSYM IDirect3DVertexBuffer9Helper}
  4372. IDirect3DVertexBuffer9Helper = class
  4373. (*** helper information ***)
  4374. Name: PWideChar;
  4375. Length: LongWord;
  4376. Usage: DWORD;
  4377. FVF: DWORD;
  4378. Pool: TD3DPool;
  4379. Priority: DWORD;
  4380. LockCount: LongWord;
  4381. CreationCallStack: PWideChar;
  4382. end;
  4383. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DIndexBuffer9);'}
  4384. {$EXTERNALSYM IDirect3DIndexBuffer9}
  4385. IDirect3DIndexBuffer9 = interface(IDirect3DResource9)
  4386. ['{7C9DD65E-D3F7-4529-ACEE-785830ACDE35}']
  4387. (*** IDirect3DIndexBuffer9 methods ***)
  4388. function Lock(OffsetToLock, SizeToLock: DWord; out ppbData: Pointer; Flags: DWord): HResult; stdcall;
  4389. function Unlock: HResult; stdcall;
  4390. function GetDesc(out pDesc: TD3DIndexBufferDesc): HResult; stdcall;
  4391. end;
  4392. {$EXTERNALSYM IDirect3DIndexBuffer9Helper}
  4393. IDirect3DIndexBuffer9Helper = class
  4394. (*** helper information ***)
  4395. Name: PWideChar;
  4396. Length: LongWord;
  4397. Usage: DWORD;
  4398. Format: TD3DFormat;
  4399. Pool: TD3DPool;
  4400. Priority: DWORD;
  4401. LockCount: LongWord;
  4402. CreationCallStack: PWideChar;
  4403. end;
  4404. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DSurface9);'}
  4405. {$EXTERNALSYM IDirect3DSurface9}
  4406. IDirect3DSurface9 = interface(IDirect3DResource9)
  4407. ['{0CFBAF3A-9FF6-429a-99B3-A2796AF8B89B}']
  4408. (*** IDirect3DSurface9 methods ***)
  4409. function GetContainer(const riid: TGUID; out ppContainer{: Pointer}): HResult; stdcall;
  4410. function GetDesc(out pDesc: TD3DSurfaceDesc): HResult; stdcall;
  4411. function LockRect(out pLockedRect: TD3DLockedRect; pRect: PRect; Flags: DWord): HResult; stdcall;
  4412. function UnlockRect: HResult; stdcall;
  4413. function GetDC(out phdc: HDC): HResult; stdcall;
  4414. function ReleaseDC(hdc: HDC): HResult; stdcall;
  4415. end;
  4416. {$EXTERNALSYM IDirect3DSurface9Helper}
  4417. IDirect3DSurface9Helper = class
  4418. (*** helper information ***)
  4419. Name: PWideChar;
  4420. Width: LongWord;
  4421. Height: LongWord;
  4422. Usage: DWORD;
  4423. Format: TD3DFormat;
  4424. Pool: TD3DPool;
  4425. MultiSampleType: TD3DMultiSampleType;
  4426. MultiSampleQuality: DWORD;
  4427. Priority: DWORD;
  4428. LockCount: LongWord;
  4429. DCCount: LongWord;
  4430. CreationCallStack: PWideChar;
  4431. end;
  4432. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVolume9);'}
  4433. {$EXTERNALSYM IDirect3DVolume9}
  4434. IDirect3DVolume9 = interface (IUnknown)
  4435. ['{24F416E6-1F67-4aa7-B88E-D33F6F3128A1}']
  4436. (*** IDirect3DVolume9 methods ***)
  4437. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4438. function SetPrivateData(const refguid: TGUID; const pData; SizeOfData, Flags: DWord): HResult; stdcall;
  4439. function GetPrivateData(const refguid: TGUID; pData: Pointer; out pSizeOfData: DWord): HResult; stdcall;
  4440. function FreePrivateData(const refguid: TGUID): HResult; stdcall;
  4441. function GetContainer(const riid: TGUID; var ppContainer: Pointer): HResult; stdcall;
  4442. function GetDesc(out pDesc: TD3DVolumeDesc): HResult; stdcall;
  4443. function LockBox(out pLockedVolume: TD3DLockedBox; pBox: PD3DBox; Flags: DWord): HResult; stdcall;
  4444. function UnlockBox: HResult; stdcall;
  4445. end;
  4446. {$EXTERNALSYM IDirect3DVolume9Helper}
  4447. IDirect3DVolume9Helper = class
  4448. (*** helper information ***)
  4449. Name: PWideChar;
  4450. Width: LongWord;
  4451. Height: LongWord;
  4452. Depth: LongWord;
  4453. Usage: DWORD;
  4454. Format: TD3DFormat;
  4455. Pool: TD3DPool;
  4456. LockCount: LongWord;
  4457. CreationCallStack: PWideChar;
  4458. end;
  4459. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DQuery9);'}
  4460. {$EXTERNALSYM IDirect3DQuery9}
  4461. IDirect3DQuery9 = interface(IUnknown)
  4462. ['{d9771460-a695-4f26-bbd3-27b840b541cc}']
  4463. (*** IDirect3DQuery9 methods ***)
  4464. function GetDevice(out ppDevice: IDirect3DDevice9): HResult; stdcall;
  4465. function GetType: TD3DQueryType; stdcall;
  4466. function GetDataSize: DWORD; stdcall;
  4467. function Issue(dwIssueFlags: DWORD): HResult; stdcall;
  4468. function GetData(pData: Pointer; dwSize: DWORD; dwGetDataFlags: DWORD): HResult; stdcall;
  4469. end;
  4470. {$EXTERNALSYM IDirect3DQuery9Helper}
  4471. IDirect3DQuery9Helper = class
  4472. (*** helper information ***)
  4473. _Type: TD3DQueryType;
  4474. DataSize: DWORD;
  4475. CreationCallStack: PWideChar;
  4476. end;
  4477. (*
  4478. * Interface IID's
  4479. *)
  4480. type
  4481. IID_IDirect3D9 = IDirect3D9;
  4482. {$EXTERNALSYM IID_IDirect3D9}
  4483. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4484. IID_IDirect3D9Ex = IDirect3D9Ex;
  4485. {$EXTERNALSYM IID_IDirect3D9Ex}
  4486. {$ENDIF}
  4487. IID_IDirect3DDevice9 = IDirect3DDevice9;
  4488. {$EXTERNALSYM IID_IDirect3DDevice9}
  4489. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4490. IID_IDirect3DDevice9Ex = IDirect3DDevice9Ex;
  4491. {$EXTERNALSYM IID_IDirect3DDevice9Ex}
  4492. {$ENDIF}
  4493. IID_IDirect3DResource9 = IDirect3DResource9;
  4494. {$EXTERNALSYM IID_IDirect3DResource9}
  4495. IID_IDirect3DBaseTexture9 = IDirect3DBaseTexture9;
  4496. {$EXTERNALSYM IID_IDirect3DBaseTexture9}
  4497. IID_IDirect3DTexture9 = IDirect3DTexture9;
  4498. {$EXTERNALSYM IID_IDirect3DTexture9}
  4499. IID_IDirect3DCubeTexture9 = IDirect3DCubeTexture9;
  4500. {$EXTERNALSYM IID_IDirect3DCubeTexture9}
  4501. IID_IDirect3DVolumeTexture9 = IDirect3DVolumeTexture9;
  4502. {$EXTERNALSYM IID_IDirect3DVolumeTexture9}
  4503. IID_IDirect3DVertexBuffer9 = IDirect3DVertexBuffer9;
  4504. {$EXTERNALSYM IID_IDirect3DVertexBuffer9}
  4505. IID_IDirect3DIndexBuffer9 = IDirect3DIndexBuffer9;
  4506. {$EXTERNALSYM IID_IDirect3DIndexBuffer9}
  4507. IID_IDirect3DSurface9 = IDirect3DSurface9;
  4508. {$EXTERNALSYM IID_IDirect3DSurface9}
  4509. IID_IDirect3DVolume9 = IDirect3DVolume9;
  4510. {$EXTERNALSYM IID_IDirect3DVolume9}
  4511. IID_IDirect3DSwapChain9 = IDirect3DSwapChain9;
  4512. {$EXTERNALSYM IID_IDirect3DSwapChain9}
  4513. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4514. IID_IDirect3DSwapChain9Ex = IDirect3DSwapChain9Ex;
  4515. {$EXTERNALSYM IID_IDirect3DSwapChain9Ex}
  4516. {$ENDIF}
  4517. IID_IDirect3DVertexDeclaration9 = IDirect3DVertexDeclaration9;
  4518. {$EXTERNALSYM IID_IDirect3DVertexDeclaration9}
  4519. IID_IDirect3DVertexShader9 = IDirect3DVertexShader9;
  4520. {$EXTERNALSYM IID_IDirect3DVertexShader9}
  4521. IID_IDirect3DPixelShader9 = IDirect3DPixelShader9;
  4522. {$EXTERNALSYM IID_IDirect3DPixelShader9}
  4523. IID_IDirect3DStateBlock9 = IDirect3DStateBlock9;
  4524. {$EXTERNALSYM IID_IDirect3DStateBlock9}
  4525. IID_IDirect3DQuery9 = IDirect3DQuery9;
  4526. {$EXTERNALSYM IID_IDirect3DQuery9}
  4527. const
  4528. IID_HelperName : TGUID = '{E4A36723-FDFE-4b22-B146-3C04C07F4CC8}';
  4529. {$EXTERNALSYM IID_HelperName}
  4530. const
  4531. {****************************************************************************
  4532. * Flags for SetPrivateData method on all D3D9 interfaces
  4533. *
  4534. * The passed pointer is an IUnknown ptr. The SizeOfData argument to SetPrivateData
  4535. * must be set to sizeof(IUnknown*). Direct3D will call AddRef through this
  4536. * pointer and Release when the private data is destroyed. The data will be
  4537. * destroyed when another SetPrivateData with the same GUID is set, when
  4538. * FreePrivateData is called, or when the D3D9 object is freed.
  4539. ****************************************************************************}
  4540. D3DSPD_IUNKNOWN = $00000001;
  4541. {$EXTERNALSYM D3DSPD_IUNKNOWN}
  4542. (****************************************************************************
  4543. *
  4544. * Flags for IDirect3D9::CreateDevice's BehaviorFlags
  4545. *
  4546. ****************************************************************************)
  4547. D3DCREATE_FPU_PRESERVE = $00000002;
  4548. {$EXTERNALSYM D3DCREATE_FPU_PRESERVE}
  4549. D3DCREATE_MULTITHREADED = $00000004;
  4550. {$EXTERNALSYM D3DCREATE_MULTITHREADED}
  4551. D3DCREATE_PUREDEVICE = $00000010;
  4552. {$EXTERNALSYM D3DCREATE_PUREDEVICE}
  4553. D3DCREATE_SOFTWARE_VERTEXPROCESSING = $00000020;
  4554. {$EXTERNALSYM D3DCREATE_SOFTWARE_VERTEXPROCESSING}
  4555. D3DCREATE_HARDWARE_VERTEXPROCESSING = $00000040;
  4556. {$EXTERNALSYM D3DCREATE_HARDWARE_VERTEXPROCESSING}
  4557. D3DCREATE_MIXED_VERTEXPROCESSING = $00000080;
  4558. {$EXTERNALSYM D3DCREATE_MIXED_VERTEXPROCESSING}
  4559. D3DCREATE_DISABLE_DRIVER_MANAGEMENT = $00000100;
  4560. {$EXTERNALSYM D3DCREATE_DISABLE_DRIVER_MANAGEMENT}
  4561. D3DCREATE_ADAPTERGROUP_DEVICE = $00000200;
  4562. {$EXTERNALSYM D3DCREATE_ADAPTERGROUP_DEVICE}
  4563. D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX = $00000400;
  4564. {$EXTERNALSYM D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX}
  4565. // This flag causes the D3D runtime not to alter the focus
  4566. // window in any way. Use with caution- the burden of supporting
  4567. // focus management events (alt-tab, etc.) falls on the
  4568. // application, and appropriate responses (switching display
  4569. // mode, etc.) should be coded.
  4570. D3DCREATE_NOWINDOWCHANGES = $00000800;
  4571. {$EXTERNALSYM D3DCREATE_NOWINDOWCHANGES}
  4572. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4573. // Disable multithreading for software vertex processing
  4574. D3DCREATE_DISABLE_PSGP_THREADING = $00002000;
  4575. {$EXTERNALSYM D3DCREATE_DISABLE_PSGP_THREADING}
  4576. // This flag enables present statistics on device.
  4577. D3DCREATE_ENABLE_PRESENTSTATS = $00004000;
  4578. {$EXTERNALSYM D3DCREATE_ENABLE_PRESENTSTATS}
  4579. // This flag disables printscreen support in the runtime for this device
  4580. D3DCREATE_DISABLE_PRINTSCREEN = $00008000;
  4581. {$EXTERNALSYM D3DCREATE_DISABLE_PRINTSCREEN}
  4582. D3DCREATE_SCREENSAVER = $10000000;
  4583. {$EXTERNALSYM D3DCREATE_SCREENSAVER}
  4584. {$ENDIF}
  4585. (****************************************************************************
  4586. *
  4587. * Parameter for IDirect3D9::CreateDevice's Adapter argument
  4588. *
  4589. ****************************************************************************)
  4590. D3DADAPTER_DEFAULT = 0;
  4591. {$EXTERNALSYM D3DADAPTER_DEFAULT}
  4592. (****************************************************************************
  4593. *
  4594. * Flags for IDirect3D9::EnumAdapters
  4595. *
  4596. ****************************************************************************)
  4597. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4598. (*
  4599. * The D3DENUM_WHQL_LEVEL value has been retired for this and future versions.
  4600. * See the DirectX SDK for sample code on discovering driver signatures.
  4601. *)
  4602. (* NO_DRIVERVERSION will not fill out the DriverVersion field, nor will the
  4603. DriverVersion be incorporated into the DeviceIdentifier GUID. WINNT only *)
  4604. D3DENUM_NO_DRIVERVERSION = $00000004;
  4605. {$EXTERNALSYM D3DENUM_NO_DRIVERVERSION}
  4606. {$ELSE}
  4607. D3DENUM_WHQL_LEVEL = $00000002;
  4608. {$EXTERNALSYM D3DENUM_WHQL_LEVEL}
  4609. {$ENDIF}
  4610. (****************************************************************************
  4611. *
  4612. * Maximum number of back-buffers supported in DX9
  4613. *
  4614. ****************************************************************************)
  4615. D3DPRESENT_BACK_BUFFERS_MAX = 3;
  4616. {$EXTERNALSYM D3DPRESENT_BACK_BUFFERS_MAX}
  4617. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4618. (****************************************************************************
  4619. *
  4620. * Maximum number of back-buffers supported when apps use CreateDeviceEx
  4621. *
  4622. ****************************************************************************)
  4623. D3DPRESENT_BACK_BUFFERS_MAX_EX = 30;
  4624. {$EXTERNALSYM D3DPRESENT_BACK_BUFFERS_MAX_EX}
  4625. {$ENDIF}
  4626. (****************************************************************************
  4627. *
  4628. * Flags for IDirect3DDevice9::SetGammaRamp
  4629. *
  4630. ****************************************************************************)
  4631. D3DSGR_NO_CALIBRATION = $00000000;
  4632. {$EXTERNALSYM D3DSGR_NO_CALIBRATION}
  4633. D3DSGR_CALIBRATE = $00000001;
  4634. {$EXTERNALSYM D3DSGR_CALIBRATE}
  4635. (****************************************************************************
  4636. *
  4637. * Flags for IDirect3DDevice9::SetCursorPosition
  4638. *
  4639. ****************************************************************************)
  4640. D3DCURSOR_IMMEDIATE_UPDATE = $00000001;
  4641. {$EXTERNALSYM D3DCURSOR_IMMEDIATE_UPDATE}
  4642. (****************************************************************************
  4643. *
  4644. * Flags for IDirect3DSwapChain9::Present
  4645. *
  4646. ****************************************************************************)
  4647. D3DPRESENT_DONOTWAIT = $00000001;
  4648. {$EXTERNALSYM D3DPRESENT_DONOTWAIT}
  4649. D3DPRESENT_LINEAR_CONTENT = $00000002;
  4650. {$EXTERNALSYM D3DPRESENT_LINEAR_CONTENT}
  4651. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4652. D3DPRESENT_DONOTFLIP = $00000004;
  4653. {$EXTERNALSYM D3DPRESENT_DONOTFLIP}
  4654. D3DPRESENT_FLIPRESTART = $00000008;
  4655. {$EXTERNALSYM D3DPRESENT_FLIPRESTART}
  4656. {$ENDIF}
  4657. (****************************************************************************
  4658. *
  4659. * Flags for DrawPrimitive/DrawIndexedPrimitive
  4660. * Also valid for Begin/BeginIndexed
  4661. * Also valid for VertexBuffer::CreateVertexBuffer
  4662. ****************************************************************************)
  4663. (*
  4664. * DirectDraw error codes
  4665. *)
  4666. _FACD3D = $876;
  4667. {$EXTERNALSYM _FACD3D}
  4668. //#define MAKE_D3DHRESULT( code ) MAKE_HRESULT( 1, _FACD3D, code )
  4669. function MAKE_D3DHRESULT(Code: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  4670. {$EXTERNALSYM MAKE_D3DHRESULT}
  4671. //#define MAKE_D3DSTATUS( code ) MAKE_HRESULT( 0, _FACD3D, code )
  4672. function MAKE_D3DSTATUS(Code: DWord): DWord;{$IFDEF SUPPORTS_INLINE} inline;{$ENDIF}
  4673. {$EXTERNALSYM MAKE_D3DSTATUS}
  4674. const
  4675. MAKE_D3DHRESULT_R = (1 shl 31) or (_FACD3D shl 16);
  4676. MAKE_D3DSTATUS_R = (0 shl 31) or (_FACD3D shl 16);
  4677. (*
  4678. * Direct3D Errors
  4679. *)
  4680. D3D_OK = S_OK;
  4681. {$EXTERNALSYM D3D_OK}
  4682. D3DERR_WRONGTEXTUREFORMAT = HResult(MAKE_D3DHRESULT_R or 2072);
  4683. {$EXTERNALSYM D3DERR_WRONGTEXTUREFORMAT}
  4684. D3DERR_UNSUPPORTEDCOLOROPERATION = HResult(MAKE_D3DHRESULT_R or 2073);
  4685. {$EXTERNALSYM D3DERR_UNSUPPORTEDCOLOROPERATION}
  4686. D3DERR_UNSUPPORTEDCOLORARG = HResult(MAKE_D3DHRESULT_R or 2074);
  4687. {$EXTERNALSYM D3DERR_UNSUPPORTEDCOLORARG}
  4688. D3DERR_UNSUPPORTEDALPHAOPERATION = HResult(MAKE_D3DHRESULT_R or 2075);
  4689. {$EXTERNALSYM D3DERR_UNSUPPORTEDALPHAOPERATION}
  4690. D3DERR_UNSUPPORTEDALPHAARG = HResult(MAKE_D3DHRESULT_R or 2076);
  4691. {$EXTERNALSYM D3DERR_UNSUPPORTEDALPHAARG}
  4692. D3DERR_TOOMANYOPERATIONS = HResult(MAKE_D3DHRESULT_R or 2077);
  4693. {$EXTERNALSYM D3DERR_TOOMANYOPERATIONS}
  4694. D3DERR_CONFLICTINGTEXTUREFILTER = HResult(MAKE_D3DHRESULT_R or 2078);
  4695. {$EXTERNALSYM D3DERR_CONFLICTINGTEXTUREFILTER}
  4696. D3DERR_UNSUPPORTEDFACTORVALUE = HResult(MAKE_D3DHRESULT_R or 2079);
  4697. {$EXTERNALSYM D3DERR_UNSUPPORTEDFACTORVALUE}
  4698. D3DERR_CONFLICTINGRENDERSTATE = HResult(MAKE_D3DHRESULT_R or 2081);
  4699. {$EXTERNALSYM D3DERR_CONFLICTINGRENDERSTATE}
  4700. D3DERR_UNSUPPORTEDTEXTUREFILTER = HResult(MAKE_D3DHRESULT_R or 2082);
  4701. {$EXTERNALSYM D3DERR_UNSUPPORTEDTEXTUREFILTER}
  4702. D3DERR_CONFLICTINGTEXTUREPALETTE = HResult(MAKE_D3DHRESULT_R or 2086);
  4703. {$EXTERNALSYM D3DERR_CONFLICTINGTEXTUREPALETTE}
  4704. D3DERR_DRIVERINTERNALERROR = HResult(MAKE_D3DHRESULT_R or 2087);
  4705. {$EXTERNALSYM D3DERR_DRIVERINTERNALERROR}
  4706. D3DERR_NOTFOUND = HResult(MAKE_D3DHRESULT_R or 2150);
  4707. {$EXTERNALSYM D3DERR_NOTFOUND}
  4708. D3DERR_MOREDATA = HResult(MAKE_D3DHRESULT_R or 2151);
  4709. {$EXTERNALSYM D3DERR_MOREDATA}
  4710. D3DERR_DEVICELOST = HResult(MAKE_D3DHRESULT_R or 2152);
  4711. {$EXTERNALSYM D3DERR_DEVICELOST}
  4712. D3DERR_DEVICENOTRESET = HResult(MAKE_D3DHRESULT_R or 2153);
  4713. {$EXTERNALSYM D3DERR_DEVICENOTRESET}
  4714. D3DERR_NOTAVAILABLE = HResult(MAKE_D3DHRESULT_R or 2154);
  4715. {$EXTERNALSYM D3DERR_NOTAVAILABLE}
  4716. D3DERR_OUTOFVIDEOMEMORY = HResult(MAKE_D3DHRESULT_R or 380);
  4717. {$EXTERNALSYM D3DERR_OUTOFVIDEOMEMORY}
  4718. D3DERR_INVALIDDEVICE = HResult(MAKE_D3DHRESULT_R or 2155);
  4719. {$EXTERNALSYM D3DERR_INVALIDDEVICE}
  4720. D3DERR_INVALIDCALL = HResult(MAKE_D3DHRESULT_R or 2156);
  4721. {$EXTERNALSYM D3DERR_INVALIDCALL}
  4722. D3DERR_DRIVERINVALIDCALL = HResult(MAKE_D3DHRESULT_R or 2157);
  4723. {$EXTERNALSYM D3DERR_DRIVERINVALIDCALL}
  4724. D3DERR_WASSTILLDRAWING = HResult(MAKE_D3DHRESULT_R or 540);
  4725. {$EXTERNALSYM D3DERR_WASSTILLDRAWING}
  4726. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4727. D3DERR_DEVICEREMOVED = HResult(MAKE_D3DHRESULT_R or 2160);
  4728. {$EXTERNALSYM D3DERR_DEVICEREMOVED}
  4729. {$ENDIF}
  4730. D3DOK_NOAUTOGEN = HResult(MAKE_D3DSTATUS_R or 2159);
  4731. {$EXTERNALSYM D3DOK_NOAUTOGEN}
  4732. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4733. S_NOT_RESIDENT = HResult(MAKE_D3DSTATUS_R or 2165);
  4734. {$EXTERNALSYM S_NOT_RESIDENT}
  4735. S_RESIDENT_IN_SHARED_MEMORY = HResult(MAKE_D3DSTATUS_R or 2166);
  4736. {$EXTERNALSYM S_RESIDENT_IN_SHARED_MEMORY}
  4737. S_PRESENT_MODE_CHANGED = HResult(MAKE_D3DSTATUS_R or 2167);
  4738. {$EXTERNALSYM S_PRESENT_MODE_CHANGED}
  4739. S_PRESENT_OCCLUDED = HResult(MAKE_D3DSTATUS_R or 2168);
  4740. {$EXTERNALSYM S_PRESENT_OCCLUDED}
  4741. D3DERR_DEVICEHUNG = HResult(MAKE_D3DHRESULT_R or 2164);
  4742. {$EXTERNALSYM D3DERR_DEVICEHUNG}
  4743. {$ENDIF}
  4744. (*
  4745. * DLL Function for creating a Direct3D9 object. This object supports
  4746. * enumeration and allows the creation of Direct3DDevice9 objects.
  4747. * Pass the value of the constant D3D_SDK_VERSION to this function, so
  4748. * that the run-time can validate that your application was compiled
  4749. * against the right headers.
  4750. *)
  4751. function Direct3D9Loaded: Boolean;
  4752. function LoadDirect3D9: Boolean;
  4753. function UnLoadDirect3D9: Boolean;
  4754. const
  4755. Direct3D9dll = 'd3d9.dll';
  4756. // Due to the way Object Pascal handles functions resulting in 'native' interface
  4757. // pointer we should declare result not as interface but as usial pointer
  4758. {$IFDEF DIRECT3D9_DYNAMIC_LINK}
  4759. type
  4760. TDirect3DCreate9 = function (SDKVersion: LongWord): Pointer; stdcall;
  4761. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4762. TDirect3DCreate9Ex = function (SDKVersion: LongWord; out d3d9ex: IDirect3D9Ex): HRESULT; stdcall;
  4763. {$ENDIF}
  4764. var
  4765. _Direct3DCreate9: TDirect3DCreate9 = nil;
  4766. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4767. Direct3DCreate9Ex: TDirect3DCreate9Ex = nil;
  4768. {$ENDIF}
  4769. {$ELSE}
  4770. function _Direct3DCreate9(SDKVersion: LongWord): Pointer; stdcall;
  4771. {$ENDIF}
  4772. function Direct3DCreate9(SDKVersion: LongWord): IDirect3D9; stdcall;
  4773. {$EXTERNALSYM Direct3DCreate9}
  4774. {$IFNDEF DIRECT3D9_DYNAMIC_LINK}
  4775. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4776. function Direct3DCreate9Ex(SDKVersion: LongWord; out d3d9ex: IDirect3D9Ex): HRESULT; stdcall;
  4777. {$EXTERNALSYM Direct3DCreate9Ex}
  4778. {$ENDIF}
  4779. {$ENDIF}
  4780. (*
  4781. * Stubs for graphics profiling.
  4782. *)
  4783. function D3DPERF_BeginEvent(col: TD3DColor; wszName: PWideChar): Integer; stdcall; external Direct3D9dll;
  4784. {$EXTERNALSYM D3DPERF_BeginEvent}
  4785. function D3DPERF_EndEvent: Integer; stdcall; external Direct3D9dll;
  4786. {$EXTERNALSYM D3DPERF_EndEvent}
  4787. procedure D3DPERF_SetMarker(col: TD3DColor; wszName: PWideChar); stdcall; external Direct3D9dll;
  4788. {$EXTERNALSYM D3DPERF_SetMarker}
  4789. procedure D3DPERF_SetRegion(col: TD3DColor; wszName: PWideChar); stdcall; external Direct3D9dll;
  4790. {$EXTERNALSYM D3DPERF_SetRegion}
  4791. function D3DPERF_QueryRepeatFrame: BOOL; stdcall; external Direct3D9dll;
  4792. {$EXTERNALSYM D3DPERF_QueryRepeatFrame}
  4793. procedure D3DPERF_SetOptions(dwOptions: DWORD); stdcall; external Direct3D9dll;
  4794. {$EXTERNALSYM D3DPERF_SetOptions}
  4795. function D3DPERF_GetStatus: DWORD; stdcall; external Direct3D9dll;
  4796. {$EXTERNALSYM D3DPERF_GetStatus}
  4797. //********************************************************************
  4798. // Introduced types for compatibility with non-Borland compliant translation
  4799. // by Ampaze (Tim Baumgarten) from http://www.crazyentertainment.net
  4800. type
  4801. PD3DAdapter_Identifier9 = PD3DAdapterIdentifier9;
  4802. PD3DDevice_Creation_Parameters = PD3DDeviceCreationParameters;
  4803. PD3DDevInfo_D3DVertexStats = PD3DDevInfoD3DVertexStats;
  4804. PD3DDevInfo_ResourceManager = PD3DDevInfoResourceManager;
  4805. PD3DDevInfo_VCache = PD3DDevInfoVCache;
  4806. PD3DIndexBuffer_Desc = PD3DIndexBufferDesc;
  4807. PD3DLocked_Box = PD3DLockedBox;
  4808. PD3DLocked_Rect = PD3DLockedRect;
  4809. PD3DPresent_Parameters = PD3DPresentParameters;
  4810. PD3DRaster_Status = PD3DRasterStatus;
  4811. PD3DRectPatch_Info = PD3DRectPatchInfo;
  4812. PD3DSurface_Desc = PD3DSurfaceDesc;
  4813. PD3DTriPatch_Info = PD3DTriPatchInfo;
  4814. PD3DVertexBuffer_Desc = PD3DVertexBufferDesc;
  4815. PD3DVolume_Desc = PD3DVolumeDesc;
  4816. TD3DAdapter_Identifier9 = TD3DAdapterIdentifier9;
  4817. TD3DBackBuffer_Type = TD3DBackBufferType;
  4818. TD3DCubeMap_Faces = TD3DCubeMapFaces;
  4819. TD3DDevice_Creation_Parameters = TD3DDeviceCreationParameters;
  4820. TD3DDevInfo_D3DVertexStats = TD3DDevInfoD3DVertexStats;
  4821. TD3DDevInfo_ResourceManager = TD3DDevInfoResourceManager;
  4822. TD3DDevInfo_VCache = TD3DDevInfoVCache;
  4823. TD3DIndexBuffer_Desc = TD3DIndexBufferDesc;
  4824. TD3DLocked_Box = TD3DLockedBox;
  4825. TD3DLocked_Rect = TD3DLockedRect;
  4826. TD3DMultiSample_Type = TD3DMultiSampleType;
  4827. TD3DPresent_Parameters = TD3DPresentParameters;
  4828. TD3DRaster_Status = TD3DRasterStatus;
  4829. TD3DRectPatch_Info = TD3DRectPatchInfo;
  4830. TD3DSampler_Texture_Type = TD3DSamplerTextureType;
  4831. TD3DShader_AddressMode_Type = TD3DShaderAddressModeType;
  4832. TD3DShader_Comparison = TD3DShaderComparison;
  4833. TD3DShader_Instruction_Opcode_Type = TD3DShaderInstructionOpcodeType;
  4834. TD3DShader_MiscType_Offsets = TD3DShaderMiscTypeOffsets;
  4835. TD3DShader_Param_Register_Type = TD3DShaderParamRegisterType;
  4836. TD3DShader_Param_SRCMod_Type = TD3DShaderParamSRCModType;
  4837. TD3DSurface_Desc = TD3DSurfaceDesc;
  4838. TD3DTriPatch_Info = TD3DTriPatchInfo;
  4839. TD3DVertexBuffer_Desc = TD3DVertexBufferDesc;
  4840. TD3DVolume_Desc = TD3DVolumeDesc;
  4841. TD3DVS_AddressMode_Type = TD3DVSAddressModeType;
  4842. TD3DVS_RastOut_Offsets = TD3DVSRastOutOffsets;
  4843. implementation
  4844. (*==========================================================================;
  4845. * File: d3d9types.h
  4846. * Content: Direct3D capabilities include file
  4847. ***************************************************************************)
  4848. // #define D3DCOLOR_ARGB(a,r,g,b) \
  4849. // ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
  4850. function D3DCOLOR_ARGB(a,r,g,b: DWord): TD3DColor;
  4851. begin
  4852. Result := (a shl 24) or (r shl 16) or (g shl 8) or b;
  4853. end;
  4854. // #define D3DCOLOR_RGBA(r,g,b,a) D3DCOLOR_ARGB(a,r,g,b)
  4855. function D3DCOLOR_RGBA(r,g,b,a: DWord): TD3DColor;
  4856. begin
  4857. Result := (a shl 24) or (r shl 16) or (g shl 8) or b;
  4858. end;
  4859. // #define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b)
  4860. function D3DCOLOR_XRGB(r,g,b: DWord): TD3DColor;
  4861. begin
  4862. Result := DWORD($FF shl 24) or (r shl 16) or (g shl 8) or b;
  4863. end;
  4864. // #define D3DCOLOR_XYUV(y,u,v) D3DCOLOR_ARGB(0xff,y,u,v)
  4865. function D3DCOLOR_XYUV(y,u,v: DWord): TD3DColor;
  4866. begin
  4867. Result := DWORD($FF shl 24) or (y shl 16) or (u shl 8) or v;
  4868. end;
  4869. // #define D3DCOLOR_AYUV(a,y,u,v) D3DCOLOR_ARGB(a,y,u,v)
  4870. function D3DCOLOR_AYUV(a,y,u,v: DWord): TD3DColor;
  4871. begin
  4872. Result := (a shl 24) or (y shl 16) or (u shl 8) or v;
  4873. end;
  4874. // #define D3DCOLOR_COLORVALUE(r,g,b,a) \
  4875. // D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
  4876. function D3DCOLOR_COLORVALUE(r,g,b,a: Single): TD3DColor;
  4877. begin
  4878. Result := (round(a * 255) shl 24) or
  4879. (round(r * 255) shl 16) or
  4880. (round(g * 255) shl 8) or
  4881. (round(b * 255));
  4882. end;
  4883. // #define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
  4884. function D3DTS_WORLDMATRIX(index: Byte): TD3DTransformStateType;
  4885. begin
  4886. Result:= TD3DTransformStateType(index + 256);
  4887. end;
  4888. //#define D3DPS_VERSION(_Major,_Minor) (0xFFFF0000|((_Major)<<8)|(_Minor))
  4889. function D3DPS_VERSION(_Major, _Minor : Cardinal) : Cardinal;
  4890. begin
  4891. Result:= $FFFF0000 or (_Major shl 8 ) or _Minor;
  4892. end;
  4893. //#define D3DVS_VERSION(_Major,_Minor) (0xFFFE0000|((_Major)<<8)|(_Minor))
  4894. function D3DVS_VERSION(_Major, _Minor : Cardinal) : Cardinal;
  4895. begin
  4896. Result:= $FFFE0000 or (_Major shl 8 ) or _Minor;
  4897. end;
  4898. //#define D3DSHADER_VERSION_MAJOR(_Version) (((_Version)>>8)&0xFF)
  4899. function D3DSHADER_VERSION_MAJOR(_Version : Cardinal) : Cardinal;
  4900. begin
  4901. Result:= (_Version shr 8 ) and $FF;
  4902. end;
  4903. //#define D3DSHADER_VERSION_MINOR(_Version) (((_Version)>>0)&0xFF)
  4904. function D3DSHADER_VERSION_MINOR(_Version : Cardinal) : Cardinal;
  4905. begin
  4906. Result:= (_Version shr 0) and $FF;
  4907. end;
  4908. //#define D3DSHADER_COMMENT(_DWordSize) \
  4909. // ((((_DWordSize)<<D3DSI_COMMENTSIZE_SHIFT)&D3DSI_COMMENTSIZE_MASK)|D3DSIO_COMMENT)
  4910. function D3DSHADER_COMMENT(_DWordSize: DWord) : DWord;
  4911. begin
  4912. Result:= ((_DWordSize shl D3DSI_COMMENTSIZE_SHIFT) and D3DSI_COMMENTSIZE_MASK) or D3DSIO_COMMENT;
  4913. end;
  4914. //#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
  4915. function D3DFVF_TEXCOORDSIZE3(CoordIndex: DWord): DWord;
  4916. begin
  4917. Result:= D3DFVF_TEXTUREFORMAT3 shl (CoordIndex * 2 + 16)
  4918. end;
  4919. //#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
  4920. function D3DFVF_TEXCOORDSIZE2(CoordIndex: DWord): DWord;
  4921. begin
  4922. Result:= D3DFVF_TEXTUREFORMAT2;
  4923. end;
  4924. //#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
  4925. function D3DFVF_TEXCOORDSIZE4(CoordIndex: DWord): DWord;
  4926. begin
  4927. Result:= D3DFVF_TEXTUREFORMAT4 shl (CoordIndex * 2 + 16)
  4928. end;
  4929. //#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
  4930. function D3DFVF_TEXCOORDSIZE1(CoordIndex: DWord): DWord;
  4931. begin
  4932. Result:= D3DFVF_TEXTUREFORMAT1 shl (CoordIndex * 2 + 16)
  4933. end;
  4934. // #define MAKEFOURCC(ch0, ch1, ch2, ch3) \
  4935. // ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
  4936. // ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
  4937. function MAKEFOURCC(ch0, ch1, ch2, ch3: AnsiChar): DWord;
  4938. begin
  4939. Result:= Byte(ch0) or (Byte(ch1) shl 8) or (Byte(ch2) shl 16) or (Byte(ch3) shl 24 );
  4940. end;
  4941. (*==========================================================================;
  4942. * File: d3d9.h
  4943. * Content: Direct3D include file
  4944. ****************************************************************************)
  4945. //#define MAKE_D3DHRESULT( code ) MAKE_HRESULT( 1, _FACD3D, code )
  4946. function MAKE_D3DHRESULT(Code: DWord): DWord;
  4947. begin
  4948. Result:= DWord((1 shl 31) or (_FACD3D shl 16)) or Code;
  4949. end;
  4950. //#define MAKE_D3DSTATUS( code ) MAKE_HRESULT( 0, _FACD3D, code )
  4951. function MAKE_D3DSTATUS(Code: DWord): DWord;
  4952. begin
  4953. Result:= DWord((0 shl 31) or (_FACD3D shl 16)) or Code;
  4954. end;
  4955. {$IFDEF DIRECT3D9_DYNAMIC_LINK}
  4956. var
  4957. Direct3D9Lib: THandle = 0;
  4958. function Direct3D9Loaded: Boolean;
  4959. begin
  4960. Result:= Direct3D9Lib <> 0;
  4961. end;
  4962. function UnLoadDirect3D9: Boolean;
  4963. begin
  4964. Result:= True;
  4965. if Direct3D9Loaded then
  4966. begin
  4967. Result:= FreeLibrary(Direct3D9Lib);
  4968. _Direct3DCreate9:= nil;
  4969. Direct3D9Lib:= 0;
  4970. end;
  4971. end;
  4972. function LoadDirect3D9: Boolean;
  4973. const
  4974. ProcName = 'Direct3DCreate9';
  4975. ProcNameEx = 'Direct3DCreate9Ex';
  4976. begin
  4977. Result:= Direct3D9Loaded;
  4978. if (not Result) then
  4979. begin
  4980. Direct3D9Lib:= LoadLibrary(Direct3D9dll);
  4981. if Direct3D9Loaded then
  4982. begin
  4983. _Direct3DCreate9:= GetProcAddress(Direct3D9Lib, ProcName);
  4984. Result:= Assigned(_Direct3DCreate9);
  4985. if not Result then UnLoadDirect3D9;
  4986. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  4987. Direct3DCreate9Ex:= GetProcAddress(Direct3D9Lib, ProcNameEx);
  4988. {$ENDIF}
  4989. end;
  4990. end;
  4991. end;
  4992. {$ELSE}
  4993. function Direct3D9Loaded: Boolean;
  4994. begin // Stub function for static linking
  4995. Result:= True;
  4996. end;
  4997. function UnLoadDirect3D9: Boolean;
  4998. begin // Stub function for static linking
  4999. Result:= True; // should emulate "normal" behaviour
  5000. end;
  5001. function LoadDirect3D9: Boolean;
  5002. begin // Stub function for static linking
  5003. Result:= True;
  5004. end;
  5005. function _Direct3DCreate9(SDKVersion: LongWord): Pointer; external Direct3D9dll name 'Direct3DCreate9';
  5006. {$IFDEF DIRECT3D_VERSION_9_VISTA}
  5007. function Direct3DCreate9Ex(SDKVersion: LongWord; out d3d9ex: IDirect3D9Ex): HRESULT; stdcall; external Direct3D9dll;
  5008. {$ENDIF}
  5009. {$ENDIF}
  5010. function Direct3DCreate9(SDKVersion: LongWord): IDirect3D9; stdcall;
  5011. begin
  5012. {$IFDEF DIRECT3D9_DYNAMIC_LINK}
  5013. {$IFDEF DIRECT3D9_DYNAMIC_LINK_EXPLICIT}
  5014. LoadDirect3D9;
  5015. {$ENDIF}
  5016. {$ENDIF}
  5017. Result:= IDirect3D9(_Direct3DCreate9(SDKVersion));
  5018. if Assigned(Result) then Result._Release; // Delphi autoincrement reference count
  5019. end;
  5020. {$IFDEF DIRECT3D9_DYNAMIC_LINK}
  5021. initialization
  5022. {$IFNDEF DIRECT3D9_DYNAMIC_LINK_EXPLICIT}
  5023. LoadDirect3D9;
  5024. {$ENDIF}
  5025. finalization
  5026. UnLoadDirect3D9;
  5027. {$ENDIF}
  5028. end.